LogoMaker / styles.css
SenY's picture
postprocessのUI整理
1387b4f
raw
history blame
4.19 kB
.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 {
background: #f8f9fa;
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 {
background: #fff3f3;
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;
}