:root{color-scheme:light dark;--bg:#f7f7f7;--fg:#222;--muted:#64748b;--primary:#2563eb;--secondary:#e2e8f0;--secondary-fg:#1f2937;--hint:#94a3b8;--card-bg:#fff;--border:#e5e7eb;--button-primary:#2563eb;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 3px rgba(0,0,0,.08);--shadow-md:0 2px 8px rgba(0,0,0,.08);--shadow-lg:0 8px 24px rgba(0,0,0,.12)}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,"Noto Sans",sans-serif;background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-size:16px;line-height:1.6}
.site-header{text-align:center;padding:48px 16px 28px;border-bottom:1px solid var(--border)}
.site-header h1{font-size:clamp(28px,4vw,44px);margin:0;font-weight:900;line-height:1.12;letter-spacing:.3px;color:var(--fg)}
.subtitle{margin:12px auto 0;color:var(--hint);font-size:14px;font-weight:400;line-height:1.7;letter-spacing:.2px;max-width:720px}

.top-nav{margin-top:10px}
.top-nav .home-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid var(--border);border-radius:var(--radius-md);padding:8px 12px;background:var(--card-bg);color:var(--fg);font-weight:600}
.top-nav .home-link:hover{border-color:#cbd5e1;box-shadow:var(--shadow-sm)}
.top-nav .home-link:active{transform:scale(.98)}

#game{width:100%;max-width:960px;margin:0 auto;padding:16px 24px 32px}
.section{margin:20px 0}
.two-column{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;align-items:start}
.two-column .section{margin:0}

#timer{font-variant-numeric:tabular-nums;font-weight:900;font-size:clamp(32px,5vw,48px);text-align:center;color:var(--fg)}
.progress{width:100%;max-width:760px;height:6px;background:#e5e7eb;border-radius:9999px;overflow:hidden;margin:10px auto 0}
.progress-fill{height:100%;width:100%;background:var(--primary);transition:width .12s ease-in-out;will-change:width}

.numbers{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:0 auto}
#problemSection{padding:8px 0}
.card{background:var(--card-bg);border:none;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;height:140px;aspect-ratio:1/1;min-height:120px;font-weight:800;font-size:56px;box-shadow:var(--shadow-lg);transition:box-shadow .2s,background .2s;cursor:pointer}
.card:hover{box-shadow:0 6px 18px rgba(0,0,0,.12);background:#ffffff;}
.card.selected{outline:3px solid rgba(37,99,235,.35);outline-offset:2px}
.card.card-error{outline:3px solid #dc2626;outline-offset:2px;background:#fee2e2}

#inputSection{display:flex;gap:14px;align-items:center;margin:8px 0 12px}
#exprInput{flex:1;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:18px;background:var(--card-bg);color:var(--fg);box-shadow:var(--shadow-sm);caret-color:var(--primary)}
#exprInput::placeholder{color:var(--hint)}
#exprInput::-webkit-search-cancel-button{cursor:pointer}
.ops-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.ops-bar{justify-content:center}
.ops-bar button{min-width:120px;height:80px;padding:12px 18px;border-radius:var(--radius-md);background:var(--secondary);color:var(--secondary-fg);border:1px solid var(--border);box-shadow:var(--shadow-sm);transition:background .2s,border-color .2s,box-shadow .2s;font-size:32px;font-weight:800}
.ops-bar button:hover{background:#f8fafc;border-color:#cbd5e1;box-shadow:0 2px 6px rgba(0,0,0,.12)}
.ops-bar button:active{transform:none;background:#eef2f7}
.ops-bar button:focus{outline:2px solid rgba(37,99,235,.3);outline-offset:2px}
.ops-bar button:focus-visible{outline:2px solid rgba(37,99,235,.35);outline-offset:2px}
.ops-bar.ops-enabled{box-shadow:0 0 0 3px rgba(37,99,235,.20) inset;border-radius:var(--radius-md)}
.ops-bar button.selected-op{background:var(--button-primary);color:#fff;border-color:var(--button-primary);box-shadow:0 2px 8px rgba(37,99,235,.25)}
#exprInput:focus{outline:2px solid rgba(37,99,235,.25);border-color:var(--primary)}

#liveResult{margin-top:8px;font-size:20px;font-weight:800;text-align:left;color:var(--fg)}
.
.steps{margin-top:8px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px;box-shadow:var(--shadow-sm);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:var(--fg)}
.steps .step{padding:4px 2px;border-bottom:1px dashed var(--border)}
.steps .step:last-child{border-bottom:none}

button{appearance:none;border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 16px;font-weight:600;cursor:pointer;background:var(--card-bg);color:var(--fg);transition:background .2s,border-color .2s,transform .02s,box-shadow .2s}
button:hover{border-color:#cbd5e1}
button:active{transform:none}
button:disabled{opacity:.7;cursor:not-allowed;background:#e5e7eb;color:#94a3b8;border-color:#e5e7eb}
button:focus{outline:2px solid rgba(37,99,235,.28);outline-offset:2px}
button:focus-visible{outline:2px solid rgba(37,99,235,.35);outline-offset:2px}

#btnSubmit{background:var(--button-primary);color:#fff;border-color:var(--button-primary);box-shadow:0 2px 6px rgba(37,99,235,.25)}
#btnNext{background:var(--button-primary);color:#fff;border-color:var(--button-primary)}
#btnShowAnswer{background:var(--secondary);color:var(--secondary-fg)}
/* Primary buttons interaction feedback */
#btnSubmit,#btnNext{transition:filter .2s,box-shadow .2s}
#btnSubmit:hover,#btnNext:hover{box-shadow:0 4px 10px rgba(37,99,235,.28);filter:brightness(1.02)}
#btnSubmit:active,#btnNext:active{transform:none;filter:brightness(.98)}
/* Secondary button feedback */
#btnShowAnswer:hover{background:#f1f5f9;box-shadow:0 2px 8px rgba(0,0,0,.12)}
#btnShowAnswer:active{transform:none}

#statsSection{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:14px;margin:12px 0}
.stat{display:flex;align-items:center;justify-content:space-between;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px;font-size:14px;box-shadow:var(--shadow-sm);transition:box-shadow .2s}
.stat:hover{box-shadow:var(--shadow-md)}
.stat span:first-child{color:var(--muted);font-size:13px}
.stat span:last-child{font-weight:700;font-size:18px;font-variant-numeric:tabular-nums;color:var(--fg)}

#controlsSection{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:8px 0 16px}
#controlsSection{justify-content:center}
.toggle{display:inline-flex;align-items:center;gap:8px;margin-left:auto}
#controlsSection>button{min-width:120px;height:44px;padding:10px 16px;border-radius:var(--radius-md)}
#controlsSection>button:hover{box-shadow:0 2px 8px rgba(0,0,0,.12);border-color:#cbd5e1}
#controlsSection>button:active{transform:scale(.98)}
#btnShowAnswer{order:-1}
#btnSubmit,#btnShowAnswer{min-width:140px;height:40px}

.badge{display:inline-block;padding:6px 10px;border-radius:9999px;font-size:12px;font-weight:700;border:1px solid var(--border);background:var(--card-bg);margin-left:8px}
.badge-easy{color:#16a34a;border-color:#16a34a}
.badge-normal{color:#2563eb;border-color:#2563eb}
.badge-hard{color:#dc2626;border-color:#dc2626}

.flash-success .card{outline:2px solid #16a34a}
.flash-error .card{outline:2px solid #dc2626}

#infoSection #message{min-height:24px;font-size:14px;color:var(--muted)}
#infoSection #answer{margin-top:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px}
.msg-success{color:#16a34a}
.msg-error{color:#dc2626}
.msg-info{color:var(--muted)}
#infoSection #message{transition:opacity .18s ease-out}
.msg-success,.msg-error,.msg-info{animation:fadeIn .18s ease-out}
@keyframes fadeIn{from{opacity:.01;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}
.result-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.status-fail{color:#dc2626;font-weight:800}
.result-text{font-weight:800;color:var(--fg)}
.shake{animation:shake .25s linear}
@keyframes shake{0%{transform:translateX(0)}20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-2px)}80%{transform:translateX(2px)}100%{transform:translateX(0)}}

.leaderboard{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:12px}
.leaderboard li{display:grid;grid-template-columns:32px 1fr 80px 80px 110px;gap:10px;align-items:center;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .02s}
.leaderboard li:hover{box-shadow:var(--shadow-md)}
.leaderboard .rank{width:32px;height:32px;border-radius:9999px;background:var(--secondary);color:var(--secondary-fg);display:inline-flex;align-items:center;justify-content:center;font-weight:700}
.leaderboard .uid{font-weight:600}
.leaderboard .bst,.leaderboard .ts{text-align:right}
.leaderboard .dt{color:var(--muted);text-align:right}
#leaderboardSection{margin:18px 0}
#leaderboardSection h3{margin:0 0 10px;font-size:16px;color:var(--muted);font-weight:700}

.stats-bar{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:12px;align-items:center}
.section-title{font-weight:800;color:var(--fg);margin-bottom:6px}

@media (max-width:640px){
  .site-header h1{font-size:24px;line-height:1.2}
  .subtitle{font-size:12.5px;line-height:1.6;margin-top:8px;max-width:92%}
  #timer{font-size:32px}
  .numbers{grid-template-columns:repeat(2,1fr)}
  .two-column{grid-template-columns:1fr}
  .card{height:100px;min-height:96px;font-size:44px}
  #inputSection{flex-direction:column;align-items:stretch;margin:6px 0 12px}
  button{width:100%}
  #game{padding:8px 12px 20px}
  #statsSection{grid-template-columns:1fr}
  .leaderboard li{grid-template-columns:24px 1fr 64px 64px 86px;padding:10px}
  .leaderboard .rank{width:24px;height:24px;font-size:12px}
}

@media (max-width:900px){
  .numbers{gap:18px}
  .card{height:128px;font-size:52px}
  .progress{max-width:680px}
  #statsSection{grid-template-columns:repeat(2,minmax(160px,1fr))}
  #controlsSection>button{min-width:110px}
  .leaderboard li{grid-template-columns:28px 1fr 72px 72px 96px;padding:11px}
}

@media (max-width:480px){
  #timer{font-size:28px}
  .numbers{gap:16px}
  .card{height:92px;font-size:40px}
  .progress{height:5px;max-width:92%}
  #controlsSection>button{min-width:100%}
}

@media (prefers-color-scheme:dark){
  :root{--bg:#0b1220;--fg:#e5e7eb;--muted:#94a3b8;--card-bg:#0f172a;--border:#1e293b;--button-primary:#3b82f6;--secondary:#111827;--secondary-fg:#e5e7eb;--shadow:none}
  .progress{background:#1e293b}
}
*{-webkit-tap-highlight-color:transparent}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important}
}
#timerSection #message{font-size:1.25rem;font-weight:600;margin-top:8px;text-align:center}
#timerSection #answer{font-size:1rem;color:var(--muted);margin-top:4px;text-align:center}
.numbers-row{display:grid;grid-template-columns:auto minmax(280px,1fr);gap:16px;align-items:start;justify-content:center}
.steps-panel{min-width:240px}
.steps-panel{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.panel-title{font-weight:800;color:var(--fg);margin:0 0 6px}
.answer-text{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:var(--fg)}
.answer-desc{font-size:13px;color:var(--muted);margin-top:6px;line-height:1.6}
