@import url('https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Source+Sans+3:wght@400;600;700&display=swap');

#btd-app {
  --btd-bg:#fff; --btd-surface:#f7f7f5; --btd-surface2:#edede8;
  --btd-border:#dfdfdf; --btd-border-dk:#b0b0a8;
  --btd-text:#121212; --btd-muted:#737373;
  --btd-green:#6aaa64; --btd-red:#e03030; --btd-yellow:#f7da21;
  --btd-font-head:'Libre Baskerville',Georgia,serif;
  --btd-font-body:'Source Sans 3','Helvetica Neue',Arial,sans-serif;
  --btd-font-mono:'Courier New',monospace;
  font-family:var(--btd-font-body);
  background:var(--btd-bg); color:var(--btd-text);
  min-height:520px; border:1px solid var(--btd-border); border-top:none;
  max-width:680px; margin:0 auto; position:relative; line-height:1.5;
  font-size:16px;
}
#btd-app::before { content:''; display:block; height:3px; background:var(--btd-text); }
#btd-app *,#btd-app *::before,#btd-app *::after { box-sizing:border-box; }

/* Screen visibility */
#btd-app .btd-screen { display:none; }
#btd-app .btd-screen.btd-active { display:block; }
@keyframes btdFade { from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:translateY(0)} }
#btd-app .btd-screen.btd-active { animation:btdFade .2s ease; }

/* Welcome */
#btd-app .btd-welcome-inner { display:flex; flex-direction:column; align-items:center; text-align:center; padding:2.5rem 2rem 3rem; gap:1rem; }
#btd-app .btd-rule { width:100%; max-width:360px; height:1px; background:var(--btd-text); }
#btd-app .btd-rule-sm { width:56px; height:2px; background:var(--btd-text); }
#btd-app .btd-title { font-family:var(--btd-font-head); font-size:clamp(1.9rem,5vw,2.5rem); font-weight:700; color:var(--btd-text); margin:0; }
#btd-app .btd-italic { font-family:var(--btd-font-head); font-style:italic; color:var(--btd-muted); font-size:.92rem; margin:0; }
#btd-app .btd-sub { color:var(--btd-muted); font-size:.92rem; max-width:310px; line-height:1.55; margin:0; }
#btd-app .btd-intro-body { max-width:400px; text-align:left; border-top:1px solid var(--btd-border); border-bottom:1px solid var(--btd-border); padding:1rem 0; display:flex; flex-direction:column; gap:.75rem; }
#btd-app .btd-intro-body p { font-size:.9rem; color:var(--btd-muted); line-height:1.65; margin:0; }
#btd-app .btd-intro-body strong { color:var(--btd-text); font-weight:700; }

/* Buttons */
#btd-app .btd-btn { display:inline-flex; align-items:center; justify-content:center; font-family:var(--btd-font-body); font-size:.82rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; border-radius:99px; padding:.65rem 1.75rem; cursor:pointer; transition:.18s ease; border:2px solid var(--btd-text); min-height:44px; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
#btd-app .btd-btn-primary { background:var(--btd-text); color:#fff; }
#btd-app .btd-btn-primary:hover { background:#333; }
#btd-app .btd-btn-secondary { background:#fff; color:var(--btd-text); }
#btd-app .btd-btn-secondary:hover { background:var(--btd-surface); }

/* Hub */
#btd-app .btd-hub-header { padding:1rem 1.5rem .75rem; border-bottom:1px solid var(--btd-border); }
#btd-app .btd-hub-top { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:.7rem; }
#btd-app .btd-hub-title { font-family:var(--btd-font-head); font-size:1rem; font-weight:700; }
#btd-app .btd-hub-date { font-size:.75rem; color:var(--btd-muted); font-style:italic; }
#btd-app .btd-prog-bar { height:3px; background:var(--btd-surface2); margin-bottom:.6rem; overflow:hidden; }
#btd-app .btd-prog-fill { height:100%; background:var(--btd-text); transition:width .5s ease; }
#btd-app .btd-hub-meta { display:flex; align-items:center; justify-content:space-between; font-size:.78rem; color:var(--btd-muted); font-weight:700; text-transform:uppercase; letter-spacing:.05em; }
#btd-app .btd-scores-btn { background:var(--btd-text); border:2px solid var(--btd-text); border-radius:99px; color:#fff; font-family:var(--btd-font-body); font-size:.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; padding:.35rem .85rem; cursor:pointer; transition:.18s ease; min-height:36px; white-space:nowrap; }
#btd-app .btd-scores-btn:hover { background:#fff; color:var(--btd-text); }

