: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); } .games-toggle-btn { position: fixed; top: 4.4rem; right: 1rem; z-index: 30; background: #1e725b; 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); } .games-drawer { position: fixed; top: 0; right: 0; width: min(360px, 92vw); height: 100vh; background: #f9fff9; 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: 41; overflow: auto; } .games-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; } .quick-stats { display: grid; gap: 0.7rem; } .stat-card { margin: 0; padding: 0.75rem; border: 1px solid #d2e2d9; border-radius: 12px; background: #ffffff; } .stat-label { margin: 0 0 0.35rem; font-size: 0.86rem; color: var(--muted); } .stat-value { margin: 0; font-size: 1.5rem; font-weight: 700; color: #184537; } .storage-state { margin: 0 0 0.9rem; font-size: 0.88rem; font-weight: 600; color: #1e3d5d; background: #e5eef8; border: 1px solid #d2e0ef; border-radius: 10px; padding: 0.45rem 0.6rem; } .google-section { border-top: 1px solid var(--border); padding-top: 0.8rem; } .google-title { margin: 0 0 0.5rem; font-size: 0.98rem; } .google-state { margin: 0 0 0.7rem; font-size: 0.86rem; color: var(--muted); } .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); display: block; } .hero-copy { min-width: 0; } .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; } .search-zone { border: 1px solid var(--border); border-radius: 12px; padding: 0.75rem; margin-bottom: 0.9rem; background: #f9fbff; } .games-actions-bar { margin-bottom: 0.8rem; } .scanner-zone { border: 1px solid var(--border); border-radius: 12px; padding: 0.75rem; margin-bottom: 0.9rem; background: #f7fbf8; } .scanner-header { display: grid; gap: 0.2rem; } .scanner-header strong { font-size: 0.92rem; color: #19334a; } .scanner-status { margin: 0; font-size: 0.85rem; color: var(--muted); } .scanner-actions { display: flex; gap: 0.5rem; margin: 0.65rem 0; } .scanner-video { width: min(100%, 420px); border-radius: 10px; border: 1px solid #ccd8e6; background: #101820; display: block; } .scanner-last-code { margin: 0.6rem 0 0; font-size: 0.86rem; color: #204564; font-weight: 600; } .quick-search-results { margin-top: 0.65rem; display: grid; gap: 0.4rem; } .search-hit { border: 1px solid #d9e3ef; border-radius: 10px; padding: 0.5rem 0.6rem; background: #ffffff; } .search-hit strong { display: inline-block; margin-bottom: 0.15rem; } .search-hit p { margin: 0; font-size: 0.88rem; color: var(--muted); } .search-status { font-weight: 600; color: #1f4466; margin: 0; } .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-cover { width: 56px; height: 76px; border-radius: 8px; border: 1px solid #ccd8e6; object-fit: cover; background: #f0f4f9; flex-shrink: 0; } .game-main { min-width: 0; flex: 1; } .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; } .inline-editor { margin-top: 0.75rem; border-top: 1px dashed #ccd7e4; padding-top: 0.65rem; display: grid; gap: 0.45rem; grid-template-columns: repeat(2, minmax(0, 1fr)); } .inline-editor label { gap: 0.25rem; font-size: 0.82rem; } .inline-editor input { padding: 0.45rem 0.55rem; font-size: 0.9rem; } .inline-editor-actions { display: flex; gap: 0.45rem; align-items: center; } .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; } .games-toggle-btn { top: auto; bottom: 4.4rem; right: 1rem; } .game-card { align-items: flex-start; flex-direction: column; } .inline-editor { grid-template-columns: 1fr; } .game-cover { width: 48px; height: 64px; } .game-actions { width: 100%; grid-template-columns: 1fr 1fr; } }