:root { color-scheme: dark; --bg: #0d1318; --bg-mid: #101921; --bg-end: #18232d; --panel: rgba(19, 28, 36, 0.9); --panel-strong: rgba(24, 35, 45, 0.98); --ink: #edf4f8; --muted: #9fb0bc; --line: rgba(203, 221, 233, 0.1); --ok: #72e2a6; --ok-soft: rgba(50, 132, 86, 0.26); --bad: #ff9f93; --bad-soft: rgba(170, 61, 54, 0.28); --accent-a: rgba(61, 110, 170, 0.32); --accent-b: rgba(26, 167, 122, 0.18); --accent-c: rgba(255, 174, 102, 0.12); --shadow: 0 24px 60px rgba(0, 0, 0, 0.35); --button-bg: rgba(237, 244, 248, 0.08); --button-hover: rgba(237, 244, 248, 0.14); --backdrop: rgba(6, 10, 13, 0.72); } [data-theme="light"] { color-scheme: light; --bg: #f4efe7; --bg-mid: #fbf8f3; --bg-end: #eef4ea; --panel: rgba(255, 252, 247, 0.92); --panel-strong: rgba(255, 252, 247, 0.98); --ink: #1f2933; --muted: #52606d; --line: rgba(31, 41, 51, 0.08); --ok: #1f7a4c; --ok-soft: #d7f5e5; --bad: #b42318; --bad-soft: #fee4e2; --accent-a: rgba(213, 231, 247, 0.9); --accent-b: rgba(220, 232, 200, 0.9); --accent-c: rgba(248, 217, 182, 0.9); --shadow: 0 24px 60px rgba(31, 41, 51, 0.12); --button-bg: rgba(31, 41, 51, 0.04); --button-hover: rgba(31, 41, 51, 0.08); --backdrop: rgba(31, 41, 51, 0.42); } * { box-sizing: border-box; } body { margin: 0; font-family: "Avenir Next", "Segoe UI", sans-serif; color: var(--ink); background: radial-gradient(circle at top left, var(--accent-c), transparent 28%), radial-gradient(circle at top right, var(--accent-a), transparent 24%), linear-gradient(160deg, var(--bg), var(--bg-mid) 48%, var(--bg-end)); min-height: 100vh; } body.modal-open { overflow: hidden; } .shell { min-height: 100vh; padding: 20px; display: flex; flex-direction: column; } .modal-close:focus-visible { outline: 2px solid var(--muted); outline-offset: 3px; } .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; flex: 1; align-content: start; } .tile { background: var(--panel); border: 1px solid var(--line); border-radius: 24px; padding: 22px; box-shadow: 0 10px 30px rgba(31, 41, 51, 0.08); backdrop-filter: blur(10px); transform: translateY(0); opacity: 1; display: flex; flex-direction: column; cursor: pointer; transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease; } .tile-enter { transform: translateY(10px); opacity: 0; animation: rise 500ms ease forwards; } .tile:hover { transform: translateY(-2px); box-shadow: 0 16px 36px rgba(31, 41, 51, 0.14); } .tile:focus-visible { outline: 2px solid var(--muted); outline-offset: 4px; } @keyframes rise { to { transform: translateY(0); opacity: 1; } } .row { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .name { margin: 14px 0 8px; font-size: 1.3rem; letter-spacing: -0.03em; } .tile:hover .name, .tile:focus-visible .name { text-decoration: underline; } .category, .modal-kicker { color: var(--muted); } .pill { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 999px; font-weight: 700; font-size: 0.9rem; } .pill.ok { background: var(--ok-soft); color: var(--ok); } .pill.bad { background: var(--bad-soft); color: var(--bad); } .dot { width: 10px; height: 10px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 6px rgba(255,255,255,0.4); } .stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 18px; } .stat { padding: 12px; border-radius: 16px; background: var(--button-bg); } .label { display: block; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); margin-bottom: 6px; } .value { font-size: 1rem; font-weight: 700; } .modal-backdrop { position: fixed; inset: 0; background: var(--backdrop); display: flex; align-items: center; justify-content: center; padding: 20px; z-index: 20; } .modal-backdrop.hidden { display: none; } .modal { width: min(760px, 100%); max-height: min(85vh, 900px); overflow: auto; background: var(--panel-strong); border: 1px solid var(--line); border-radius: 28px; box-shadow: var(--shadow); padding: 24px; } .modal-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; } .modal-title { margin: 6px 0 0; font-size: clamp(1.6rem, 4vw, 2.4rem); letter-spacing: -0.04em; } .modal-close { border: 1px solid var(--line); background: var(--button-bg); color: var(--ink); border-radius: 999px; padding: 10px 14px; cursor: pointer; font: inherit; } .modal-close:hover { background: var(--button-hover); } .modal-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; } .modal-stat { padding: 14px; border-radius: 18px; background: var(--button-bg); } .modal-stat .value { display: block; font-size: 0.98rem; line-height: 1.5; word-break: break-word; } @media (max-width: 640px) { .shell { padding: 14px 14px 24px; } .tile { border-radius: 22px; } .grid { grid-template-columns: 1fr; } .modal { padding: 18px; border-radius: 22px; } .modal-header { flex-direction: column; } }