/*! Theme Name: AI Creative Studio Theme URI: https://locany.net/ai-creative-studio Author: Locany Author URI: https://locany.net Description: 超高速・ミニマル・コンバージョン重視のAIサービス提供企業向けWordPressテーマ。Core Web Vitals 95点以上を目標に設計。Developed by Locany. Version: 1.2.1 Requires at least: 6.0 Tested up to: 6.4 Requires PHP: 8.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: ai-creative-studio Tags: custom-colors, custom-menu, editor-style, featured-images, full-width-template, translation-ready, one-column, two-columns, custom-background, custom-header, custom-logo, threaded-comments, block-styles, wide-blocks */ /* ======================================== CSS Variables - デザインシステム ======================================== */ :root { /* カラースキーム */ --color-primary: #1e40af; --color-primary-dark: #1e3a8a; --color-primary-light: #3b82f6; --color-accent: #f59e0b; --color-accent-dark: #d97706; --color-text: #1f2937; --color-text-light: #6b7280; --color-background: #ffffff; --color-background-alt: #f9fafb; --color-border: #e5e7eb; /* タイポグラフィ */ --font-primary: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --font-heading: var(--font-primary); /* フォントサイズ(流動的タイポグラフィ) */ --font-size-sm: clamp(0.875rem, 0.8rem + 0.375vw, 1rem); --font-size-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem); --font-size-lg: clamp(1.125rem, 1rem + 0.625vw, 1.5rem); --font-size-xl: clamp(1.5rem, 1.3rem + 1vw, 2.25rem); --font-size-2xl: clamp(2rem, 1.6rem + 2vw, 3.5rem); /* スペーシング */ --spacing-xs: 0.5rem; --spacing-sm: 1rem; --spacing-md: 1.5rem; --spacing-lg: 2rem; --spacing-xl: 3rem; --spacing-2xl: 4rem; /* レイアウト */ --container-max: 1200px; --content-width: 65ch; --header-height: 80px; /* その他 */ --border-radius: 0.5rem; --transition-base: 0.2s ease-in-out; --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); } /* ======================================== リセット & 基本スタイル ======================================== */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; scroll-behavior: smooth; } body { font-family: var(--font-primary); font-size: var(--font-size-base); line-height: 1.7; color: var(--color-text); background-color: var(--color-background); overflow-x: hidden; } img { max-width: 100%; height: auto; display: block; } /* ======================================== タイポグラフィ ======================================== */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); font-weight: 700; line-height: 1.2; color: var(--color-text); margin-bottom: var(--spacing-md); } h1 { font-size: var(--font-size-2xl); } h2 { font-size: var(--font-size-xl); } h3 { font-size: var(--font-size-lg); } h4 { font-size: var(--font-size-base); } p { margin-bottom: var(--spacing-md); max-width: var(--content-width); } a { color: var(--color-primary); text-decoration: none; transition: color var(--transition-base); } a:hover, a:focus { color: var(--color-primary-dark); text-decoration: underline; } a:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; } /* ======================================== レスポンシブグリッドシステム ======================================== */ .container { width: 100%; max-width: var(--container-max); margin-left: auto; margin-right: auto; padding-left: var(--spacing-md); padding-right: var(--spacing-md); } .grid { display: grid; gap: var(--spacing-lg); } .grid-2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); } .grid-3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); } @media (min-width: 768px) { .grid-2 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(3, 1fr); } } .flex { display: flex; gap: var(--spacing-md); } .flex-center { align-items: center; justify-content: center; } .flex-between { align-items: center; justify-content: space-between; } /* ======================================== 基本レイアウト ======================================== */ .site { display: flex; flex-direction: column; min-height: 100vh; } .site-header { height: var(--header-height); background-color: rgba(255, 255, 255, 0.95); border-bottom: 1px solid var(--color-border); position: sticky; top: 0; z-index: 1000; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); } .site-main { flex: 1; padding: var(--spacing-2xl) 0; } .site-footer { background-color: var(--color-text); color: var(--color-background); padding: var(--spacing-2xl) 0 var(--spacing-lg); margin-top: var(--spacing-2xl); } /* ======================================== コンポーネント ======================================== */ /* ヘッダー */ .header-inner { height: var(--header-height); display: flex; align-items: center; justify-content: space-between; } .site-title { font-size: var(--font-size-lg); font-weight: 800; letter-spacing: -0.025em; } .site-title a { color: var(--color-primary); } /* ナビゲーション */ .main-navigation ul { display: flex; list-style: none; gap: var(--spacing-lg); margin: 0; padding: 0; } .main-navigation a { font-weight: 600; padding: var(--spacing-xs) var(--spacing-sm); border-radius: calc(var(--border-radius) / 2); transition: background-color var(--transition-base); } .main-navigation a:hover { background-color: var(--color-background-alt); text-decoration: none; } /* ボタン */ .btn { display: inline-block; padding: 0.75rem 1.5rem; font-size: var(--font-size-base); font-weight: 600; text-align: center; text-decoration: none; border: none; border-radius: var(--border-radius); cursor: pointer; transition: all var(--transition-base); line-height: 1.5; background-color: var(--color-primary); color: var(--color-background); } .btn:hover, .btn:focus { background-color: var(--color-primary-dark); text-decoration: none; transform: translateY(-2px); box-shadow: var(--shadow-lg); } .btn-accent { background-color: var(--color-accent); color: var(--color-text); } .btn-accent:hover, .btn-accent:focus { background-color: var(--color-accent-dark); color: var(--color-text); } /* 投稿カード */ .post-card { border: 1px solid var(--color-border); border-radius: var(--border-radius); overflow: hidden; transition: transform var(--transition-base), box-shadow var(--transition-base); background-color: var(--color-background); } .post-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); } .post-content { padding: var(--spacing-md); } .entry-title { font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); } .entry-title a { color: var(--color-text); } .entry-title a:hover { color: var(--color-primary); } .entry-meta { font-size: var(--font-size-sm); color: var(--color-text-light); margin-bottom: var(--spacing-sm); } /* ページネーション */ .pagination { margin-top: var(--spacing-xl); text-align: center; } .pagination .nav-links { display: flex; justify-content: center; gap: var(--spacing-sm); flex-wrap: wrap; } .pagination a, .pagination span { padding: var(--spacing-xs) var(--spacing-sm); border-radius: var(--border-radius); border: 1px solid var(--color-border); transition: all var(--transition-base); } .pagination a:hover { background-color: var(--color-primary); color: var(--color-background); text-decoration: none; } .pagination .current { background-color: var(--color-primary); color: var(--color-background); } /* ======================================== WordPress コアスタイル ======================================== */ .alignleft { float: left; margin-right: var(--spacing-md); margin-bottom: var(--spacing-md); } .alignright { float: right; margin-left: var(--spacing-md); margin-bottom: var(--spacing-md); } .aligncenter { display: block; margin-left: auto; margin-right: auto; margin-bottom: var(--spacing-md); } .wp-caption { max-width: 100%; } .wp-caption-text { font-size: var(--font-size-sm); color: var(--color-text-light); margin-top: var(--spacing-xs); text-align: center; } /* ======================================== ユーティリティクラス ======================================== */ .text-center { text-align: center; } .text-left { text-align: left; } .text-right { text-align: right; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } /* ======================================== テンプレート追加スタイル ======================================== */ /* パンくずリスト */ .breadcrumb { margin-bottom: var(--spacing-lg); padding: var(--spacing-sm) 0; border-bottom: 1px solid var(--color-border); } .breadcrumb-list { display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; gap: var(--spacing-xs); } .breadcrumb-item { display: flex; align-items: center; font-size: var(--font-size-sm); } .breadcrumb-item:not(:last-child)::after { content: "/"; margin-left: var(--spacing-xs); color: var(--color-text-light); } .breadcrumb-item.active { color: var(--color-text-light); } /* モバイルメニュートグル */ .menu-toggle { display: none; background: none; border: none; cursor: pointer; padding: var(--spacing-xs); position: relative; z-index: 1001; } .menu-toggle-icon { display: flex; flex-direction: column; gap: 4px; width: 24px; } .menu-toggle-icon span { display: block; height: 2px; background-color: var(--color-text); transition: all var(--transition-base); } .menu-toggle[aria-expanded="true"] .menu-toggle-icon span:nth-child(1) { transform: rotate(45deg) translateY(7px); } .menu-toggle[aria-expanded="true"] .menu-toggle-icon span:nth-child(2) { opacity: 0; } .menu-toggle[aria-expanded="true"] .menu-toggle-icon span:nth-child(3) { transform: rotate(-45deg) translateY(-7px); } /* 投稿詳細ページ */ .single-post { max-width: 800px; margin: 0 auto; } .entry-header { margin-bottom: var(--spacing-xl); text-align: center; } .entry-categories { margin-bottom: var(--spacing-sm); } .category-badge { display: inline-block; padding: 0.25rem 0.75rem; background-color: var(--color-primary); color: var(--color-background); border-radius: calc(var(--border-radius) / 2); font-size: var(--font-size-sm); font-weight: 600; text-decoration: none; transition: background-color var(--transition-base); } .category-badge:hover { background-color: var(--color-primary-dark); text-decoration: none; } .entry-thumbnail { margin-bottom: var(--spacing-xl); border-radius: var(--border-radius); overflow: hidden; } .entry-content { margin-bottom: var(--spacing-xl); line-height: 1.8; } .entry-content h2 { margin-top: var(--spacing-xl); margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-sm); border-bottom: 2px solid var(--color-primary); } .entry-content h3 { margin-top: var(--spacing-lg); margin-bottom: var(--spacing-md); } .entry-tags { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); padding: var(--spacing-md) 0; border-top: 1px solid var(--color-border); } .tag-link { display: inline-block; padding: 0.25rem 0.5rem; background-color: var(--color-background-alt); border-radius: calc(var(--border-radius) / 2); font-size: var(--font-size-sm); transition: background-color var(--transition-base); } .tag-link:hover { background-color: var(--color-primary); color: var(--color-background); text-decoration: none; } /* 投稿ナビゲーション */ .post-navigation { margin: var(--spacing-xl) 0; } .post-navigation .nav-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--spacing-md); } .post-navigation a { display: block; padding: var(--spacing-md); border: 1px solid var(--color-border); border-radius: var(--border-radius); transition: all var(--transition-base); } .post-navigation a:hover { border-color: var(--color-primary); background-color: var(--color-background-alt); text-decoration: none; transform: translateY(-2px); } .nav-subtitle { display: block; font-size: var(--font-size-sm); color: var(--color-text-light); margin-bottom: var(--spacing-xs); } .nav-title { display: block; font-weight: 600; color: var(--color-text); } .nav-next { text-align: right; } /* ページコンテンツ */ .page-content { max-width: 900px; margin: 0 auto; } .entry-excerpt { font-size: var(--font-size-lg); color: var(--color-text-light); margin-bottom: var(--spacing-lg); } /* フッタースタイル */ .footer-widgets { padding: var(--spacing-2xl) 0 var(--spacing-xl); border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .footer-widget-area h2, .footer-widget-area h3 { color: var(--color-background); font-size: var(--font-size-lg); margin-bottom: var(--spacing-md); } .footer-widget-area ul { list-style: none; padding: 0; margin: 0; } .footer-widget-area a { color: rgba(255, 255, 255, 0.8); transition: color var(--transition-base); } .footer-widget-area a:hover { color: var(--color-background); } .footer-navigation { padding: var(--spacing-lg) 0; text-align: center; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .footer-menu { display: flex; justify-content: center; flex-wrap: wrap; gap: var(--spacing-md); list-style: none; margin: 0; padding: 0; } .footer-menu a { color: rgba(255, 255, 255, 0.8); font-size: var(--font-size-sm); } .site-info { padding: var(--spacing-lg) 0; text-align: center; font-size: var(--font-size-sm); } .site-info a { color: var(--color-background); } .copyright p { margin: 0; color: rgba(255, 255, 255, 0.8); } /* ======================================== Portfolio(実績)スタイル ======================================== */ /* 実績一覧ページ */ .portfolio-archive .page-header { text-align: center; margin-bottom: var(--spacing-2xl); padding: var(--spacing-xl) 0; background-color: var(--color-background-alt); border-radius: var(--border-radius); } .portfolio-archive .page-title { font-size: var(--font-size-2xl); margin-bottom: var(--spacing-md); } .archive-description { font-size: var(--font-size-lg); color: var(--color-text-light); max-width: 600px; margin: 0 auto; } /* フィルターナビゲーション */ .portfolio-filter { margin-bottom: var(--spacing-xl); text-align: center; } .filter-list { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--spacing-sm); list-style: none; margin: 0; padding: 0; } .filter-link { display: inline-block; padding: 0.75rem 1.5rem; border: 2px solid var(--color-border); border-radius: var(--border-radius); font-size: var(--font-size-sm); font-weight: 600; transition: all var(--transition-base); text-decoration: none; } .filter-link:hover, .filter-link.active { background-color: var(--color-primary); border-color: var(--color-primary); color: var(--color-background); transform: translateY(-2px); box-shadow: var(--shadow-md); } /* 実績カードグリッド */ .portfolio-grid { margin-bottom: var(--spacing-2xl); } .portfolio-card { background-color: var(--color-background); border-radius: var(--border-radius); overflow: hidden; transition: all var(--transition-base); box-shadow: var(--shadow-sm); height: 100%; display: flex; flex-direction: column; } .portfolio-card:hover { transform: translateY(-8px); box-shadow: var(--shadow-lg); } .portfolio-thumbnail { position: relative; overflow: hidden; aspect-ratio: 4 / 3; background-color: var(--color-background-alt); } .portfolio-thumbnail img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } .portfolio-card:hover .portfolio-thumbnail img { transform: scale(1.05); } .portfolio-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(30, 64, 175, 0.9); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity var(--transition-base); } .portfolio-card:hover .portfolio-overlay { opacity: 1; } .view-project { color: var(--color-background); font-weight: 600; font-size: var(--font-size-base); padding: 0.75rem 1.5rem; border: 2px solid var(--color-background); border-radius: calc(var(--border-radius) * 2); transition: all var(--transition-base); } .portfolio-overlay:hover .view-project { background-color: var(--color-background); color: var(--color-primary); } .portfolio-content { padding: var(--spacing-md); flex-grow: 1; display: flex; flex-direction: column; } .portfolio-categories { margin-bottom: var(--spacing-sm); } .portfolio-title { font-size: var(--font-size-lg); margin-bottom: var(--spacing-sm); line-height: 1.3; } .portfolio-title a { color: var(--color-text); transition: color var(--transition-base); text-decoration: none; } .portfolio-title a:hover { color: var(--color-primary); } .portfolio-client { font-size: var(--font-size-sm); color: var(--color-text-light); margin-bottom: var(--spacing-sm); } .portfolio-excerpt { font-size: var(--font-size-sm); margin-bottom: var(--spacing-sm); flex-grow: 1; } .portfolio-tech { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: auto; } .tech-tag { display: inline-block; padding: 0.25rem 0.5rem; background-color: var(--color-background-alt); border-radius: calc(var(--border-radius) / 2); font-size: 0.75rem; color: var(--color-text-light); border: 1px solid var(--color-border); } /* 実績詳細ページ */ .portfolio-single .portfolio-header { text-align: center; margin-bottom: var(--spacing-xl); padding: var(--spacing-xl) 0; } .portfolio-single .portfolio-title { font-size: var(--font-size-2xl); margin-bottom: var(--spacing-lg); line-height: 1.2; } .portfolio-meta-summary { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--spacing-lg); margin-top: var(--spacing-lg); } .meta-item { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; } .meta-label { font-size: var(--font-size-sm); color: var(--color-text-light); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; } .meta-value { font-size: var(--font-size-base); color: var(--color-text); font-weight: 600; } .portfolio-featured-image { margin-bottom: var(--spacing-2xl); border-radius: var(--border-radius); overflow: hidden; box-shadow: var(--shadow-lg); } .portfolio-details { display: grid; grid-template-columns: 1fr; gap: var(--spacing-2xl); margin-bottom: var(--spacing-2xl); } @media (min-width: 1024px) { .portfolio-details { grid-template-columns: 2fr 1fr; } } .portfolio-summary { background-color: var(--color-background-alt); padding: var(--spacing-xl); border-radius: var(--border-radius); margin-bottom: var(--spacing-xl); border-left: 4px solid var(--color-primary); } .portfolio-summary h2 { font-size: var(--font-size-xl); margin-bottom: var(--spacing-md); color: var(--color-primary); } .portfolio-sidebar { position: sticky; top: calc(var(--header-height) + var(--spacing-md)); height: fit-content; } .sidebar-section { background-color: var(--color-background-alt); padding: var(--spacing-lg); border-radius: var(--border-radius); margin-bottom: var(--spacing-lg); border: 1px solid var(--color-border); } .sidebar-section h3 { font-size: var(--font-size-lg); margin-bottom: var(--spacing-md); color: var(--color-text); } .tech-list { display: flex; flex-wrap: wrap; gap: 0.5rem; } .cta-section { background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%); color: var(--color-background); text-align: center; } .cta-section h3, .cta-section p { color: var(--color-background); } .cta-section .btn { background-color: var(--color-background); color: var(--color-primary); font-weight: 600; } .cta-section .btn:hover { background-color: var(--color-accent); color: var(--color-background); transform: translateY(-2px); } /* 関連実績 */ .related-portfolio { margin-top: var(--spacing-2xl); padding-top: var(--spacing-2xl); border-top: 2px solid var(--color-border); } .related-portfolio h2 { text-align: center; margin-bottom: var(--spacing-xl); font-size: var(--font-size-xl); } /* 実績ナビゲーション */ .portfolio-navigation { margin: var(--spacing-2xl) 0; } .portfolio-navigation .nav-links { display: grid; grid-template-columns: 1fr auto 1fr; gap: var(--spacing-lg); align-items: center; } .portfolio-navigation a { display: block; padding: var(--spacing-lg); border: 2px solid var(--color-border); border-radius: var(--border-radius); transition: all var(--transition-base); text-decoration: none; } .portfolio-navigation a:hover { border-color: var(--color-primary); background-color: var(--color-background-alt); transform: translateY(-2px); box-shadow: var(--shadow-md); } .nav-archive a { background-color: var(--color-primary); color: var(--color-background); border-color: var(--color-primary); text-align: center; font-weight: 600; } .nav-archive a:hover { background-color: var(--color-primary-dark); border-color: var(--color-primary-dark); } /* ======================================== Locany Custom Extensions Styles ======================================== */ /* お知らせエリア */ .aics-notification-area { font-weight: 600; font-size: var(--font-size-sm); padding: 0.75rem 0; text-align: center; position: relative; z-index: 999; } .notification-content { display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .notification-arrow { font-weight: bold; margin-left: 0.25rem; transition: transform var(--transition-base); } .aics-notification-area a:hover .notification-arrow { transform: translateX(3px); } /* AdSense・広告エリア */ .aics-adsense-area { margin: var(--spacing-xl) 0; text-align: center; background-color: var(--color-background-alt); border-radius: var(--border-radius); padding: var(--spacing-md); border: 1px solid var(--color-border); } .ad-label { font-size: 0.75rem; color: var(--color-text-light); margin-bottom: var(--spacing-xs); text-transform: uppercase; letter-spacing: 0.05em; } .aics-ad-after-title { margin-top: var(--spacing-lg); margin-bottom: var(--spacing-xl); } /* ======================================== スクロールアニメーション(全ブロック対応) ======================================== */ /* 初期状態:非表示(readyクラスに統一) */ .aics-animation-ready { opacity: 0; visibility: hidden; will-change: opacity, transform; } /* アニメーション完了状態:表示 */ .aics-animation-active { opacity: 1 !important; visibility: visible !important; } /* ======================================== 1. フェードイン ======================================== */ .is-style-aics-fade-in.aics-animation-ready { opacity: 0; } .is-style-aics-fade-in.aics-animation-active { animation: aicsFadeIn 0.8s ease-out forwards; } @keyframes aicsFadeIn { from { opacity: 0; } to { opacity: 1; } } /* ======================================== 2. 下からフワッと ======================================== */ .is-style-aics-fade-up.aics-animation-ready { opacity: 0; transform: translate3d(0, 30px, 0); } .is-style-aics-fade-up.aics-animation-active { animation: aicsFadeUp 0.8s ease-out forwards; } @keyframes aicsFadeUp { from { opacity: 0; transform: translate3d(0, 30px, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } /* ======================================== 3. 上からフワッと ======================================== */ .is-style-aics-fade-down.aics-animation-ready { opacity: 0; transform: translate3d(0, -30px, 0); } .is-style-aics-fade-down.aics-animation-active { animation: aicsFadeDown 0.8s ease-out forwards; } @keyframes aicsFadeDown { from { opacity: 0; transform: translate3d(0, -30px, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } /* ======================================== 4. 左からスライドイン ======================================== */ .is-style-aics-slide-left.aics-animation-ready { opacity: 0; transform: translate3d(-50px, 0, 0); } .is-style-aics-slide-left.aics-animation-active { animation: aicsSlideLeft 0.8s ease-out forwards; } @keyframes aicsSlideLeft { from { opacity: 0; transform: translate3d(-50px, 0, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } /* ======================================== 5. 右からスライドイン ======================================== */ .is-style-aics-slide-right.aics-animation-ready { opacity: 0; transform: translate3d(50px, 0, 0); } .is-style-aics-slide-right.aics-animation-active { animation: aicsSlideRight 0.8s ease-out forwards; } @keyframes aicsSlideRight { from { opacity: 0; transform: translate3d(50px, 0, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } /* ======================================== 6. ズームイン ======================================== */ .is-style-aics-zoom-in.aics-animation-ready { opacity: 0; transform: scale3d(0.9, 0.9, 1); } .is-style-aics-zoom-in.aics-animation-active { animation: aicsZoomIn 0.8s ease-out forwards; } @keyframes aicsZoomIn { from { opacity: 0; transform: scale3d(0.9, 0.9, 1); } to { opacity: 1; transform: scale3d(1, 1, 1); } } /* ======================================== 7. 回転フェードイン ======================================== */ .is-style-aics-rotate-in.aics-animation-ready { opacity: 0; transform: translate3d(0, 20px, 0) rotate3d(0, 0, 1, 10deg); } .is-style-aics-rotate-in.aics-animation-active { animation: aicsRotateIn 0.8s ease-out forwards; } @keyframes aicsRotateIn { from { opacity: 0; transform: translate3d(0, 20px, 0) rotate3d(0, 0, 1, 10deg); } to { opacity: 1; transform: translate3d(0, 0, 0) rotate3d(0, 0, 1, 0deg); } } /* ======================================== 8. バウンスイン ======================================== */ .is-style-aics-bounce-in.aics-animation-ready { opacity: 0; transform: scale3d(0.3, 0.3, 1); } .is-style-aics-bounce-in.aics-animation-active { animation: aicsBounceIn 0.9s cubic-bezier(0.215, 0.61, 0.355, 1) forwards; } @keyframes aicsBounceIn { 0% { opacity: 0; transform: scale3d(0.3, 0.3, 1); } 20% { transform: scale3d(1.1, 1.1, 1); } 40% { transform: scale3d(0.9, 0.9, 1); } 60% { opacity: 1; transform: scale3d(1.03, 1.03, 1); } 80% { transform: scale3d(0.97, 0.97, 1); } 100% { opacity: 1; transform: scale3d(1, 1, 1); } } /* ======================================== パフォーマンス最適化・アクセシビリティ対応 ======================================== */ /* ユーザーが動きを減らす設定の場合は即座に表示 */ @media (prefers-reduced-motion: reduce) { .aics-animation-ready, .aics-animation-active { opacity: 1 !important; visibility: visible !important; transform: none !important; animation: none !important; } } /* エディタ内では常に表示(編集しやすくするため) */ .editor-styles-wrapper [class*="is-style-aics-"] { opacity: 1 !important; visibility: visible !important; transform: none !important; animation: none !important; } /* ======================================== WordPress公式必須CSSクラス ======================================== */ .sticky { display: block; } .bypostauthor { display: block; } .gallery-caption { display: block; font-size: 0.875rem; color: #6b7280; text-align: center; margin-top: 0.5rem; } .screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; } .screen-reader-text:focus { background-color: #f1f1f1; border-radius: 3px; box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); clip: auto !important; -webkit-clip-path: none; clip-path: none; color: #21759b; display: block; font-size: 0.875rem; font-weight: bold; height: auto; left: 5px; line-height: normal; padding: 15px 23px 14px; text-decoration: none; top: 5px; width: auto; z-index: 100000; }