@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap');

:root{
  --void:#070a11;
  --deep:#0c1220;
  --panel:#10182a;
  --panel-edge:#1d2740;
  --grid:rgba(255,255,255,0.035);
  --hi:#eef2fb;
  --mid:#8d97b5;
  --dim:#525c79;
  --amber:#ffb454;
  --amber-soft:rgba(255,180,84,0.18);
  --cyan:#56e0c4;
  --cyan-soft:rgba(86,224,196,0.16);
  --coral:#ff7a8a;
  --coral-soft:rgba(255,122,138,0.16);
  --violet:#a99bff;
  --violet-soft: rgba(169, 155, 255, 0.16);
  --cyan-border: rgba(86,224,196,0.4);
}

/* Light mode override */
[data-theme="light"] {
  --void:#f8f9fc;
  --deep:#ffffff;
  --panel:#f1f3f9;
  --panel-edge:#d1d5e0;
  --grid:rgba(0,0,0,0.04);
  --hi:#1a2236;
  --mid:#4a5a7a;
  --dim:#64748b;
  --amber:#f59e0b;
}

*{box-sizing:border-box;}

html,body{
  margin:0;
  min-height:100vh;
  background:
    radial-gradient(ellipse 900px 600px at 20% -10%, rgba(86,224,196,0.05), transparent 60%),
    radial-gradient(ellipse 800px 700px at 100% 110%, rgba(255,180,84,0.05), transparent 60%),
    var(--void);
  color:var(--hi);
  font-family:'Space Grotesk', system-ui, sans-serif;
  overflow-x: hidden;
}

body::before{
  content:"";
  position:fixed; inset:0; pointer-events:none; z-index:0;
  background-image:
    linear-gradient(var(--grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid) 1px, transparent 1px);
  background-size:34px 34px;
  opacity:0.6;
}

.shell{
  position:relative; z-index:1;
  max-width:1080px;
  margin:0 auto;
  padding:28px 20px 60px;
}

header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  flex-wrap:wrap;
  gap:14px;
  margin-bottom:22px;
}

.title-block h1{
  margin:0;
  font-size:clamp(26px,4.2vw,38px);
  font-weight:700;
  letter-spacing:0.01em;
  display:flex;
  align-items:center;
  gap:12px;
}
.title-block h1::before{
  content:"";
  width:11px; height:11px; border-radius:50%;
  background:var(--amber);
  box-shadow:0 0 14px 3px var(--amber-soft);
  flex-shrink:0;
}
.title-block p{
  margin:6px 0 0 23px;
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  letter-spacing:0.08em;
  color:var(--dim);
  text-transform:uppercase;
}

.mode-toggle {
  display: flex;
  background: var(--panel);
  border: 1px solid var(--panel-edge);
  border-radius: 99px;
  padding: 4px;
}
.mode-btn {
  padding: 8px 20px;
  border-radius: 99px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  cursor: pointer;
  transition:
    background .25s ease,
    color .25s ease,
    transform .2s ease;
}
.mode-btn.active {
  background: var(--amber);
  color: #070a11;
  font-weight: 600;
  transform:translateY(-2px);
}

.header-pill{
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  letter-spacing:0.06em;
  text-transform:uppercase;
  padding:9px 16px;
  border-radius:99px;
  border:1px solid var(--panel-edge);
  background:var(--panel);
  color:var(--dim);
  white-space:nowrap;
}
.header-pill span{ color:var(--mid); font-weight:600; }

/* ---- congrats modal ---- */
.modal-backdrop{
  position:fixed; inset:0; z-index:50;
  background:rgba(5,7,12,0.72);
  backdrop-filter:blur(3px);
  display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none;
  transition:opacity 0.25s;
  padding:20px;
}
.modal-backdrop.show{ opacity:1; pointer-events:auto; }

.modal-card{
  position:relative;
  width:100%; max-width:360px;
  background:var(--panel);
  border:1px solid var(--amber-soft);
  border-radius:20px;
  padding:34px 32px 28px;
  text-align:center;
  transform:scale(0.92) translateY(6px);
  transition:transform 0.25s cubic-bezier(.2,.8,.2,1);
  box-shadow:0 0 70px var(--amber-soft);
}
.modal-backdrop.show .modal-card{ transform:scale(1) translateY(0); }

