:root { --bg: #f2f4f8; --surface: #ffffff; --text: #12202f; --muted: #4b5968; --accent: #0a7f5a; --accent-2: #0c5ea8; --danger: #bf2f47; --border: #d6dde6; --shadow: 0 10px 24px rgba(17, 36, 57, 0.08); } * { box-sizing: border-box; } body { margin: 0; font-family: "Space Grotesk", sans-serif; color: var(--text); background: radial-gradient(circle at top right, #d9f0e7 0, transparent 30%), linear-gradient(160deg, #f5f7fa, #ebeff4); min-height: 100vh; } .tools-toggle-btn { position: fixed; top: 1rem; right: 1rem; z-index: 30; background: var(--accent-2); box-shadow: var(--shadow); } .tools-drawer { position: fixed; top: 0; right: 0; width: min(360px, 92vw); height: 100vh; background: #f9fbff; border-left: 1px solid var(--border); box-shadow: -8px 0 24px rgba(17, 36, 57, 0.14); padding: 1rem; transform: translateX(102%); transition: transform 180ms ease; z-index: 40; overflow: auto; } .tools-drawer.open { transform: translateX(0); } .tools-header { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; } .tools-header h2 { margin: 0; font-size: 1.05rem; } .tools-close-btn { padding: 0.45rem 0.7rem; } .tools-subtitle { margin: 0.6rem 0 0.9rem; color: var(--muted); font-size: 0.9rem; } .app-shell { width: min(1100px, 94vw); margin: 2rem auto; display: grid; gap: 1rem; } .hero, .panel { background: var(--surface); border: 1px solid var(--border); border-radius: 18px; box-shadow: var(--shadow); } .hero { padding: 1.2rem 1.4rem; background: linear-gradient(125deg, #f8fff7, #f4f8ff), var(--surface); } .eyebrow { margin: 0; color: var(--accent-2); font-weight: 700; text-transform: uppercase; font-size: 0.78rem; letter-spacing: 0.06em; } h1 { margin: 0.2rem 0 0.5rem; font-size: clamp(1.3rem, 2.5vw, 2rem); } .subtitle { margin: 0; color: var(--muted); } .panel { padding: 1rem; } .panel-header h2 { margin: 0 0 0.8rem; font-size: 1.1rem; } .data-mode { margin: -0.4rem 0 0.8rem; font-size: 0.82rem; color: var(--muted); } #migrateBtn { width: 100%; margin-bottom: 0.9rem; } .backup-controls { display: grid; gap: 0.5rem; margin-bottom: 0.9rem; } .grid-form { display: grid; gap: 0.7rem; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; margin-bottom: 0.9rem; } .game-form { grid-template-columns: repeat(4, minmax(0, 1fr)); } .checkbox-row { display: flex; align-items: center; gap: 0.5rem; min-height: 44px; margin-bottom: 2px; } .checkbox-row input[type="checkbox"] { width: auto; } label { display: grid; gap: 0.35rem; font-size: 0.9rem; color: var(--muted); } input { width: 100%; border: 1px solid var(--border); border-radius: 10px; padding: 0.65rem 0.7rem; font-family: inherit; font-size: 0.95rem; } input:focus { outline: 2px solid color-mix(in hsl, var(--accent-2), white 60%); outline-offset: 1px; } button { border: 0; border-radius: 10px; padding: 0.7rem 0.9rem; font-family: inherit; font-weight: 600; cursor: pointer; background: var(--accent); color: white; } .tabs { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.7rem; } .tab { background: #e9eef5; color: var(--text); display: inline-flex; align-items: center; gap: 0.45rem; } .count-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 1.45rem; height: 1.45rem; border-radius: 999px; padding: 0 0.35rem; font-size: 0.78rem; font-weight: 700; color: #173a5d; background: #d3e4f7; } .tab.active { background: var(--accent-2); color: #fff; } .tab.active .count-badge { background: color-mix(in hsl, white, transparent 25%); color: #ffffff; } .tabs.secondary .tab.active { background: var(--accent); } .games-list { display: grid; gap: 0.6rem; } .empty { color: var(--muted); font-style: italic; padding: 0.5rem 0; } .game-card { border: 1px solid var(--border); border-radius: 12px; padding: 0.85rem; display: flex; justify-content: space-between; gap: 0.8rem; align-items: center; } .game-card.editing { border-color: color-mix(in hsl, var(--accent-2), white 35%); box-shadow: 0 0 0 2px color-mix(in hsl, var(--accent-2), white 80%); } .game-title { margin: 0; font-size: 1rem; } .game-meta, .game-loan { margin: 0.25rem 0 0; color: var(--muted); font-size: 0.9rem; } .game-actions { display: grid; gap: 0.45rem; } .btn-inline { background: #dde8f5; color: #1e3045; padding: 0.45rem 0.65rem; font-size: 0.85rem; } .btn-inline.danger { background: #fbe7eb; color: var(--danger); } .btn-secondary { background: #dce4ee; color: #1b2d43; } .hidden { display: none; } @media (max-width: 900px) { .grid-form, .game-form { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 640px) { .grid-form, .game-form { grid-template-columns: 1fr; } .tools-toggle-btn { top: auto; bottom: 1rem; right: 1rem; } .game-card { align-items: flex-start; flex-direction: column; } .game-actions { width: 100%; grid-template-columns: 1fr 1fr; } }