/* Codebreaker by LabNivo · v1.0 */
:root{--cb-ink:#1d3038;--cb-soft:#627179;--cb-line:#dfe5e5;--cb-accent:#2d7267;--cb-bg:#f7f8f5}
*{box-sizing:border-box}
body.codebreaker{margin:0;background:var(--cb-bg);color:var(--cb-ink);font-family:Inter,"DM Sans",system-ui,-apple-system,sans-serif}
.cb-page{width:min(1060px,calc(100% - 36px));margin:0 auto;padding:28px 0 88px}
.cb-top{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:55px}
.cb-top a{font-size:13px;color:#526368;text-decoration:none;font-weight:650}
.cb-top a:hover{text-decoration:underline}
.cb-language{border:1px solid var(--cb-line);padding:9px 13px;border-radius:99px}
.cb-intro{margin:0 0 34px;max-width:790px}
.cb-kicker{font-weight:800;letter-spacing:.19em;color:#50746e;font-size:10px;text-transform:uppercase;margin:0 0 15px}
.cb-intro h1{font-size:clamp(49px,7vw,88px);font-weight:750;letter-spacing:-.068em;line-height:.96;margin:0}
.cb-intro p:last-child{font-size:clamp(16px,2vw,20px);color:var(--cb-soft);line-height:1.6;margin:20px 0 0;max-width:630px}
.cb-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,.68fr);gap:32px;align-items:start}
.cb-panel,.cb-aside{background:white;border:1px solid #e6ebea;border-radius:20px;padding:clamp(20px,3vw,34px);box-shadow:0 15px 55px rgba(35,53,57,.035)}
.cb-panel h2,.cb-aside h2{font-size:22px;letter-spacing:-.045em;margin:0 0 12px}
.cb-panel p,.cb-aside p{color:#617078;line-height:1.6}
.cb-picker{margin:0 0 22px}
.cb-picker label{display:block;font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;margin:0 0 10px}
.cb-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.cb-options.levels{grid-template-columns:repeat(3,minmax(0,1fr))}
.cb-choice{border:1px solid var(--cb-line);border-radius:12px;background:#fbfcfa;color:#34474f;min-height:54px;padding:9px 6px;font:700 14px/1.3 Inter,system-ui,sans-serif;cursor:pointer}
.cb-choice[data-active="true"]{background:#e7f1ec;border-color:#438d75;box-shadow:inset 0 0 0 1px #438d75;color:#195e4d}
.cb-choice small{display:block;font-size:11px;opacity:.72;font-weight:500;margin-top:4px}
.cb-primary{background:#1c5247;color:white;border:1px solid #1c5247;border-radius:12px;font:700 14px inherit;min-height:50px;padding:12px 22px;cursor:pointer;transition:transform .15s,background .15s}
.cb-primary:hover:not(:disabled){background:#28695b;transform:translateY(-1px)}
.cb-primary:disabled,.cb-choice:disabled,.cb-digit:disabled{opacity:.48;cursor:not-allowed}
.cb-secondary{border:1px solid var(--cb-line);background:white;color:#31514f;border-radius:11px;font-weight:700;padding:11px 16px;min-height:44px;cursor:pointer}
.cb-start{width:100%;margin-top:6px}
.cb-disclaimer{font-size:12px;color:#7a8789!important;margin:14px 0 0}
.cb-game-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}
.cb-game-head p{font-size:11px;text-transform:uppercase;letter-spacing:.12em;font-weight:800;margin:0 0 6px;color:#69807c}
.cb-game-head h2{margin:0}
.cb-counter{font-size:12px;background:#f1f5f1;border:1px solid #e2e9e1;padding:9px;border-radius:9px;white-space:nowrap;font-weight:800}
.cb-secret{display:flex;justify-content:center;gap:9px;margin:18px 0 24px}
.cb-secret span{width:clamp(40px,12vw,57px);height:clamp(51px,13vw,65px);display:grid;place-items:center;border:1px solid #dbe6e1;border-bottom:3px solid #abc0b4;background:linear-gradient(180deg,#f3f8f3,#e9f0e8);border-radius:12px;font-size:29px;font-weight:800;color:#316b5e}
.cb-secret.is-revealed span{background:#edf7ef;color:#215b4d}
.cb-history{display:grid;gap:9px;margin-bottom:26px}
.cb-guess-row{border:1px solid var(--cb-line);border-radius:12px;padding:11px;display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fbfcfb}
.cb-guess-row .cb-number{font-size:11px;color:#778484;width:16px;flex:none}
.cb-guess-row .cb-values{letter-spacing:.15em;font:700 clamp(17px,3vw,24px) ui-monospace,SFMono-Regular,monospace}
.cb-result-dots{display:flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:92px;font-size:11px;color:#45565a}
.cb-result-dots b{font-weight:700}
.cb-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#378d72;margin-right:5px}
.cb-dot.misplaced{background:#d5a448}
.cb-editor{border-top:1px solid var(--cb-line);padding-top:22px}
.cb-editor label{display:block;text-align:center;font-size:13px;color:#50636b;margin-bottom:12px}
.cb-code-input{display:block;margin:auto;width:min(290px,100%);height:70px;border:1.5px solid #b1c9bf;border-radius:12px;background:#fafffc;color:#1d5449;font:800 33px ui-monospace,SFMono-Regular,monospace;letter-spacing:.25em;padding:0 12px 0 20px;text-align:center;outline-offset:3px}
.cb-code-input:focus{outline:2px solid #478f74}
.cb-keypad{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:18px auto 12px;max-width:335px}
.cb-digit{min-height:49px;background:#f4f7f4;color:#264c43;border:1px solid #dbe8df;border-radius:10px;font-size:19px;font-weight:750;cursor:pointer}
.cb-digit:active{transform:scale(.96)}
.cb-submit{width:100%}
.cb-feedback{min-height:26px;font-size:13px;margin:12px 0 0;text-align:center}
.cb-feedback[data-error="true"]{color:#ae4a35}
.cb-finish{margin:10px 0 0;padding:18px;background:#eaf5ee;border-radius:15px;text-align:center}
.cb-finish h3{font-size:24px;letter-spacing:-.04em;margin:0 0 8px}
.cb-finish p{margin:0 0 18px}
.cb-finish-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.cb-aside h2{font-size:20px}
.cb-aside ol{padding-left:21px;margin:12px 0 20px;color:#52626a;line-height:1.75;font-size:14px}
.cb-legend{border-top:1px solid var(--cb-line);padding-top:17px}
.cb-legend p{margin:8px 0;font-size:13px}
.cb-legend b{color:#263c3f}
.cb-aside .cb-stat{font-size:13px;border-radius:12px;background:#f4f7f5;padding:13px;margin-top:18px}
.cb-alert{padding:14px;border:1px solid #e7c3b9;background:#fff7f2;color:#874d3d;border-radius:10px;margin-bottom:15px;font-size:13px}
.cb-footer{display:flex;justify-content:space-between;gap:15px;color:#798488;border-top:1px solid #e1e7e4;margin-top:50px;padding-top:15px;font-size:11px}
[hidden]{display:none!important}
button:focus-visible,a:focus-visible{outline:3px solid #ca9b51;outline-offset:3px}
@media(max-width:780px){.cb-layout{grid-template-columns:1fr;gap:17px}.cb-top{margin-bottom:35px}.cb-intro{margin-bottom:25px}.cb-panel,.cb-aside{padding:22px}.cb-page{padding-bottom:42px}}
@media(max-width:430px){.cb-page{width:calc(100% - 28px)}.cb-panel,.cb-aside{padding:17px}.cb-intro h1{font-size:49px}.cb-guess-row{padding:9px}.cb-result-dots{font-size:10px;min-width:82px}.cb-secret{gap:5px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}


/* LabNivo Codebreaker v1.1 · premium layout & compact mobile game desk */
body.codebreaker{background:#f7f7f2;color:#20372f}
.codebreaker .cb-page{width:min(1100px,calc(100% - 38px));padding:22px 0 76px}
.codebreaker .cb-top{margin-bottom:20px}
.codebreaker .cb-top a{font-size:13px;letter-spacing:.01em}
.codebreaker .cb-intro{max-width:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.77fr);gap:0;margin:0 0 22px;min-height:330px;border:1px solid #e3e7dd;border-radius:24px;overflow:hidden;background:linear-gradient(135deg,#fffefb,#f0f2e8);box-shadow:0 22px 65px rgba(34,55,44,.05)}
.cb-hero-copy{padding:clamp(24px,4vw,56px);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0}
.codebreaker .cb-intro h1{font-size:clamp(43px,5.7vw,74px);margin-bottom:0}
.codebreaker .cb-intro p:last-of-type{margin:16px 0 0;font-size:17px;line-height:1.5;color:#51635a}
.cb-hero-details{display:flex;flex-wrap:wrap;gap:8px;margin-top:23px}
.cb-hero-details span{font-size:11px;letter-spacing:.055em;border:1px solid #d6e1d7;padding:8px 11px;border-radius:30px;background:#ffffffa6;color:#4b6c5f;font-weight:750}
.cb-hero-visual{height:100%;min-width:0;background:#e1e7dd}
.cb-hero-visual img{width:100%;height:100%;object-fit:cover;display:block}
.codebreaker .cb-layout{grid-template-columns:minmax(0,1fr) minmax(220px,.62fr);gap:20px}
.codebreaker .cb-panel,.codebreaker .cb-aside{box-shadow:0 16px 45px rgba(32,59,48,.035);border-color:#e6e9e2}
.codebreaker .cb-panel{min-width:0}
.cb-attempts{padding:16px 17px;border-radius:15px;border:1px solid #e1e9df;background:#f8faf6}
.cb-attempts-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.cb-attempts-heading label{margin:0 0 3px}
.cb-attempts .cb-recommendation{font-size:12px;color:#567768;margin:0 0 12px}
.cb-text-action{appearance:none;border:0;background:none;color:#286a56;font:700 12px/1.4 inherit;text-decoration:underline;text-underline-offset:3px;padding:2px;cursor:pointer}
.cb-text-action:disabled{color:#9eada2;text-decoration:none;cursor:default}
.cb-attempt-controls{display:grid;grid-template-columns:54px 1fr 54px;gap:10px;max-width:290px;align-items:center}
.cb-step{min-height:45px;border-radius:11px;border:1px solid #cddbd0;background:#fff;color:#225948;font-size:23px;cursor:pointer}
.cb-step:disabled{color:#acbab2;opacity:.55;cursor:not-allowed}
#attempts-number{text-align:center;font:800 27px/1.2 ui-monospace,SFMono-Regular,monospace;letter-spacing:-.05em}
.cb-attempts-help{font-size:12px!important;margin:10px 0 0!important}
.codebreaker .cb-primary{font:750 14px/1.4 Inter,system-ui,sans-serif;background:#225749;border-color:#225749}
.cb-history-caption{display:flex;justify-content:space-between;gap:15px;font-size:11px;font-weight:750;letter-spacing:.045em;color:#61776b;margin:6px 0 8px}
#history-hint{font-size:10px;font-weight:500;color:#809088}
.cb-history-viewport{height:clamp(154px,32dvh,340px);overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#aac3b4 transparent;scrollbar-width:thin;border:1px solid #dce6de;border-radius:14px;padding:10px;background:linear-gradient(160deg,#f8faf6,#fff)}
.cb-history{display:flex;flex-direction:column;gap:7px;margin:0}
.cb-history-empty{text-align:center;font-size:13px;padding:30px 10px;color:#778980!important}
.codebreaker .cb-guess-row{padding:9px 12px;background:white;border-color:#e3e9e4}
.codebreaker .cb-guess-row:last-child{border-color:#97b9a2;background:#f1f7ef}
.codebreaker .cb-guess-row .cb-values{font-size:21px;letter-spacing:.11em}
.cb-playing .cb-intro{display:none!important}
.cb-playing .cb-layout{grid-template-columns:minmax(0,1fr) minmax(220px,.48fr)}
.cb-playing #game{display:flex;flex-direction:column;min-width:0}
.cb-playing .cb-aside{align-self:start}
.codebreaker .cb-game-head{margin-bottom:8px;align-items:center}
.codebreaker .cb-game-head h2{font-size:clamp(18px,3vw,24px);margin:0}
.codebreaker .cb-secret{gap:7px;margin:8px 0 16px}
.codebreaker .cb-secret span{height:48px;width:49px;border-radius:9px;font-size:22px}
.cb-editor{margin-top:14px;padding:13px 0 0;border-top:1px solid #dae4dc;position:sticky;bottom:0;background:#fff;z-index:4}
.codebreaker .cb-editor label{font-size:12px;margin-bottom:8px}
.cb-entry-line{display:flex;gap:8px;align-items:center;justify-content:center;margin-bottom:10px}
.cb-entry-control{max-width:345px;flex:1;position:relative;min-width:0}
.cb-entry-slots{display:flex;justify-content:center;gap:6px}
.cb-slot{width:clamp(34px,9vw,56px);height:47px;border:1px solid #d8e4d9;border-bottom:2px solid #adc5b4;border-radius:9px;display:grid;place-items:center;background:#f7faf6;color:#a4b3a9;font:800 24px/1 ui-monospace,SFMono-Regular,monospace}
.cb-slot.filled{color:#1e6752;border-color:#9ebfac;background:#e9f4eb}
.cb-slot.next{border-color:#468d6d;box-shadow:0 0 0 1px #468d6d;color:#d3e3d6}
.cb-code-input{position:absolute;inset:0;opacity:0;width:100%;height:100%;padding:0;cursor:text;appearance:none;z-index:1}
.cb-code-input:focus-visible{outline:none}
.cb-entry-control:focus-within .cb-slot.next{box-shadow:0 0 0 2px #2c8362}
.cb-erase{width:47px;height:47px;flex:none;border:1px solid #d8e4d9;border-radius:9px;background:#f5f8f4;font-size:22px;color:#235b4c;cursor:pointer}
.codebreaker .cb-keypad{grid-template-columns:repeat(5,minmax(0,1fr));max-width:350px;gap:6px;margin:8px auto 11px}
.codebreaker .cb-digit{min-height:42px;font-size:19px}
.codebreaker .cb-submit{min-height:45px}
.codebreaker .cb-feedback{min-height:17px;font-size:11px;margin:6px 0 0;line-height:1.35}
.cb-playing #change{align-self:flex-start;margin-top:12px!important;font-size:12px;min-height:36px}
.codebreaker .cb-finish{margin-top:14px}
.cb-finish-actions button{min-height:44px}
@media(max-width:790px){
 .codebreaker .cb-layout,.cb-playing .cb-layout{grid-template-columns:1fr;gap:15px}
 .codebreaker .cb-intro{grid-template-columns:1fr 170px;min-height:220px}
 .cb-hero-copy{padding:25px}
 .codebreaker .cb-intro h1{font-size:clamp(36px,6vw,54px)}
 .codebreaker .cb-intro p:last-of-type{font-size:14px}
 .cb-hero-details{margin-top:14px}
 .cb-playing .cb-aside{display:none}
 .cb-history-viewport{height:clamp(138px,28dvh,260px)}
}
@media(max-width:520px){
 .codebreaker .cb-page{width:calc(100% - 26px);padding:11px 0 45px}
 .codebreaker .cb-top{margin-bottom:12px}
 .codebreaker .cb-intro{grid-template-columns:1fr;display:flex;flex-direction:column-reverse;min-height:0;border-radius:17px;margin-bottom:14px}
 .cb-hero-visual{height:178px}
 .cb-hero-visual img{object-position:50% 45%}
 .cb-hero-copy{padding:20px}
 .codebreaker .cb-intro h1{font-size:45px}
 .codebreaker .cb-intro p:last-of-type{font-size:14px;margin-top:11px}
 .cb-hero-details span{padding:5px 8px;font-size:10px}
 .codebreaker .cb-panel,.codebreaker .cb-aside{border-radius:16px;padding:17px}
 .codebreaker .cb-picker{margin-bottom:15px}
 .codebreaker .cb-choice{font-size:12px;min-height:51px}
 .cb-playing #game{padding:13px 13px 11px}
 .codebreaker .cb-secret{margin:5px 0 12px}
 .codebreaker .cb-secret span{height:39px;width:39px;font-size:21px;border-radius:8px}
 .codebreaker .cb-game-head h2{font-size:20px}
 .cb-history-caption{margin:0 0 6px}
 .cb-history-viewport{height:clamp(120px,26dvh,205px);padding:6px}
 .codebreaker .cb-guess-row{padding:7px 8px}
 .codebreaker .cb-guess-row .cb-values{font-size:18px}
 .codebreaker .cb-guess-row .cb-number{font-size:10px}
 .codebreaker .cb-result-dots{font-size:10px;min-width:110px}
 .cb-editor{padding-top:10px}
 .cb-entry-line{margin-bottom:8px}
 .cb-slot{height:43px;width:clamp(33px,9vw,48px)}
 .cb-erase{height:43px;width:43px}
 .codebreaker .cb-digit{min-height:39px;font-size:18px}
 .codebreaker .cb-keypad{margin:7px auto 9px;gap:5px}
 .codebreaker .cb-submit{min-height:42px}
 .codebreaker .cb-feedback{font-size:11px;min-height:14px}
 .codebreaker .cb-footer{margin-top:25px}
}
@media(max-width:360px){.cb-slot{width:33px}.cb-entry-slots{gap:4px}.codebreaker .cb-result-dots{min-width:96px;font-size:9px}}