.modal-close{
  position:absolute; top:12px; right:14px;
  background:none; border:none;
  color:var(--dim); font-size:20px; line-height:1;
  cursor:pointer; padding:4px;
  transition:color 0.2s;
}
.modal-close:hover{ color:var(--hi); }

.modal-icon{
  width:52px; height:52px; margin:0 auto 16px;
  border-radius:50%;
  background:var(--amber-soft);
  border:1px solid var(--amber-soft);
  color:var(--amber);
  display:flex; align-items:center; justify-content:center;
  font-size:24px;
}

.modal-card h2{ margin:0 0 6px; font-size:23px; }
.modal-sub{ margin:0 0 22px; color:var(--mid); font-size:13px; line-height:1.5; }

.modal-stats{ display:flex; justify-content:center; gap:30px; margin-bottom:24px; }
.modal-stats .stat-num{
  display:block;
  font-family:'JetBrains Mono', monospace;
  font-size:30px; font-weight:700;
  color:var(--hi);
}
.modal-stats .stat-label{
  display:block; margin-top:4px;
  font-family:'JetBrains Mono', monospace;
  font-size:10px; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--dim);
}

.modal-newpuzzle{
  width:100%;
  font-family:'JetBrains Mono', monospace;
  font-size:12px; letter-spacing:0.06em; text-transform:uppercase;
  padding:13px 0;
  border-radius:10px;
  border:1px solid var(--amber-soft);
  background:rgba(86,224,196,0.08);
  color:var(--amber);
  cursor:pointer;
  transition:background 0.2s;
}
.modal-newpuzzle:hover{ background:rgba(86,224,196,0.16); }

.layout{
  display:grid;
  grid-template-columns: 1fr 300px;
  gap:20px;
}
@media (max-width:760px){
  .layout{ grid-template-columns:1fr; }
  .panel{ order:2; }
  .graph-card{ order:1; }
}

.card{
  background:var(--panel);
  border:1px solid var(--panel-edge);
  border-radius:18px;
  padding:18px;
}

.graph-card{ display:flex; flex-direction: column; align-items:center; justify-content:flex-start; padding:10px; position: relative;}
.graph-card svg{ width:100%; height:auto; display:block; max-width:560px; }

/* graph elements */
.edge{
  stroke:#3c4f7a;
  stroke-width:4;
  opacity: 0;
  transform: translateY(-8px);
  transition:stroke 0.25s, stroke-width 0.25s;
}
.edge.active{ 
    stroke:var(--amber); 
    stroke-width:6;
    filter: drop-shadow(0 0 8px var(--amber));
}
.edge.visible {
    opacity: 0.95;
}
.edge.reveal {
  animation: edgeDropIn 0.55s cubic-bezier(.2,.8,.2,1) forwards;
}

@keyframes edgeDropIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 0.95;
    transform: translateY(0px);
  }
}

