/* ---------- Focus State timer (header widget) ---------- */
.timer-widget{position:relative}
.timer-idle-btn{
  display:inline-flex;align-items:center;gap:7px;font-family:var(--font);
  font-size:12.5px;font-weight:800;letter-spacing:.3px;color:#C9D0E8;
  padding:9px 14px;border-radius:11px;border:1px solid var(--line-strong);
  background:rgba(255,255,255,.02);cursor:pointer;transition:background .18s,border-color .18s;white-space:nowrap;
}
.timer-idle-btn:hover{background:rgba(255,255,255,.06);border-color:var(--steel)}
.timer-idle-btn:focus-visible{outline:2px solid var(--crimson-light);outline-offset:2px}
.timer-live{
  display:inline-flex;align-items:center;gap:10px;padding:7px 9px 7px 14px;border-radius:11px;
  background:rgba(214,40,40,.12);border:1px solid rgba(229,72,77,.55);
}
.timer-live .t-count{font-variant-numeric:tabular-nums;font-weight:900;font-size:15px;color:#FFB4B9;letter-spacing:1px;display:inline-block;min-width:5.4ch;text-align:center}
.timer-live .t-label{font-size:10px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#F08A8E}
.timer-stop-btn{
  width:26px;height:26px;border-radius:8px;border:1px solid rgba(229,72,77,.6);cursor:pointer;
  background:rgba(214,40,40,.2);color:#FFB4B9;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:900;font-family:var(--font);transition:background .15s;
}
.timer-stop-btn:hover{background:rgba(214,40,40,.4)}
.timer-pop{
  position:absolute;top:calc(100% + 10px);right:0;width:284px;z-index:70;
  background:var(--card);border:1px solid var(--line-strong);border-radius:16px;
  box-shadow:0 24px 60px rgba(6,7,12,.7);padding:16px;display:none;
}
.timer-pop.open{display:block;animation:viewIn .3s cubic-bezier(.16,1,.3,1)}
.timer-pop .tp-title{font-size:12px;font-weight:900;letter-spacing:1.3px;text-transform:uppercase;color:#F08A8E;margin-bottom:4px}
.timer-pop .tp-sub{font-size:11.5px;color:var(--muted);margin-bottom:13px;line-height:1.5}
.preset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.preset-btn{
  font-family:var(--font);font-size:13px;font-weight:800;color:var(--text);cursor:pointer;
  padding:10px 0;border-radius:10px;border:1px solid var(--line-strong);background:rgba(255,255,255,.03);
  transition:background .15s,border-color .15s,transform .15s;
}
.preset-btn:hover{background:rgba(214,40,40,.14);border-color:rgba(229,72,77,.6);transform:translateY(-1px)}
.preset-btn span{display:block;font-size:9px;font-weight:800;letter-spacing:.8px;color:var(--muted);text-transform:uppercase}
.timer-custom{display:flex;gap:8px}
.timer-custom input{
  flex:1;min-width:0;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;color:var(--text);font-family:var(--font);font-size:14px;font-weight:700;
}
.timer-custom input:focus{outline:none;border-color:var(--crimson-light);box-shadow:0 0 0 3px rgba(214,40,40,.22)}

/* Focus-lock mode: when a Focus State session is running, everything
   tagged data-focus-hide (banners, stats, flashcards, review strip,
   locked previews, footer) disappears so only the work remains.     */
body.focus-active [data-focus-hide]{display:none !important}
.focus-badge{
  display:none;align-items:center;gap:7px;font-size:10px;font-weight:900;
  letter-spacing:.9px;text-transform:uppercase;color:#F7E1B5;
  background:rgba(233,180,76,.1);border:1px solid rgba(233,180,76,.45);
  padding:6px 12px;border-radius:999px;white-space:nowrap;
}
.focus-badge .fs-short{display:none}
body.focus-active .focus-badge{display:inline-flex}
.focus-badge .fdot{width:7px;height:7px;border-radius:50%;background:var(--crimson-light);box-shadow:0 0 10px rgba(229,72,77,.9);animation:pulse-dot 1.6s ease infinite}
@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.35}}

/* ================================================================
   THE SKY — completed Focus State sessions.
   Every point is a session that was finished. Abandoned ones are
   never drawn, which is the whole contract made visible.
   ================================================================ */
.focus-sky{
  margin-top:14px;padding:16px 18px 12px;border-radius:var(--radius);
  background:var(--card);border:1px solid var(--line);
}
.focus-sky-head{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap}
.focus-sky-title{margin:0;font-size:16px;font-weight:800;letter-spacing:-.2px;color:var(--text)}
.focus-sky-next{font-size:12px;font-weight:800;letter-spacing:.3px;color:var(--gold)}
.focus-sky-canvas{display:block;width:100%;height:auto;margin:10px 0 6px;border-radius:12px;
  background:linear-gradient(180deg,rgba(18,19,28,.65),rgba(18,19,28,.25))}
.focus-sky-foot{margin:0;font-size:12.5px;color:var(--faint)}
.focus-sky-none{margin:6px 0 0;font-size:13px;color:var(--muted);line-height:1.55}
.focus-sky-empty{background:transparent;border-style:dashed}
@media (max-width:640px){ .focus-sky{padding:14px} }

/* Naming a session is what makes it recognisable in the sky afterwards. */
.tp-label{display:block;margin:12px 0 5px;font-size:11px;font-weight:800;letter-spacing:.6px;
  text-transform:uppercase;color:var(--faint)}
.tp-optional{font-weight:600;letter-spacing:0;text-transform:none;color:var(--faint);opacity:.72}
.timer-label-input{width:100%;margin-bottom:12px;padding:9px 12px;border:1px solid var(--line-strong);
  border-radius:9px;background:rgba(255,255,255,.04);color:var(--text);
  font:14px var(--font);color-scheme:dark}
.timer-label-input::placeholder{color:var(--faint);opacity:.8}
.timer-label-input:focus{outline:none;border-color:var(--crimson-light);
  box-shadow:0 0 0 3px rgba(214,40,40,.2)}
