/* dance.html deltas on top of live.css — same comic-panel visual language, loaded after live.css so these rules win. Only what dance.html actually needs differently: a boxed 9:16 player (T13) and the wardrobe grid (T16). Everything else (topbar, clip-row, qrow/up-btn, nickname modal, mobile sub-tabs) is reused as-is from live.css. */ /* dance.html's video is a fixed 480x832 (9:16) product, not the arbitrary aspect ratio live.html's text-prompt clips can end up at — box it to that ratio and center it instead of letting it stretch edge-to-edge on a wide desktop viewport. */ .player-wrap { aspect-ratio: 9 / 16; max-width: 100%; max-height: 100%; margin: auto; width: auto; height: 100%; } @media (max-width: 768px) { .player-wrap { height: auto; width: 100%; } } .wardrobe-tabs { display: flex; gap: 8px; padding: 0 2px 4px; } .wardrobe-tabs button { flex: 1; font: bold 12px Tahoma, sans-serif; background: #fff; border: 3px solid #000; color: var(--ink); border-radius: 12px; padding: 7px 4px; box-shadow: var(--shadow-sm); cursor: pointer; } .wardrobe-tabs button.active { background: var(--accent); } .wardrobe-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; } .wardrobe-card { color: var(--ink); background: #fff; border: 3px solid #000; border-radius: 14px; padding: 6px; box-shadow: var(--shadow); cursor: pointer; text-align: center; } .wardrobe-card:active { transform: translate(2px, 2px); box-shadow: 2px 2px 0 #000; } .wardrobe-card img { width: 100%; height: 90px; object-fit: cover; border-radius: 8px; margin-bottom: 4px; display: block; } .wardrobe-card .name { font-size: 12px; font-weight: bold; line-height: 1.3; } .wardrobe-card.disabled { opacity: .5; cursor: default; } .coming-soon { color: var(--muted); text-align: center; margin-top: 40px; font-size: 13px; font-weight: bold; padding: 0 12px; } /* T28: 传衣服 (mode 2) upload panel — same comic-panel language as .wardrobe-card, laid out as a simple vertical form instead of a grid. */ .upload-panel { padding: 8px 4px; } .upload-panel .hint { font-size: 12px; color: var(--muted); margin-bottom: 10px; line-height: 1.5; } .upload-panel input[type="file"] { width: 100%; font-size: 12px; margin-bottom: 10px; } .upload-panel .price-line { font: bold 13px Tahoma, sans-serif; margin-bottom: 10px; } .upload-panel button { width: 100%; font: bold 13px Tahoma, sans-serif; background: var(--accent); border: 3px solid #000; color: var(--ink); border-radius: 12px; padding: 8px 4px; box-shadow: var(--shadow-sm); cursor: pointer; } .upload-panel button:disabled { opacity: .5; cursor: default; } .upload-panel .upload-error { color: #c0392b; font: bold 12px Tahoma, sans-serif; margin-top: 8px; } .upload-panel .upload-status { font: bold 12px Tahoma, sans-serif; margin-top: 8px; } /* T37: paid_boost 插队播放跟模式一/二的"生成中"要有视觉区别 */ .upload-panel .upload-status.boosted { color: #b8860b; background: #fff7d6; border: 2px solid #000; border-radius: 8px; padding: 6px 8px; } .upload-panel select { width: 100%; font-size: 12px; margin-bottom: 10px; padding: 4px; } .upload-panel .field-label { font: bold 12px Tahoma, sans-serif; margin-bottom: 4px; display: block; } /* T29: balance pill + topup tier picker (reuses .nickname-modal/.nickname-box) */ .credit-pill { font: bold 12px Tahoma, sans-serif; } .topup-tier { display: flex; justify-content: space-between; align-items: center; border: 3px solid #000; border-radius: 12px; padding: 8px 10px; margin-bottom: 8px; box-shadow: var(--shadow-sm); } .topup-tier .credits { font: bold 14px Tahoma, sans-serif; } .topup-tier button { font: bold 12px Tahoma, sans-serif; background: var(--accent); border: 3px solid #000; border-radius: 10px; padding: 5px 10px; cursor: pointer; } .topup-banner { text-align: center; font: bold 13px Tahoma, sans-serif; padding: 8px; margin: 0 0 10px; border-radius: 10px; } .topup-banner.success { background: #d4f7d4; } .topup-banner.cancelled { background: #f7e4d4; } .age-box .age-disclaimer { font-size: 12px; line-height: 1.6; color: #444; font-weight: normal; }