.node{ cursor:pointer; }
.node .track{ fill:none; stroke:#1a2236; stroke-width:6; }
.node .arc{
  fill:none; stroke-width:6; stroke-linecap:round;
  stroke:var(--mid);
  transform:rotate(-90deg);
  transition:stroke-dashoffset 0.45s cubic-bezier(.2,.8,.2,1), stroke 0.35s;
}
.node[data-status="good"] .arc{ stroke:var(--cyan); }
.node[data-status="mid"] .arc{ stroke:var(--amber); }
.node[data-status="bad"] .arc{ stroke:var(--coral); }

.node .tick{ stroke:var(--violet); stroke-width:3.5; stroke-linecap:round; opacity:0.85; }
.node .core{ fill:var(--deep); stroke:var(--panel-edge); stroke-width:1; transition:stroke 0.3s; }
.node[data-status="good"] .core{ stroke:rgba(86,224,196,0.4); }
.node[data-status="mid"] .core{ stroke:rgba(255,180,84,0.4); }
.node[data-status="bad"] .core{ stroke:rgba(255,122,138,0.4); }

.node .glow{ fill:var(--mid); opacity:0.12; transition:fill 0.35s; }
.node[data-status="good"] .glow{ fill:var(--cyan); }
.node[data-status="mid"] .glow{ fill:var(--amber); }
.node[data-status="bad"] .glow{ fill:var(--coral); }

.node .label{
  font-family:'JetBrains Mono', monospace;
  letter-spacing:0.1em;
  fill:var(--dim); text-anchor:middle;
}
.node .value{
  font-family:'JetBrains Mono', monospace;
  font-weight:600;
  fill:var(--hi); text-anchor:middle;
}
.node .target{
  font-family:'JetBrains Mono', monospace;
  fill:var(--amber); text-anchor:middle; opacity:0.85;
}

.selection-ring{
  fill:none; stroke:var(--amber); stroke-width:2;
  stroke-dasharray:4 7; opacity:0; transition:opacity 0.2s;
}
.node.selected .selection-ring{ opacity:1; animation:spin 7s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }

.flash{ fill:var(--amber); opacity:0; pointer-events:none; }
.flash.go{ animation:flashpop 0.55s ease-out; }
@keyframes flashpop{
  0%{ opacity:0.55; transform:scale(0.6); }
  100%{ opacity:0; transform:scale(1.9); }
}
edge.tutorial-path {
  stroke: var(--cyan);
  stroke-width: 4px;
  filter: drop-shadow(0 6px 18px rgba(86,224,196,0.12));
  transition: stroke 180ms ease, stroke-width 180ms ease;
}

/* subtle node emphasis for nodes on the path */
.node.tutorial-path-node .core {
  fill: var(--cyan-soft);
  transition: fill 180ms ease;
}
.node.tutorial-disabled {
  opacity: 0.42;
  filter: grayscale(20%);
  pointer-events: none; /* blocks clicks */
  transition: opacity 160ms ease, transform 160ms ease;
}
.node.tutorial-focused {
  transform: translateZ(0);
  /* stronger glowing ring for the focused tutorial node */
}
.node.tutorial-focused .selection-ring {
  stroke: var(--cyan);
  stroke-width: 3;
  filter: drop-shadow(0 10px 28px rgba(86,224,196,0.12));
  animation: tutorialPulse 1200ms infinite ease-in-out;
}
@keyframes tutorialPulse {
  0% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.06); opacity: 0.95; }
  100% { transform: scale(1); opacity: 1; }
}

/* small "abort" shake for attempted over-injection in tutorial */
.exceed-shake { animation: shake 420ms ease; }
@keyframes shake {
  0% { transform: translateX(0); }
  20% { transform: translateX(-6px); }
  40% { transform: translateX(6px); }
  60% { transform: translateX(-4px); }
  80% { transform: translateX(4px); }
  100% { transform: translateX(0); }
}