/* Cards */
#btd-app .btd-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); border-top:1px solid var(--btd-border); }
#btd-app .btd-card { background:var(--btd-bg); border-bottom:1px solid var(--btd-border); border-right:1px solid var(--btd-border); padding:1.1rem 1.3rem; cursor:pointer; transition:background .18s; position:relative; min-height:44px; }
#btd-app .btd-card:hover { background:var(--btd-surface); }
#btd-app .btd-card.btd-done { background:var(--btd-surface); cursor:default; }
#btd-app .btd-card-emoji { font-size:1.35rem; display:block; margin-bottom:.45rem; }
#btd-app .btd-card-title { font-family:var(--btd-font-head); font-size:.92rem; font-weight:700; margin-bottom:.22rem; }
#btd-app .btd-card-desc { font-size:.8rem; color:var(--btd-muted); line-height:1.5; margin-bottom:.6rem; }
#btd-app .btd-card-status { display:inline-flex; align-items:center; font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--btd-text); }
#btd-app .btd-card-status.btd-ok { color:var(--btd-green); }
#btd-app .btd-card-badge { font-family:var(--btd-font-mono); font-size:.72rem; background:var(--btd-green); color:#fff; border-radius:2px; padding:.12rem .4rem; float:right; font-weight:700; }

/* Game area */
#btd-app #btd-game { position:relative; }
#btd-app .btd-back { position:absolute; top:.75rem; left:.75rem; background:none; border:none; color:var(--btd-muted); font-size:.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; cursor:pointer; font-family:var(--btd-font-body); padding:.35rem .5rem; border-radius:4px; }
#btd-app .btd-back:hover { color:var(--btd-text); }
#btd-app #btd-mount { padding:3.5rem 1.25rem 1.5rem; min-height:400px; }
#btd-app .btd-game-header { text-align:center; margin-bottom:1.25rem; }
#btd-app .btd-game-title { font-family:var(--btd-font-head); font-size:1.15rem; font-weight:700; margin-bottom:.2rem; }
#btd-app .btd-game-inst { font-size:.82rem; color:var(--btd-muted); line-height:1.5; }
#btd-app .btd-score-disp { text-align:center; font-size:.82rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--btd-muted); margin-bottom:.65rem; }
#btd-app .btd-timer-bar { height:4px; background:var(--btd-surface2); overflow:hidden; margin-bottom:.75rem; border-radius:2px; }
#btd-app .btd-timer-fill { height:100%; background:var(--btd-text); transition:width .1s linear; border-radius:2px; }
#btd-app .btd-timer-fill.btd-urgent { background:var(--btd-red); }
#btd-app .btd-complete { text-align:center; padding:2rem 1rem; }
#btd-app .btd-complete h3 { font-family:var(--btd-font-head); font-size:1.1rem; font-weight:700; margin-bottom:1rem; }
#btd-app .btd-big-score { font-family:var(--btd-font-mono); font-size:3.5rem; font-weight:700; line-height:1; margin-bottom:.5rem; }
#btd-app .btd-complete p { color:var(--btd-muted); font-size:.9rem; margin-bottom:1.25rem; }

/* Results */
#btd-app .btd-results-inner { max-width:480px; margin:0 auto; padding:2rem 1.75rem 3rem; text-align:center; }
#btd-app .btd-ring-label { font-family:var(--btd-font-head); font-size:.78rem; font-style:italic; color:var(--btd-muted); margin-bottom:1rem; }
#btd-app .btd-ring-wrap { position:relative; width:170px; height:170px; margin:0 auto 1.1rem; }
#btd-app .btd-ring-svg { width:100%; height:100%; }
#btd-app .btd-ring-arc { transition:stroke-dashoffset 1s ease; }
#btd-app .btd-ring-center { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
#btd-app .btd-ring-center span { font-family:var(--btd-font-mono); font-size:2.8rem; font-weight:700; line-height:1; }
#btd-app .btd-ring-center small { color:var(--btd-muted); font-size:.65rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; margin-top:.28rem; }
#btd-app #btd-score-label { font-family:var(--btd-font-head); font-size:1.4rem; font-weight:700; margin-bottom:.3rem; display:block; }
#btd-app #btd-score-desc { color:var(--btd-muted); font-size:.9rem; line-height:1.55; max-width:320px; margin:0 auto 1.25rem; display:block; }
#btd-app .btd-divider { height:1px; background:var(--btd-border); margin:1.1rem 0; }
#btd-app .btd-breakdown-title { font-size:.73rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--btd-muted); margin-bottom:.65rem; text-align:left; }
#btd-app .btd-break-row { display:flex; align-items:center; gap:.65rem; padding:.5rem 0; border-bottom:1px solid var(--btd-border); }
#btd-app .btd-break-row:last-child { border-bottom:none; }
#btd-app .btd-break-emoji { font-size:1.05rem; flex-shrink:0; }
#btd-app .btd-break-name { flex:1; font-size:.86rem; font-weight:600; text-align:left; }
#btd-app .btd-break-bar-wrap { width:88px; height:4px; background:var(--btd-surface2); overflow:hidden; }
#btd-app .btd-break-bar { height:100%; background:var(--btd-text); transition:width .8s ease; }
#btd-app .btd-break-pct { font-family:var(--btd-font-mono); font-size:.8rem; font-weight:700; width:36px; text-align:right; }

