:root{ --bg:#0b1020; --panel:#0f1733; --text:#e9eeff; --muted:#9fb0ff; --shadow: 0 10px 30px rgba(0,0,0,.35); --gap: 14px; --matchW: 14px; --matchL: 68px; --matchT: 14px; --radius: 12px; } *{box-sizing:border-box} body{ margin:0; min-height:100vh; background: radial-gradient(1200px 600px at 20% 20%, #1a2a7a 0%, transparent 60%), radial-gradient(900px 500px at 85% 30%, #2b1a7a 0%, transparent 60%), var(--bg); color:var(--text); font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; display:flex; align-items:center; justify-content:center; padding:24px; } .app{ width:min(1100px, 100%); display:grid; grid-template-columns: 1.3fr .9fr; gap:18px; } @media (max-width: 980px){ .app{grid-template-columns:1fr} } .card{ background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03)); border: 1px solid rgba(255,255,255,.10); border-radius: 18px; box-shadow: var(--shadow); overflow:hidden; } .card-header{ padding:16px 18px; border-bottom: 1px solid rgba(255,255,255,.10); display:flex; align-items:center; justify-content:space-between; gap:12px; } .title{ display:flex; flex-direction:column; gap:4px; } .title h1{ font-size:18px; margin:0; letter-spacing:.2px; } .title .sub{ font-size:12px; color:var(--muted); } .controls{ display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end; } button{ border:none; padding:10px 12px; border-radius: 12px; background: rgba(255,255,255,.12); color:var(--text); cursor:pointer; font-weight:600; letter-spacing:.2px; transition: transform .05s ease, background .2s ease; user-select:none; } button:hover{ background: rgba(255,255,255,.18); } button:active{ transform: translateY(1px); } button.primary{ background: linear-gradient(180deg, rgba(102,168,255,.7), rgba(102,168,255,.35)); } button.primary:hover{ background: linear-gradient(180deg, rgba(102,168,255,.85), rgba(102,168,255,.45)); } .play{ padding:18px; display:flex; flex-direction:column; gap:14px; } .statusRow{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; background: rgba(0,0,0,.18); border: 1px solid rgba(255,255,255,.08); border-radius: 14px; padding:12px 14px; } .pill{ display:inline-flex; align-items:center; gap:8px; padding:8px 10px; border-radius: 999px; background: rgba(255,255,255,.08); font-size:12px; color:var(--text); border:1px solid rgba(255,255,255,.08); white-space:nowrap; } .dot{ width:10px;height:10px;border-radius:50%; background:#ff5c5c; box-shadow: 0 0 0 3px rgba(255,92,92,.15); } .dot.ok{ background:#29e07a; box-shadow: 0 0 0 3px rgba(41,224,122,.15); } /* Equation layout */ .equationWrap{ background: rgba(0,0,0,.18); border: 1px solid rgba(255,255,255,.08); border-radius: 16px; padding:16px; overflow:auto; } .equation{ display:flex; align-items:center; gap: var(--gap); padding:8px; min-width: 740px; } .group{ display:flex; align-items:center; gap: var(--gap); } .symbol{ font-size: 34px; font-weight: 900; color: rgba(255,255,255,.85); padding: 6px 10px; border-radius: 14px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.08); user-select:none; } /* 7-seg digit container */ .digit{ position:relative; width: 110px; height: 170px; border-radius: 16px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.07); box-shadow: inset 0 0 0 1px rgba(0,0,0,.35); flex:0 0 auto; } /* Match segments */ .seg{ position:absolute; width: var(--matchL); height: var(--matchW); border-radius: 999px; cursor:pointer; transition: filter .12s ease, transform .05s ease; box-shadow: 0 10px 18px rgba(0,0,0,.25); } .seg:hover{ filter: brightness(1.1); } .seg:active{ transform: translateY(1px); } /* removed (invisible/white) */ .seg.removed{ background: rgba(255,255,255,0) !important; box-shadow:none; cursor:not-allowed; pointer-events:none; } /* segment positions */ /* a (top) */ .seg.a{ top: 16px; left: 21px; } /* b (top-right) */ .seg.b{ top: 32px; left: 73px; width: var(--matchW); height: var(--matchL); } /* c (bottom-right) */ .seg.c{ top: 92px; left: 73px; width: var(--matchW); height: var(--matchL); } /* d (bottom) */ .seg.d{ top: 146px; left: 21px; } /* e (bottom-left) */ .seg.e{ top: 92px; left: 23px; width: var(--matchW); height: var(--matchL); } /* f (top-left) */ .seg.f{ top: 32px; left: 23px; width: var(--matchW); height: var(--matchL); } /* g (middle) */ .seg.g{ top: 81px; left: 21px; } .side{ padding:18px; display:flex; flex-direction:column; gap:14px; } .hint{ background: rgba(0,0,0,.18); border: 1px solid rgba(255,255,255,.08); border-radius: 16px; padding:14px; color: rgba(255,255,255,.9); font-size:13px; line-height:1.4; } .hint b{ color:#fff; } .removedBox{ background: rgba(0,0,0,.18); border: 1px solid rgba(255,255,255,.08); border-radius: 16px; padding:14px; min-height: 160px; display:flex; flex-direction:column; gap:10px; } .removedHeader{ display:flex; align-items:center; justify-content:space-between; gap:10px; } .removedHeader .label{ font-weight:800; font-size:13px; color: rgba(255,255,255,.92); } .removedHeader .count{ font-size:12px; color: var(--muted); white-space:nowrap; } .removedGrid{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; } .removedSeg{ width: 44px; height: 16px; border-radius: 999px; box-shadow: 0 8px 16px rgba(0,0,0,.25); border: 1px solid rgba(255,255,255,.12); } .footerNote{ font-size:12px; color: rgba(255,255,255,.7); line-height:1.35; } .mono{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono","Courier New", monospace; }