/* Centered tutorial congrats popover (fix bottom-left bug) */
.tutorial-congrats-backdrop {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(0,0,0,0.45);
  opacity: 0;
  visibility: hidden;
  transition: opacity 180ms ease, visibility 180ms;
  z-index: 1200;
  pointer-events: none;
}
.tutorial-congrats-backdrop.show {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
.tutorial-congrats-card {
  min-width: 300px;
  background: var(--panel);
  border: 1px solid var(--cyan);
  border-radius: 12px;
  padding: 16px;
  text-align: center;
  box-shadow: 0 24px 80px rgba(0,0,0,0.5);
}

/* Keep a subtle focused look for tutorial overlay usage */
.tutorial-focus .graph-card { box-shadow: 0 18px 54px rgba(0,0,0,0.45); }


.pulse-dot{
  fill:var(--amber);
  filter:drop-shadow(0 0 5px var(--amber));
  transition:transform linear, opacity linear;
}

/* panel */
.panel{ display:flex; flex-direction:column; gap:14px; }

.section-label{
  font-family:'JetBrains Mono', monospace;
  font-size:11px; letter-spacing:0.12em;
  color:var(--dim); text-transform:uppercase;
  margin:0 0 10px;
}

.selected-readout{
  font-family:'JetBrains Mono', monospace;
  font-size:34px; font-weight:700;
  text-align:center;
  color:var(--mid);
  border:1px dashed var(--panel-edge);
  border-radius:12px;
  padding:14px 0;
  margin-bottom:12px;
  transition:color 0.2s, border-color 0.2s;
}
.selected-readout.armed{ color:var(--amber); border-color:rgba(255,180,84,0.4); }

.difficulty-select{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-bottom:16px;
}

.difficulty-btn{
  font-family:'JetBrains Mono', monospace;
  font-size:15px;
  font-weight:600;
  padding:14px 16px;
  border-radius:10px;
  border:1px solid var(--panel-edge);
  background:var(--deep);
  color:var(--mid);
  cursor:pointer;
  transition:all 0.2s;
  text-align:left;
  display:flex;
  justify-content:space-between;
  align-items:center;
}

.difficulty-btn:hover{
  border-color:var(--amber);
  color:var(--amber);
  background:rgba(255,180,84,0.06);
}

.difficulty-btn.active{
  border-color:var(--amber);
  color:var(--amber);
  background:rgba(86,224,196,0.12);
}

.difficulty-btn .nodes{
  font-size:13px;
  opacity:0.7;
}

.energy-hint{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  color:var(--dim);
  text-align:center;
  margin:12px 0 18px;
}

.message{ 
  font-size:13px; 
  color:var(--mid); 
  line-height:1.5; 
  min-height:38px; 
  margin-bottom:14px; 
}

.newpuzzle{
  width:100%;
  font-family:'JetBrains Mono', monospace;
  font-size:12px; letter-spacing:0.08em; text-transform:uppercase;
  padding:12px 0;
  border-radius:10px;
  border:1px solid var(--panel-edge);
  background:transparent;
  color:var(--mid);
  cursor:pointer;
  transition:border-color 0.2s, color 0.2s;
  margin-bottom:18px;
}
.newpuzzle:hover{ border-color:var(--violet); color:var(--violet); }

.legend{ display:flex; flex-direction:column; gap:7px; margin-bottom:18px; }
.legend div{ display:flex; align-items:center; gap:8px; font-size:12px; color:var(--mid); }
.legend span.swatch{ width:9px; height:9px; border-radius:50%; flex-shrink:0; }

.log{
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  color:var(--dim);
  display:flex; flex-direction:column; gap:5px;
  max-height:120px;
  overflow-y:auto;
}
.log div{ display:flex; justify-content:space-between; }
.log div span.n{ color:var(--mid); }
.log .empty{ color:var(--dim); font-style:italic; }

.counter{
  font-family:'JetBrains Mono', monospace;
  font-size:11px; color:var(--dim);
  margin-top:10px;
  text-align:right;
}

.share-btn {
  width: 100%;
  padding: 12px;
  background: var(--amber);
  color: #070a11;
  border: none;
  border-radius: 10px;
  font-family: 'JetBrains Mono', monospace;
  font-weight: 600;
  cursor: pointer;
  margin-top: 8px;
}
.top-controls {
  display: flex;
  gap: 8px;
  align-items: center;
}

.top-btn {
  background: var(--panel);
  border: 1px solid var(--panel-edge);
  color: var(--mid);
  padding: 8px 12px;
  border-radius: 8px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s;
}

.top-btn:hover {
  background: var(--violet);
  color: #070a11;
  border-color: var(--violet);
}

.howto-popover {
  position: fixed;

  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(.8);

  background: var(--panel);
  border: 1px solid var(--amber);
  border-radius: 16px;

  padding: 24px;
  max-width: 420px;
  width: calc(100% - 32px);

  z-index: 999;

  opacity: 0;
  pointer-events: none;

  transition:
    opacity .25s ease,
    transform .25s ease;

  box-shadow: 0 20px 60px rgba(0,0,0,.45);
}

.howto-popover.show {
  animation: popupAppear .3s cubic-bezier(.2,.8,.2,1);
  opacity:1;
  pointer-events:auto;
  transform:translate(-50%,-50%) scale(1);
}
.howto-popover button {
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  font-weight: 600;
  padding: 10px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.2s ease;
}

.howto-popover button:hover {
  background: var(--violet);
  color: #070a11;
}
@keyframes popupAppear{
  from{
    opacity:0;
    transform:translate(-50%,-50%) scale(.8);
  }
  to{
    opacity:1;
    transform:translate(-50%,-50%) scale(1);
  }
}
/* =========================
   MOBILE IMPROVEMENTS PATCH
   ========================= */

   @media (max-width: 768px) {

html {
  font-size: 14px;
}

body {
  font-size: 14px;
}

/* kill oversized spacing everywhere */
.shell {
  padding: 12px 10px 24px;
}

.card {
  padding: 12px;
  border-radius: 14px;
}

/* HEADER SHRINK */
header {
  gap: 8px;
}

.title-block h1 {
  font-size: 20px;
}

.title-block p {
  font-size: 10px;
  margin-left: 0;
}

/* BUTTONS: THIS IS THE BIG ONE */
button,
.top-btn,
.newpuzzle,
.share-btn,
.difficulty-btn {
  font-size: 12px !important;
  padding: 8px 10px !important;
  border-radius: 8px;
}

.mode-btn {
  font-size: 11px;
  padding: 6px 10px;
}

/* PANEL TEXT SHRINK */
.selected-readout {
  font-size: 20px;
  padding: 8px 0;
}

.section-label {
  font-size: 10px;
}

.message {
  font-size: 12px;
}

.legend div {
  font-size: 11px;
}

.log {
  font-size: 11px;
}

.counter {
  font-size: 10px;
}

/* REMOVE “DESKTOP FEEL” SPACING */
.panel {
  gap: 10px;
}

.difficulty-select {
  gap: 6px;
}

.header-pill {
  font-size: 10px;
  padding: 6px 10px;
}
}

.graph-card svg {
  width: 100%;
  height: auto;
  max-width: 100%;
}

/* Critical: prevent overflow scaling weirdness */
svg#svg {
  display: block;
  width: 100%;
  height: auto;
  max-height: 70vh;
}
/* Mobile controls styling */
/* Mobile controls styling */
.mobile-controls {
  margin-top: 12px;
  display: none;
  gap: 14px;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(10, 14, 24, 0.97);
  border: 1px solid var(--amber);
}

