.preview-container { position: relative; padding: 1rem; min-height: 100px; display: flex; align-items: center; justify-content: center; background: repeating-conic-gradient(#80808010 0% 25%, transparent 0% 50%) 50% / 20px 20px; } .preview-container img { max-width: 100%; max-height: 300px; height: auto; object-fit: contain; } .effect-grid { display: grid; gap: 1rem; margin-top: 2rem; } /* 横書き時のグリッドレイアウト */ .effect-grid:not([data-vertical="true"]) { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } /* 縦書き時のグリッドレイアウト */ .effect-grid[data-vertical="true"] { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } .effect-item { border: 1px solid #dee2e6; border-radius: 0.5rem; padding: 1rem; text-align: center; display: flex; flex-direction: column; } .effect-name { font-size: 1.1rem; margin-bottom: 1rem; font-weight: 500; } .effect-item.error { border-color: #ffcdd2; } .text-danger { color: #dc3545; } /* エフェクトレンダリング用のスタイル */ .effect-renderer { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; } .effect-renderer canvas { position: absolute; top: 0; left: 0; } /* パーティクルエフェクト用のスタイル */ .particle-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; } /* 3Dエフェクト用のスタイル */ .three-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; } /* アニメーションエフェクト用のスタイル */ @keyframes sparkle { 0%, 100% { opacity: 0; } 50% { opacity: 1; } } @keyframes fire { 0% { transform: translateY(0) scale(1); } 100% { transform: translateY(-20px) scale(0.8); opacity: 0; } } @keyframes electric { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } @keyframes underwater { 0% { transform: translateY(0) translateX(0); } 50% { transform: translateY(-10px) translateX(5px); } 100% { transform: translateY(0) translateX(0); } } .btn-check-wrapper { display: inline-block; margin: 2px; } .btn-check-wrapper .btn { margin: 0; white-space: nowrap; } #fontTagFilter { display: flex; flex-direction: column; gap: 1rem; width: 100%; } #fontTagFilter .btn { border-radius: 0.25rem; font-size: 0.875rem; padding: 0.25rem 0.5rem; } /* チェックされた状態のスタイル */ .btn-check:checked + .btn-outline-primary { background-color: #0d6efd; color: white; } .btn-check:checked + .btn-outline-success { background-color: #198754; color: white; } .filter-group { margin-bottom: 1rem; width: 100%; } .filter-group-label { font-size: 0.875rem; font-weight: 600; color: #6c757d; margin-bottom: 0.5rem; } .btn-group-wrapper { display: flex; flex-wrap: wrap; gap: 0.25rem; } .tag-count { font-size: 0.75rem; opacity: 0.8; } /* ボタンのホバー時もタグカウントの視認性を保持 */ .btn-check:checked + .btn-outline-primary .tag-count, .btn-outline-primary:hover .tag-count { opacity: 1; } /* ポストプロセスのスタイル */ #postProcessContainer .card { border: 1px solid rgba(0,0,0,.125); transition: border-color 0.2s ease-in-out; } #postProcessContainer .card:hover { border-color: rgba(0,0,0,.3); } #postProcessContainer .card-header { background-color: rgba(0,0,0,.03); padding: 0.75rem 1rem; } #postProcessContainer .card-body { padding: 1rem; } #postProcessContainer .form-check { width: 100%; } #postProcessContainer .form-check-label { font-weight: 500; cursor: pointer; } #postProcessContainer .form-range { margin-top: 0.5rem; } #postProcessContainer .range-value { text-align: center; font-size: 0.875rem; color: #6c757d; margin-top: 0.25rem; }