:root { --bg:#0b0b1e; --card:#14143a; --line:#2c2c66; --gold:#ffd84a; --txt:#eef0ff; --mut:#9aa0d0; --green:#58f878; --red:#ff6a6a; } * { box-sizing: border-box; } html, body { margin: 0; background: var(--bg); color: var(--txt); font: 14px/1.6 -apple-system, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; } a { color: var(--gold); text-decoration: none; } .top { position: sticky; top: 0; z-index: 5; display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; justify-content: space-between; padding: 10px 16px; background: #0b0b1ee8; border-bottom: 2px solid var(--gold); backdrop-filter: blur(6px); } .brand { font-weight: 700; color: var(--gold); font-size: 16px; } .brand small { color: var(--mut); font-weight: 400; font-size: 12px; margin-left: 6px; } nav a { margin-left: 12px; font-size: 13px; } main { max-width: 1120px; margin: 0 auto; padding: 16px; display: grid; gap: 16px; } .card { background: var(--card); border: 2px solid var(--line); border-radius: 4px; padding: 16px; box-shadow: 4px 4px 0 #000; } h2 { margin: 0 0 8px; font-size: 18px; color: var(--gold); } .muted { color: var(--mut); font-size: 13px; } .stage-wrap { display: flex; justify-content: center; background: #000; border: 2px solid #000; } .stage { position: relative; width: 100%; aspect-ratio: 16/9; max-height: 78vh; } .stage.portrait { aspect-ratio: 9/16; width: auto; height: min(78vh, 900px); max-width: 100%; } .stage canvas { width: 100%; height: 100%; display: block; image-rendering: pixelated; image-rendering: crisp-edges; background: #000; } .stage:fullscreen { max-height: none; height: 100vh; width: 100vw; display: flex; align-items: center; justify-content: center; background: #000; } .stage:fullscreen canvas { width: auto; height: auto; max-width: 100vw; max-height: 100vh; aspect-ratio: inherit; } .stage.landscape:fullscreen canvas { aspect-ratio: 16/9; width: min(100vw, 177.78vh); } .stage.portrait:fullscreen canvas { aspect-ratio: 9/16; height: min(100vh, 177.78vw); } .overlay { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; background: radial-gradient(#1a1440, #050510); text-align: center; padding: 16px; } .overlay.hide { display: none; } .ov-title { font-size: clamp(22px, 5vw, 40px); color: var(--gold); font-weight: 800; text-shadow: 3px 3px 0 #6a3a00, 6px 6px 0 #000; letter-spacing: 2px; } .ov-msg { color: var(--mut); } .bar { width: min(320px, 80%); height: 10px; background: #000; border: 2px solid var(--line); } .bar.wide { width: 100%; margin: 10px 0 6px; } .bar i { display: block; height: 100%; width: 0; background: repeating-linear-gradient(90deg, var(--gold) 0 8px, #e0a820 8px 10px); transition: width .2s; } .btn { font: inherit; cursor: pointer; background: var(--gold); color: #2a1600; border: 2px solid #000; box-shadow: 3px 3px 0 #000; padding: 6px 12px; font-weight: 700; border-radius: 2px; } .btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 #000; } .btn:disabled { opacity: .45; cursor: default; } .btn.ghost { background: #22225a; color: var(--txt); } .btn.ghost.on { background: var(--gold); color: #2a1600; } .btn.big { font-size: 18px; padding: 10px 22px; } .controls { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 10px; } .controls input[type=range] { flex: 1; min-width: 140px; accent-color: var(--gold); } .time { font-variant-numeric: tabular-nums; color: var(--mut); min-width: 92px; } .seg { display: flex; gap: 4px; } .chapters { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; } .chapters button { font: inherit; font-size: 12px; cursor: pointer; background: #1c1c4a; color: var(--txt); border: 1px solid var(--line); padding: 3px 8px; border-radius: 2px; } .chapters button.on { border-color: var(--gold); color: var(--gold); } .row { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; } label { display: flex; gap: 6px; align-items: center; color: var(--mut); } select { font: inherit; background: #0c0c28; color: var(--txt); border: 2px solid var(--line); padding: 4px 6px; } .chk { font-size: 13px; } #exOut a { display: inline-block; margin-top: 8px; } .cover-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; } .cover { background: #0c0c28; border: 1px solid var(--line); padding: 8px; display: flex; flex-direction: column; gap: 6px; } .cover canvas { width: 100%; height: auto; image-rendering: pixelated; display: block; } .cover .lbl { font-size: 13px; } .cover .lbl b { color: var(--gold); margin-right: 6px; } .pub-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; } .pub { background: #0c0c28; border: 1px solid var(--line); padding: 12px; display: flex; flex-direction: column; gap: 8px; } .pub h3 { margin: 0; color: var(--gold); font-size: 16px; } .pub .lim { color: var(--mut); font-size: 12px; font-weight: 400; margin-left: 6px; } .copyline { display: flex; gap: 6px; align-items: flex-start; } .copyline .txt { flex: 1; background: #050518; border: 1px solid var(--line); padding: 6px 8px; white-space: pre-wrap; word-break: break-all; font-size: 13px; } .copyline .txt.long { max-height: 180px; overflow: auto; } .copyline .cnt { font-size: 11px; color: var(--green); min-width: 46px; text-align: right; padding-top: 6px; } .copyline .cnt.bad { color: var(--red); } .copyline .btn { padding: 4px 8px; font-size: 12px; } .k { font-size: 12px; color: var(--mut); } .years { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; margin: 8px 0 12px; } .yr { background: #0c0c28; border: 1px solid var(--line); padding: 8px; font-size: 12px; } .yr b { color: var(--gold); } .pos { color: var(--green); } .neg { color: var(--red); } .tbl-wrap { max-height: 420px; overflow: auto; margin-top: 8px; } table { border-collapse: collapse; width: 100%; font-size: 12px; font-variant-numeric: tabular-nums; } th, td { border-bottom: 1px solid var(--line); padding: 4px 6px; text-align: right; } th { position: sticky; top: 0; background: var(--card); color: var(--gold); } td:first-child, th:first-child, td:nth-child(2), th:nth-child(2) { text-align: left; } summary { cursor: pointer; color: var(--gold); } footer { text-align: center; padding: 8px 0 24px; } .toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); background: var(--gold); color: #2a1600; padding: 8px 16px; border: 2px solid #000; box-shadow: 3px 3px 0 #000; font-weight: 700; opacity: 0; pointer-events: none; transition: opacity .2s; z-index: 9; } .toast.show { opacity: 1; } @media (max-width: 640px) { main { padding: 8px; } .card { padding: 10px; } nav { display: none; } .stage.portrait { height: min(80vh, 160vw); } } .live-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; } .live { background: #0c0c28; border: 1px solid var(--line); padding: 8px; display: flex; flex-direction: column; gap: 6px; } .live video { width: 100%; aspect-ratio: 3/4; background: #000; display: block; } .live .lbl { font-size: 13px; } .live .lbl b { color: var(--gold); margin-right: 4px; } .live .acts { display: flex; gap: 6px; flex-wrap: wrap; } .live .acts a { font-size: 12px; padding: 4px 8px; } .livephoto { background:#0c0c28; border:1px solid var(--gold); padding:12px; margin-bottom:14px; } .livephoto h3 { margin:0 0 8px; color:var(--gold); font-size:16px; } .livephoto ol { margin:8px 0 0; padding-left:20px; }