/* ONLY show on mobile AND when node is selected */
@media (max-width: 768px) {
  .mobile-controls.show {
    display: flex;
  }
}

.mobile-btn {
  font-family: 'JetBrains Mono', monospace;
  font-size: 18px;
  font-weight: 700;

  padding: 16px 22px;
  min-width: 64px;

  border-radius: 12px;
  border: 1px solid var(--panel-edge);

  background: var(--amber);
  color: var(--hi);

  cursor: pointer;

  display: flex;
  align-items: center;
  justify-content: center;

  transition: all 0.15s ease;
}

.mobile-btn:active {
  transform: scale(0.95);
  background: var(--amber);
  color: #070a11;
  border-color: var(--amber);
}

.mobile-btn:hover {
  background: var(--violet); /* Match hover effect with other buttons */
  color: #070a11;
}

.graph-card.animating svg {
  animation: graphSwap 0.45s cubic-bezier(.2,.8,.2,1);
}

@keyframes graphSwap {
  0% {
    opacity: 1;
    transform: scale(1);
  }

  45% {
    opacity: 0;
    transform: scale(0.94);
  }

  55% {
    opacity: 0;
    transform: scale(1.06);
  }

  100% {
    opacity: 1;
    transform: scale(1);
  }
}
.howto-backdrop{
  position:fixed;
  inset:0;

  background:rgba(0,0,0,.55);
  backdrop-filter:blur(4px);

  opacity:0;
  visibility:hidden;

  transition:opacity .25s ease;

  z-index:998;
  pointer-events: none;
  transition: opacity 0.25s ease;
}

