:root { --ops-green: #124b3d; --ops-green-2: #2e7d67; --ops-yellow: #f6ca63; --ops-coral: #ed704c; --ops-blue: #6d91ca; --ops-violet: #9a7bc1; }
.ops-shell { max-width: 1460px; }
.ops-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; padding: 34px 8px 22px; }
.ops-hero h1 { margin: 4px 0 10px; font: 700 clamp(34px, 5vw, 58px)/1.05 Georgia, "Noto Serif SC", serif; color: var(--ink); }
.ops-hero p:last-child { max-width: 760px; margin: 0; color: var(--muted); }
.hero-pulse { min-width: 245px; padding: 17px 19px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,255,255,.72); box-shadow: 0 14px 38px rgba(21,62,51,.08); }
.hero-pulse span { display: inline-block; width: 9px; height: 9px; margin-right: 7px; border-radius: 50%; background: #37a67f; box-shadow: 0 0 0 6px rgba(55,166,127,.12); }
.hero-pulse strong { font-size: 14px; }
.hero-pulse small { display: block; margin: 6px 0 0 17px; color: var(--muted); }
.ops-toolbar { position: sticky; top: 10px; z-index: 8; display: flex; align-items: center; gap: 16px; padding: 14px 18px; margin-bottom: 18px; background: rgba(255,255,255,.9); backdrop-filter: blur(14px); }
.ops-period-shortcuts { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 5px; padding: 4px; border: 1px solid var(--line); border-radius: 12px; background: #f2f6f3; }
.ops-period-button { min-height: 34px; padding: 0 15px; border: 0; border-radius: 9px; background: transparent; color: var(--muted); font: inherit; font-size: 13px; font-weight: 750; white-space: nowrap; cursor: pointer; }
.ops-period-button:hover { color: var(--ops-green); }
.ops-period-button.active { background: var(--ops-green); color: #fff; box-shadow: 0 6px 16px rgba(18,75,61,.16); }
.ops-toolbar label { display: flex; align-items: center; gap: 9px; font-weight: 700; white-space: nowrap; }
.ops-toolbar select { min-height: 40px; padding: 0 34px 0 12px; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--ink); }
#opsStatus { margin-left: auto; color: var(--muted); font-size: 13px; }
.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 18px 0; }
.metric { position: relative; overflow: hidden; min-height: 132px; padding: 19px; border: 1px solid var(--line); border-radius: 18px; background: #fff; box-shadow: 0 10px 30px rgba(21,62,51,.055); }
.metric::after { content: ""; position: absolute; right: -18px; bottom: -25px; width: 75px; height: 75px; border-radius: 50%; background: var(--metric-tint, rgba(46,125,103,.08)); }
.metric span { display: block; color: var(--muted); font-size: 12px; letter-spacing: .02em; }
.metric strong { display: block; margin-top: 9px; font: 700 31px/1.1 Georgia, serif; color: var(--ink); }
.metric small { display: block; margin-top: 10px; color: var(--muted); font-size: 11px; }
.metric small.up { color: #258361; }.metric small.down { color: var(--coral); }.metric small.neutral { color: var(--muted); }
.dashboard-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 14px; }
.chart-card { grid-column: span 2; min-width: 0; padding: 22px; }
.chart-card.chart-wide { grid-column: span 3; }
.chart-card header, .table-card header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.chart-card h2, .table-card h2 { margin: 2px 0 0; font-size: 18px; }
.section-kicker { margin: 0; color: var(--coral); font-size: 10px; font-weight: 800; letter-spacing: .13em; }
.chart-hint { color: var(--muted); font-size: 11px; }
.chart-stage { min-height: 250px; }
.chart-stage svg { display: block; width: 100%; height: 250px; overflow: visible; }
.chart-grid-line { stroke: #e8eee9; stroke-width: 1; }
.chart-axis-label { fill: #84928c; font: 600 10px system-ui, sans-serif; }
.chart-area { opacity: .1; }
.chart-line { fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.chart-dot { stroke: #fff; stroke-width: 2; }
.chart-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 9px; color: var(--muted); font-size: 11px; }
.chart-legend i { display: inline-block; width: 9px; height: 9px; margin-right: 5px; border-radius: 50%; }
.empty-chart { display: grid; place-items: center; color: var(--muted); font-size: 13px; }
.funnel { display: flex; flex-direction: column; gap: 10px; }
.funnel-row { display: grid; grid-template-columns: 74px 1fr 52px; align-items: center; gap: 10px; font-size: 12px; }
.funnel-track { height: 34px; border-radius: 9px; background: #eef3ef; overflow: hidden; }
.funnel-fill { display: flex; align-items: center; min-width: 8px; height: 100%; padding-left: 10px; border-radius: inherit; color: white; font-weight: 800; background: linear-gradient(90deg, var(--ops-green), var(--ops-green-2)); }
.funnel-row small { text-align: right; color: var(--muted); }
.rank-list { display: flex; flex-direction: column; gap: 12px; }
.rank-row { display: grid; grid-template-columns: minmax(72px, .8fr) 2fr 52px; align-items: center; gap: 10px; font-size: 12px; }
.rank-label { overflow: hidden; color: var(--ink); text-overflow: ellipsis; white-space: nowrap; }
.rank-track { height: 9px; overflow: hidden; border-radius: 99px; background: #edf1ee; }
.rank-fill { height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--ops-yellow), var(--ops-coral)); }
.rank-value { text-align: right; color: var(--muted); font-variant-numeric: tabular-nums; }
.breakdown { display: grid; grid-template-columns: 126px 1fr; align-items: center; gap: 18px; }
.donut { position: relative; width: 126px; aspect-ratio: 1; border-radius: 50%; background: conic-gradient(#e8eee9 0 100%); }
.donut::after { content: ""; position: absolute; inset: 25px; border-radius: 50%; background: #fff; }
.donut-center { position: absolute; z-index: 1; inset: 0; display: grid; place-content: center; text-align: center; }
.donut-center strong { font: 700 22px Georgia, serif; }.donut-center small { color: var(--muted); font-size: 10px; }
.legend-list { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.legend-row { display: grid; grid-template-columns: 10px minmax(0,1fr) auto; align-items: center; gap: 7px; font-size: 11px; }
.legend-row i { width: 9px; height: 9px; border-radius: 3px; }.legend-row span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.legend-row b { color: var(--muted); }
.hour-chart { display: grid; grid-template-columns: repeat(24, minmax(8px, 1fr)); align-items: end; gap: 5px; min-height: 180px; padding-top: 20px; }
.hour-column { display: flex; flex-direction: column; justify-content: flex-end; align-items: center; height: 160px; gap: 7px; }
.hour-bar { width: 100%; min-height: 2px; border-radius: 5px 5px 2px 2px; background: linear-gradient(180deg, var(--ops-yellow), var(--ops-coral)); }
.hour-column small { color: var(--muted); font-size: 9px; transform: rotate(-55deg); transform-origin: center; }
.quality-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; width: 100%; }
.quality-item { padding: 12px; border-radius: 12px; background: #f5f8f5; }
.quality-item span { display: block; color: var(--muted); font-size: 10px; }.quality-item strong { display: block; margin-top: 3px; font: 700 21px Georgia, serif; }
.quality-item.good strong { color: #258361; }.quality-item.warn strong { color: var(--coral); }
.table-card { padding: 24px; margin-top: 14px; }
.table-scroll { overflow: auto; }
.table-scroll table { width: 100%; border-collapse: collapse; white-space: nowrap; }
.table-scroll th, .table-scroll td { padding: 12px; border-bottom: 1px solid var(--line); text-align: right; font-size: 12px; }
.table-scroll th:first-child, .table-scroll td:first-child { position: sticky; left: 0; z-index: 1; text-align: left; background: #fff; }
.table-scroll tbody tr:hover, .table-scroll tbody tr:hover td:first-child { background: #f6faf7; }
.ops-note-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.ops-note-grid .legal-card { margin: 0; }
@media (max-width: 1100px) {
  .metric-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .chart-card, .chart-card.chart-wide { grid-column: span 3; }
}
@media (max-width: 760px) {
  .ops-hero { align-items: stretch; flex-direction: column; }.hero-pulse { min-width: 0; }
  .ops-toolbar { position: static; align-items: stretch; flex-direction: column; }
  .ops-period-shortcuts { display: grid; grid-template-columns: 1fr 1fr; }
  .ops-toolbar label { justify-content: space-between; }#opsStatus { margin-left: 0; }
  .metric-grid { grid-template-columns: 1fr 1fr; }.dashboard-grid { display: block; }.chart-card { margin-bottom: 14px; }
  .breakdown { grid-template-columns: 105px 1fr; }.donut { width: 105px; }
  .hour-chart { gap: 2px; }.hour-column small { display: none; }
  .ops-note-grid { grid-template-columns: 1fr; }
}
@media (max-width: 460px) { .metric-grid { grid-template-columns: 1fr; }.funnel-row { grid-template-columns: 64px 1fr 45px; }.chart-card { padding: 18px; } }

.game-analytics-card{grid-column:1/-1}.game-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.game-stat{padding:24px;background:#f4f7f3;border:1px solid #e2e9e2;border-radius:20px}.game-stat h3{margin:0 0 20px;font-size:22px;color:#124b3d}.game-stat dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 14px;margin:0}.game-stat dt{font-size:13px;color:#697b73}.game-stat dd{margin:6px 0 0;font-size:26px;font-weight:700;color:#124b3d;overflow-wrap:anywhere}.game-stat p,.game-note{font-size:13px;line-height:1.8;color:#748279}.game-stat p{margin:22px 0 0}.game-note{margin:18px 0 0}@media(max-width:760px){.game-summary{grid-template-columns:1fr}.game-stat{padding:18px}.game-stat dl{grid-template-columns:repeat(2,minmax(0,1fr))}}