/* Initials */
#btd-app .btd-initials-label { font-size:.78rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--btd-muted); margin-bottom:.85rem; }
#btd-app .btd-initials-row { display:flex; gap:.5rem; justify-content:center; }
#btd-app .btd-initial { width:52px; height:60px; border:2px solid var(--btd-text); border-radius:3px; background:#fff; font-family:var(--btd-font-mono); font-size:1.6rem; font-weight:700; text-align:center; text-transform:uppercase; color:var(--btd-text); outline:none; padding:0; }

/* Leaderboard */
#btd-app .btd-lb-title { font-size:.73rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--btd-muted); margin-bottom:.65rem; text-align:left; }
#btd-app .btd-lb-row { display:flex; align-items:center; gap:.6rem; padding:.5rem 0; border-bottom:1px solid var(--btd-border); font-size:.88rem; }
#btd-app .btd-lb-row:last-child { border-bottom:none; }
#btd-app .btd-lb-rank { font-size:1rem; width:28px; flex-shrink:0; }
#btd-app .btd-lb-name { flex:1; font-weight:700; font-family:var(--btd-font-mono); letter-spacing:.06em; }
#btd-app .btd-lb-score { font-family:var(--btd-font-mono); font-weight:700; }
#btd-app .btd-lb-me { background:var(--btd-surface); }

/* Dropdown */
#btd-app #btd-scores-card { position:absolute; right:.75rem; left:.75rem; background:#fff; border:1px solid var(--btd-border); border-radius:4px; padding:.85rem 1rem; z-index:100; box-shadow:0 4px 16px rgba(0,0,0,.1); }
#btd-app #btd-drop-close { position:absolute; top:.5rem; right:.5rem; background:none; border:none; font-size:1rem; cursor:pointer; color:var(--btd-muted); font-family:var(--btd-font-body); }

/* Game shared styles */
#btd-app .btd-math-problem { font-family:var(--btd-font-mono); font-size:2rem; font-weight:700; text-align:center; margin:1rem 0 1.25rem; }
#btd-app .btd-math-opts { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; max-width:240px; margin:0 auto 1rem; }
#btd-app .btd-math-btn { padding:.75rem; border:2px solid var(--btd-border-dk); border-radius:3px; background:#fff; font-family:var(--btd-font-mono); font-size:1.2rem; font-weight:700; cursor:pointer; transition:background .12s,border-color .12s; }
#btd-app .btd-math-btn.correct { background:#22c55e; border-color:#22c55e; color:#fff; }
#btd-app .btd-math-btn.wrong { background:#ef4444; border-color:#ef4444; color:#fff; }
#btd-app .btd-word-input { border:2px solid var(--btd-text); border-radius:3px; background:#fff; font-family:var(--btd-font-mono); font-size:1.3rem; font-weight:700; text-align:center; text-transform:uppercase; color:var(--btd-text); outline:none; padding:.5rem; flex:1; min-width:0; }
#btd-app .btd-word-submit { border:2px solid var(--btd-text); border-radius:3px; background:var(--btd-text); color:#fff; font-size:1.2rem; padding:.5rem .8rem; cursor:pointer; }
#btd-app .btd-scrambled { font-family:var(--btd-font-mono); font-size:2.4rem; font-weight:700; letter-spacing:.28em; text-align:center; margin:1rem 0; }
#btd-app .btd-mc { border:2px solid var(--btd-border); border-radius:4px; background:var(--btd-surface); aspect-ratio:1; display:flex; align-items:center; justify-content:center; font-size:1.5rem; cursor:pointer; transition:background .15s; }
#btd-app .btd-mc.flipped { background:var(--btd-text); }
#btd-app .btd-mc.matched { background:var(--btd-green); border-color:var(--btd-green); }

/* Mobile */
@media (max-width:480px) {
  #btd-app .btd-cards { grid-template-columns:1fr; }
  #btd-app #btd-mount { padding:3rem 1rem 1.25rem; }
  #btd-app .btd-results-inner { padding:1.5rem 1.25rem 2.5rem; }
  #btd-app .btd-math-opts { max-width:100%; }
}