.howto-backdrop.show{
  opacity:1;
  visibility:visible;
  pointer-events: auto;
}
.node.entering {
  animation: nodeAppear 1s cubic-bezier(.2,.8,.2,1) both;
}

@keyframes nodeAppear {
    from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}/* Default (Dark Mode) */
#optimalDisplay {
  font-family: 'JetBrains Mono', monospace;
  font-size: clamp(10px, 1.2vw, 12px);
  color: var(--coral);
  background: rgba(10, 14, 24, 0.92);
  border: 1px solid var(--panel-edge);
  padding: 6px 10px;
  border-radius: 10px;
  white-space: nowrap;
}
#optimalDisplayContainer {
  position: absolute;
  top: 10px;
  right: 12px;
}
@media (max-width: 768px) {
  .reset-btn {
    padding: 8px 10px;
    font-size: clamp(6px, 8px);
    border-radius: 8px;
    width: auto; /* allow it to shrink instead of full width */
    max-width: 220px;
  }

  /* Optimal injections compact on mobile */
  #optimalDisplay {
    font-size: clamp(10px, 2.4vw, 11px);
    padding: 4px 8px;
    white-space: nowrap;
  }

  /* keep the container positioned cleanly on small screens */
  #optimalDisplayContainer {
    right: 8px;
    top: 6px;
  }
}

/* Light Mode Override */
[data-theme="light"] #optimalDisplay {
  color: var(--coral); /* Text color for light mode */
  background: rgba(240, 240, 240, 0.9); /* Background for light mode */
  border: 1px solid var(--panel-edge); /* Border for light mode */
}
/* =========================
   WORDLE-STYLE TUTORIAL
   ========================= */

   .tutorial-overlay {
    position: fixed;
    inset: 0;
    z-index: 2000;
  
    display: flex;
    align-items: flex-end;
    justify-content: center;
  
    pointer-events: none;
  }
  
  .tutorial-overlay.hidden {
    display: none;
  }
  .tutorial-box {
    width: min(420px, 90vw);
    background: var(--panel);
    border: 1px solid var(--panel-edge);
    border-radius: 14px;
    padding: 18px;
    box-shadow: 0 20px 60px rgba(0,0,0,0.4);
  }
  
  .tutorial-highlight {
    outline: 3px solid var(--cyan);
    box-shadow: 0 0 25px var(--cyan-soft);
    border-radius: 10px;
    position: relative;
    z-index: 10000;
  }
  .tutorial-card {
    position: relative;
  
    width: min(520px, calc(100vw - 32px));
    margin-bottom: 28px;
  
    background: var(--panel);
    border: 1px solid var(--cyan);
  
    border-radius: 18px;
  
    padding: 22px;
  
    pointer-events: auto;
  
    box-shadow:
      0 20px 60px rgba(0,0,0,.45);
  
    animation: tutorialSlideUp .35s cubic-bezier(.2,.8,.2,1);
  }
  @keyframes tutorialSlideUp {
    from {
      opacity: 0;
      transform: translateY(40px);
    }
  
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }

  .tutorial-overlay.hidden{
    display:none;
  }
  
  /* Graph stays bright */
.graph-card.tutorial-focus {
  position: relative;
  z-index: 2100;

  box-shadow:
    0 0 0 2px var(--cyan),
    0 0 40px rgba(86,224,196,.35);

  filter: brightness(1.15);
}

/* Tutorial card at bottom */

