.story-detail-page { max-width: 900px; margin: 0 auto; padding: 2rem; } .back-link { display: inline-block; color: #888; text-decoration: none; margin-bottom: 1.5rem; transition: color 0.2s; } .back-link:hover { color: #667eea; } .not-found { text-align: center; padding: 4rem; } .story-hero { position: relative; border-radius: 20px; overflow: hidden; margin-bottom: 2rem; min-height: 280px; } .hero-bg { position: absolute; inset: 0; background: linear-gradient(135deg, #2d1f3d 0%, #1a1a2e 100%); background-size: cover; background-position: center; } .hero-bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient( to top, rgba(26, 26, 26, 0.95) 0%, rgba(26, 26, 26, 0.4) 100% ); } .hero-content { position: relative; z-index: 1; padding: 3rem 2rem; display: flex; flex-direction: column; justify-content: flex-end; min-height: 280px; } .hero-badges { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem; } .hero-genres { display: flex; gap: 0.5rem; margin-bottom: 1rem; } .nsfw-hero-badge { padding: 0.4rem 1rem; background: linear-gradient(135deg, #ff4757 0%, #ff6b6b 100%); color: white; border-radius: 20px; font-size: 0.85rem; font-weight: 700; box-shadow: 0 2px 10px rgba(255, 71, 87, 0.4); } .genre-badge { padding: 0.35rem 1rem; background: rgba(102, 126, 234, 0.3); color: #a0b4ff; border-radius: 20px; font-size: 0.85rem; font-weight: 500; } .hero-content h1 { font-size: 2.5rem; margin: 0 0 0.5rem; background: linear-gradient(135deg, #fff 0%, #ccc 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .hero-setting { color: #aaa; font-size: 1.1rem; margin: 0; } .hero-settings { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.5rem; } .setting-badge { padding: 0.3rem 0.8rem; background: rgba(255, 179, 71, 0.2); color: #ffb347; border-radius: 12px; font-size: 0.85rem; } .story-details { background: #1a1a1a; border-radius: 20px; padding: 2rem; border: 1px solid #333; } .detail-section { margin-bottom: 2rem; padding-bottom: 2rem; border-bottom: 1px solid #333; } .detail-section:last-of-type { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .detail-section h2 { color: #fff; font-size: 1.3rem; margin-bottom: 1rem; } .detail-section p { color: #bbb; line-height: 1.7; } .protagonist-card { background: #222; border-radius: 12px; padding: 1.5rem; } .protagonist-card h3 { color: #667eea; margin: 0 0 1rem; font-size: 1.2rem; } .protagonist-card p { margin-bottom: 1rem; } .abilities { margin-top: 1rem; } .abilities strong { color: #fff; display: block; margin-bottom: 0.5rem; } .abilities-list { display: flex; flex-wrap: wrap; gap: 0.5rem; } .ability-tag { padding: 0.35rem 0.75rem; background: rgba(118, 75, 162, 0.2); color: #c9a0ff; border-radius: 8px; font-size: 0.85rem; } .world-rules { margin-top: 1.5rem; } .world-rules strong { color: #fff; display: block; margin-bottom: 0.5rem; } .world-rules ul { margin: 0; padding-left: 1.5rem; color: #aaa; } .world-rules li { margin-bottom: 0.5rem; } .session-info { background: rgba(102, 126, 234, 0.1); border-radius: 12px; padding: 1.5rem !important; border: 1px solid rgba(102, 126, 234, 0.3) !important; } .session-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 1rem; } .stat { text-align: center; padding: 1rem; background: rgba(0, 0, 0, 0.2); border-radius: 8px; } .stat-label { display: block; color: #888; font-size: 0.8rem; margin-bottom: 0.5rem; } .stat-value { display: block; color: #fff; font-size: 1.1rem; font-weight: 600; } .story-actions { display: flex; gap: 1rem; margin-top: 2rem; flex-wrap: wrap; } .action-btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.875rem 1.5rem; border: none; border-radius: 12px; font-size: 1rem; font-weight: 600; cursor: pointer; text-decoration: none; transition: all 0.2s; box-sizing: border-box; } .play-btn { flex: 1; min-width: 200px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; text-align: center; } .play-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 20px rgba(102, 126, 234, 0.4); } .edit-btn { background: #2a2a2a; color: #ccc; } .edit-btn:hover { background: #333; color: #fff; } .delete-btn { background: rgba(255, 107, 107, 0.1); color: #ff6b6b; border: 1px solid rgba(255, 107, 107, 0.3); } .delete-btn:hover { background: rgba(255, 107, 107, 0.2); } .story-meta-footer { display: flex; justify-content: space-between; margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid #333; font-size: 0.85rem; color: #666; } /* Персонажи */ .characters-grid { display: grid; gap: 1rem; } .character-item { background: #222; border-radius: 12px; padding: 1.25rem; border: 1px solid #333; } .character-item-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.75rem; } .character-item h4 { margin: 0; color: #fff; font-size: 1.1rem; } .role-badge { padding: 0.25rem 0.75rem; background: rgba(102, 126, 234, 0.2); color: #a0b4ff; border-radius: 20px; font-size: 0.75rem; font-weight: 500; } .character-item p { margin: 0; font-size: 0.9rem; } @media (max-width: 600px) { .story-detail-page { padding: 1rem; } .hero-content h1 { font-size: 1.8rem; } .story-actions { flex-direction: column; } .action-btn { text-align: center; } } /* Модальное окно выбора персонажа */ .character-select-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.85); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 1rem; } .character-select-modal { background: #1a1a1a; border-radius: 20px; padding: 2rem; max-width: 600px; width: 100%; max-height: 80vh; overflow-y: auto; border: 1px solid #333; } .character-select-modal h2 { margin: 0 0 0.5rem; color: #fff; font-size: 1.5rem; } .select-hint { color: #888; margin: 0 0 1.5rem; font-size: 0.95rem; } .character-select-grid { display: flex; flex-direction: column; gap: 0.75rem; margin-bottom: 1.5rem; } .character-select-card { display: flex; align-items: center; gap: 1rem; padding: 1rem; background: #222; border-radius: 12px; border: 2px solid transparent; cursor: pointer; transition: all 0.2s; position: relative; } .character-select-card:hover { border-color: #444; background: #2a2a2a; } .character-select-card.selected { border-color: #667eea; background: rgba(102, 126, 234, 0.1); } .character-select-card.favorite { border-color: rgba(255, 215, 0, 0.4); } .favorite-star { position: absolute; top: 0.5rem; right: 0.5rem; font-size: 1rem; } .character-select-avatar { width: 60px; height: 60px; border-radius: 50%; overflow: hidden; background: #333; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .character-select-avatar img { width: 100%; height: 100%; object-fit: cover; } .character-select-avatar span { font-size: 1.5rem; } .character-select-info { flex: 1; min-width: 0; } .character-select-info h4 { margin: 0 0 0.25rem; color: #fff; font-size: 1.1rem; } .character-select-info p { margin: 0; color: #888; font-size: 0.85rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .check-mark { position: absolute; right: 1rem; width: 28px; height: 28px; background: #667eea; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; font-size: 1rem; } .character-select-actions { display: flex; gap: 0.75rem; flex-wrap: wrap; } .character-select-actions .btn-cancel { padding: 0.75rem 1.25rem; background: #2a2a2a; color: #aaa; border: none; border-radius: 10px; cursor: pointer; font-size: 0.95rem; transition: all 0.2s; } .character-select-actions .btn-cancel:hover { background: #333; } .character-select-actions .btn-create { padding: 0.75rem 1.25rem; background: rgba(118, 75, 162, 0.2); color: #c9a0ff; border: 1px solid rgba(118, 75, 162, 0.4); border-radius: 10px; text-decoration: none; font-size: 0.95rem; transition: all 0.2s; } .character-select-actions .btn-create:hover { background: rgba(118, 75, 162, 0.3); } .character-select-actions .btn-confirm { flex: 1; padding: 0.75rem 1.25rem; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 10px; cursor: pointer; font-size: 0.95rem; font-weight: 600; transition: all 0.2s; } .character-select-actions .btn-confirm:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); } .character-select-actions .btn-confirm:disabled { opacity: 0.5; cursor: not-allowed; } /* Summary section */ .summary-section { text-align: center; padding: 1.5rem !important; background: rgba(102, 126, 234, 0.05); border-radius: 12px; margin-bottom: 2rem; border-bottom: none !important; } .summary-text { font-size: 1.15rem; font-style: italic; color: #ccc; margin: 0; line-height: 1.6; } /* Plot content */ .plot-content { color: #bbb; line-height: 1.8; } .plot-content p { margin-bottom: 1rem; } .plot-content p:last-child { margin-bottom: 0; }