@media (max-width:768px) {
  .tutorial-card {
    width: calc(100vw - 16px);
    bottom: 12px;
  }
}
  
  .graph-card.tutorial-focus::after{
    content:"";
    position:absolute;
    inset:-8px;
    border-radius:20px;
    box-shadow:
      0 0 0 400px rgba(0,0,0,.60),
      0 0 30px rgba(86,224,196,.45);
  
    pointer-events:none;
  }
  #newPuzzleBtn {
    background: var(--amber);
    color: var(--hi);
    border: none;
    border-radius: 10px;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 600;
    cursor: pointer;
    opacity: 1;
    pointer-events: auto;
  }
  
  #newPuzzleBtn[disabled] {
    background: var(--dim);
    color: var(--mid);
    cursor: not-allowed;
    opacity: 0.5;
  }
  .new-puzzle-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    backdrop-filter: blur(4px);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease;
    z-index: 998;
    pointer-events: none;
  }
  
  .new-puzzle-backdrop.show {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
  
  .new-puzzle-popover {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: var(--panel);
    border: 1px solid var(--amber);
    border-radius: 16px;
    padding: 24px;
    max-width: 420px;
    width: calc(100% - 32px);
    z-index: 999;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
  }
  .reset-btn {
    margin-top: 9px;
    width: 100%;
    padding: 9px;
    background: var(--violet);
    color: var(--hi);
    border: none;
    border-radius: 10px;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500;
    font-size: clamp(4px, 7px);
    cursor: pointer;
  }
  [data-theme="dark"] .reset-btn {
    color: var(--hi); /* Use a darker color for the font in light mode */
  }
  .difficulty-display {
    font-size: 16px;
    font-weight: bold;
    color: var(--hi);
    text-align: center;
    margin-bottom: 12px;
  }
  
  .energy-buttons {
    display: flex;
    gap: 8px;
    justify-content: center;
  }
  
  .energy-btn {
    padding: 16px 24px;
    font-size: 18px;
    font-weight: bold;
    background: var(--amber);
    color: var(--hi);
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
  }
  
  .energy-btn:disabled {
    background: var(--dim);
    color: var(--mid);
    cursor: not-allowed;
  }
  
  .energy-btn:hover:not(:disabled) {
    background: var(--violet);
    color: #070a11;
  }
  .puzzle-details {
    list-style: none;
    padding: 0;
    margin: 0;
    font-size: 14px;
    color: var(--mid);
  }
  
  .puzzle-details li {
    margin-bottom: 8px;
  }
  
  .puzzle-details span {
    font-weight: bold;
    color: var(--hi);
  }
  .create-btn, .close-btn {
    width: 100%;
    padding: 12px;
    background: var(--amber);
    color: #070a11;
    border: none;
    border-radius: 10px;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 600;
    cursor: pointer;
    margin-top: 8px;
    transition: background 0.2s ease;
  }
  
  .create-btn:hover, .close-btn:hover {
    background: var(--amber);
  }
  
  .close-btn {
    background: var(--panel);
    color: var(--mid);
    border: 1px solid var(--panel-edge);
  }
  
  .close-btn:hover {
    background: rgba(240, 240, 240, 0.9);
  }
  .target-pointer {
    stroke: var(--violet);
    stroke-width: 3;
    stroke-linecap: round;
    transition: stroke 160ms ease, stroke-width 160ms ease;
    pointer-events: none;
    filter: drop-shadow(0 6px 14px rgba(0,0,0,0.18));
  }
  
  /* Exceed popup backdrop/popover */
  .exceed-backdrop {
    position: fixed;
    inset: 0;
    display: grid;
    place-items: center;
    background: rgba(0,0,0,0.45);
    opacity: 0;
    visibility: hidden;
    transition: opacity .18s ease;
    z-index: 1200;
    pointer-events: none;
  }
  .exceed-backdrop.show {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
  .exceed-popover {
    background: var(--panel);
    border: 2px solid var(--coral);
    border-radius: 12px;
    padding: 14px;
    min-width: 260px;
    text-align: center;
    box-shadow: 0 18px 48px var(--coral-soft);
  }
  .exceed-title {
    font-family: 'JetBrains Mono', monospace;
    font-weight: 700;
    color: var(--coral);
  }
  .exceed-btn {
    flex: 1;
    padding: 8px 12px;
    background: var(--amber);
    color: #070a11;
    border: none;
    border-radius: 8px;
    font-weight: 700;
    cursor: pointer;
    transition: transform .12s ease, box-shadow .12s ease;
  }
  .exceed-btn:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0,0,0,0.12); }
  .exceed-popover .exceed-btn + .exceed-btn { background: var(--cyan); }