/*! Theme Name: AI Creative Studio Theme URI: https://locany.net/ai-creative-studio-wordpress-theme/ Author: Locany Author URI: https://locany.net Description: 超高速・ミニマル・コンバージョン重視のAIサービス提供企業向けWordPressテーマ。Core Web Vitals 95点以上を目標に設計。Developed by Locany. Version: 1.3.5 Requires at least: 6.0 Tested up to: 6.7 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; } /* Content area links must be underlined */ .entry-content a, .entry-excerpt a, .comment-content a, .widget_text a { text-decoration: underline; } .entry-content a:hover, .entry-excerpt a:hover, .comment-content a:hover, .widget_text a:hover { text-decoration: underline; color: var(--color-primary-dark); } /* Exclude buttons and card links */ .entry-content .btn, .entry-content .post-card a, .entry-content .portfolio-card a, .entry-footer a, .category-badge, .tag-link { text-decoration: none; } /* ======================================== レスポンシブグリッドシステム ======================================== */ .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: relative; /* sticky から relative に変更 */ 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; } /* ======================================== v1.3.0 レイアウトシステム ======================================== */ /* 基本2カラムレイアウト */ @media (min-width: 1024px) { .content-layout { display: grid; grid-template-columns: 1fr 320px; gap: var(--spacing-xl); } } /* 1カラムレイアウト */ .layout-one-column .content-layout { display: block; max-width: 900px; margin: 0 auto; } .layout-one-column .widget-area { display: none; } /* サイドバースタイル */ .widget-area { background-color: var(--color-background); } .sidebar-inner { position: sticky; top: calc(var(--header-height) + var(--spacing-md)); } .widget { background-color: var(--color-background-alt); border: 1px solid var(--color-border); border-radius: var(--border-radius); padding: var(--spacing-md); margin-bottom: var(--spacing-lg); } .widget-title { font-size: var(--font-size-lg); margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-sm); border-bottom: 2px solid var(--color-primary); } .widget ul { list-style: none; padding: 0; } .widget li { padding: var(--spacing-xs) 0; border-bottom: 1px solid var(--color-border); } .widget li:last-child { border-bottom: none; } .widget a { color: var(--color-text); text-decoration: none; transition: color var(--transition-base); } .widget a:hover { color: var(--color-primary); } /* ======================================== v1.3.0 完全修正版レイアウトシステム ======================================== */ /* --- 基本コンテナ幅修正 --- */ .site-main .container { max-width: var(--container-max); width: 100%; margin: 0 auto; padding-left: var(--spacing-md); padding-right: var(--spacing-md); } /* --- 2カラムレイアウト(右サイドバー) --- */ @media (min-width: 1024px) { .layout-two-column-right .content-layout { display: grid; grid-template-columns: 1fr 320px; gap: var(--spacing-xl); max-width: var(--container-max); margin: 0 auto; } } /* --- 2カラムレイアウト(左サイドバー) --- */ @media (min-width: 1024px) { .layout-two-column-left .content-layout { display: grid; grid-template-columns: 320px 1fr; gap: var(--spacing-xl); max-width: var(--container-max); margin: 0 auto; } } /* --- 1カラムレイアウト --- */ .layout-one-column .content-layout { display: block; max-width: 900px; margin: 0 auto; } .layout-one-column .widget-area { display: none; } /* --- LPレイアウト --- */ .layout-lp .content-layout { display: block; max-width: 1200px; margin: 0 auto; } .layout-lp .widget-area { display: none; } /* --- コンテンツエリア --- */ .content-area { min-width: 0; /* グリッドオーバーフロー防止 */ } /* --- サイドバー --- */ .widget-area { background-color: transparent; } .sidebar-inner { position: sticky; top: calc(var(--header-height) + var(--spacing-md)); } .widget { background-color: var(--color-background-alt); border: 1px solid var(--color-border); border-radius: var(--border-radius); padding: var(--spacing-md); margin-bottom: var(--spacing-lg); } .widget-title { font-size: var(--font-size-lg); margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-sm); border-bottom: 2px solid var(--color-primary); } .widget ul { list-style: none; padding: 0; margin: 0; } .widget li { padding: var(--spacing-xs) 0; border-bottom: 1px solid var(--color-border); } .widget li:last-child { border-bottom: none; } .widget a { color: var(--color-text); text-decoration: none; transition: color var(--transition-base); } .widget a:hover { color: var(--color-primary); } /* --- ウィジェットエリア詳細スタイル --- */ /* ヘッダー右ウィジェット */ .header-widget-area { display: flex; align-items: center; margin-left: var(--spacing-md); } .header-widget-area .widget { background: none; border: none; margin: 0; padding: 0; } .header-widget-area .widget-title { display: none; } /* ヘッダー下ウィジェット */ .header-below-widget { background-color: var(--color-background-alt); border-bottom: 1px solid var(--color-border); padding: var(--spacing-md) 0; margin-bottom: var(--spacing-lg); } .header-below-widget .widget { background: none; border: none; margin-bottom: var(--spacing-md); } .header-below-widget .widget:last-child { margin-bottom: 0; } /* タイトル下ウィジェット */ .title-below-widget { margin: var(--spacing-md) 0; padding: var(--spacing-md); background-color: var(--color-background-alt); border-radius: var(--border-radius); border-left: 4px solid var(--color-accent); } .title-below-widget .widget { background: none; border: none; margin: 0; padding: 0; } /* 記事中盤ウィジェット */ .widget-content-middle { margin: var(--spacing-xl) 0; padding: var(--spacing-lg); background-color: var(--color-background-alt); border: 2px dashed var(--color-border); border-radius: var(--border-radius); text-align: center; } .widget-content-middle .widget { background: none; border: none; margin-bottom: var(--spacing-md); } .widget-content-middle .widget:last-child { margin-bottom: 0; } /* 記事下ウィジェット */ .content-below-widget { margin-top: var(--spacing-xl); padding: var(--spacing-lg); background-color: var(--color-background-alt); border-radius: var(--border-radius); border: 1px solid var(--color-border); } .content-below-widget .widget { background: none; border: none; margin-bottom: var(--spacing-md); } .content-below-widget .widget:last-child { margin-bottom: 0; } /* フッター上ウィジェット */ .footer-above-widget { background-color: var(--color-background-alt); padding: var(--spacing-xl) 0; margin-top: var(--spacing-2xl); border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); } .footer-above-widget .widget { background: none; border: none; } /* フッター右ウィジェット */ .copyright-wrapper { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--spacing-md); } .footer-right-widget { display: flex; align-items: center; gap: var(--spacing-md); } .footer-right-widget .widget { background: none; border: none; margin: 0; padding: 0; } .footer-right-widget .widget-title { display: none; } /* パンくずリスト */ .breadcrumb { margin-bottom: var(--spacing-lg); padding: var(--spacing-sm) 0; font-size: var(--font-size-sm); } .breadcrumb-nav { color: var(--color-text-light); } .breadcrumb-nav a { color: var(--color-text-light); text-decoration: none; transition: color var(--transition-base); } .breadcrumb-nav a:hover { color: var(--color-primary); text-decoration: underline; } .breadcrumb-nav .current { color: var(--color-text); font-weight: 600; } /* 投稿メタ情報 */ .entry-meta { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); margin-bottom: var(--spacing-md); font-size: var(--font-size-sm); color: var(--color-text-light); } .entry-meta a { color: var(--color-text-light); text-decoration: none; transition: color var(--transition-base); } .entry-meta a:hover { color: var(--color-primary); } /* --- レスポンシブ対応 --- */ @media (max-width: 1023px) { .content-layout { display: block !important; grid-template-columns: 1fr !important; } .widget-area { margin-top: var(--spacing-xl); border-top: 1px solid var(--color-border); padding-top: var(--spacing-lg); } .header-widget-area { display: none; } .copyright-wrapper { flex-direction: column; text-align: center; } } /* --- アクセシビリティ対応 --- */ @media (prefers-reduced-motion: reduce) { .widget { transition: none; } } /* --- 印刷対応 --- */ @media print { .widget-area, .header-widget-area, .header-below-widget, .footer-above-widget, .breadcrumb { display: none; } } /* ======================================== v1.3.1 レイアウト幅制限解除 ======================================== */ /* 2カラムレイアウト時のコンテンツ幅制限を解除 */ @media (min-width: 1024px) { .layout-two-column-right .content-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: var(--spacing-xl); align-items: start; } .layout-two-column-left .content-layout { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: var(--spacing-xl); align-items: start; } /* 2カラム時は段落の幅制限を解除 */ .layout-two-column-right .entry-content > *, .layout-two-column-left .entry-content > * { max-width: 100%; } /* コンテンツエリア全体の幅を確保 */ .layout-two-column-right .content-area, .layout-two-column-left .content-area { max-width: 100%; width: 100%; } } /* コンテナ最大幅を拡張 */ :root { --container-max: 1280px; } /* ======================================== LPレイアウト専用スタイル ======================================== */ /* LPレイアウト時は主要要素を非表示 */ body.layout-lp .site-header, body.layout-lp .site-footer { display: none !important; } body.layout-lp .breadcrumb, body.layout-lp .entry-header, body.layout-lp .entry-footer, body.layout-lp .post-navigation { display: none !important; } /* LPレイアウト時のウィジェットエリア制御 */ body.layout-lp .widget-area, body.layout-lp .header-below-widget, body.layout-lp .title-below-widget, body.layout-lp .footer-above-widget { display: none !important; } /* LPレイアウト時は横幅いっぱいを使用 */ body.layout-lp .site-main { padding: 0 !important; } body.layout-lp .container { max-width: 100% !important; padding: 0 !important; width: 100% !important; } body.layout-lp .content-layout { display: block; max-width: 100%; margin: 0; } body.layout-lp .content-area { max-width: 100%; width: 100%; } body.layout-lp .entry-content { margin: 0; max-width: 100%; width: 100%; } /* LPレイアウト時のブロック幅制御 */ body.layout-lp .entry-content > * { max-width: var(--container-max); margin-left: auto; margin-right: auto; padding-left: var(--spacing-md); padding-right: var(--spacing-md); } /* 全幅・幅広ブロック対応 */ body.layout-lp .entry-content > .alignwide { max-width: 1400px; } body.layout-lp .entry-content > .alignfull { max-width: 100% !important; padding: 0 !important; margin-left: 0 !important; margin-right: 0 !important; width: 100vw !important; } /* WordPressブロック対応 */ body.layout-lp .wp-block-group.alignfull, body.layout-lp .wp-block-cover.alignfull, body.layout-lp .wp-block-columns.alignfull { max-width: 100% !important; width: 100vw !important; } /* レスポンシブ対応 */ @media (max-width: 767px) { body.layout-lp .entry-content > * { padding-left: var(--spacing-sm); padding-right: var(--spacing-sm); } body.layout-lp .alignfull { width: 100% !important; } } /* ======================================== v1.3.2 レイアウト幅制限完全解除 ======================================== */ /* 2カラム時の本文幅制限を強制解除 */ @media (min-width: 1024px) { /* 2カラムレイアウト内の全要素の最大幅を100%にする */ .layout-two-column-right .entry-content > *, .layout-two-column-left .entry-content > *, .layout-two-column-right .entry-content p, .layout-two-column-left .entry-content p, .layout-two-column-right .entry-content ul, .layout-two-column-left .entry-content ul, .layout-two-column-right .entry-content ol, .layout-two-column-left .entry-content ol, .layout-two-column-right .entry-content blockquote, .layout-two-column-left .entry-content blockquote { max-width: 100% !important; } /* グリッドレイアウトの調整 */ .layout-two-column-right .content-layout { display: grid; grid-template-columns: 1fr 320px; gap: var(--spacing-xl); align-items: start; } .layout-two-column-left .content-layout { display: grid; grid-template-columns: 320px 1fr; gap: var(--spacing-xl); align-items: start; } .layout-two-column-right .content-area, .layout-two-column-left .content-area { min-width: 0; /* グリッドオーバーフロー防止 */ max-width: 100%; } } /* LPレイアウトの全幅強制 */ .container-lp { width: 100% !important; max-width: 100% !important; padding: 0 !important; margin: 0 !important; } .container-lp .content-layout, .container-lp .content-area { max-width: 100% !important; width: 100% !important; margin: 0 !important; padding: 0 !important; } .container-lp .entry-content { max-width: 100% !important; width: 100% !important; margin: 0 !important; padding: 0 !important; } /* LP内の通常ブロック:中央寄せで適切な余白 */ .container-lp .entry-content > *:not(.alignwide):not(.alignfull) { max-width: var(--container-max); margin-left: auto; margin-right: auto; padding-left: var(--spacing-lg); padding-right: var(--spacing-lg); } /* LP内の全幅ブロック:画面端まで */ .container-lp .entry-content > .alignfull, .container-lp .wp-block-group.alignfull, .container-lp .wp-block-cover.alignfull { max-width: 100% !important; width: 100vw !important; margin-left: calc(50% - 50vw) !important; margin-right: calc(50% - 50vw) !important; padding: 0 !important; } /* LP内の幅広ブロック */ .container-lp .entry-content > .alignwide { max-width: 1400px; margin-left: auto; margin-right: auto; } /* ======================================== v1.3.3 2カラム本文幅完全拡大 ======================================== */ /* 2カラムレイアウト時の本文幅制限を完全解除 */ @media (min-width: 1024px) { /* bodyクラスを使用した高詳細度セレクタで確実に上書き */ body.layout-two-column-right .entry-content, body.layout-two-column-left .entry-content { max-width: 100% !important; width: 100% !important; } /* 全ての子要素の幅制限を解除 */ body.layout-two-column-right .entry-content > *, body.layout-two-column-right .entry-content p, body.layout-two-column-right .entry-content ul, body.layout-two-column-right .entry-content ol, body.layout-two-column-right .entry-content blockquote, body.layout-two-column-right .entry-content h2, body.layout-two-column-right .entry-content h3, body.layout-two-column-right .entry-content div, body.layout-two-column-left .entry-content > *, body.layout-two-column-left .entry-content p, body.layout-two-column-left .entry-content ul, body.layout-two-column-left .entry-content ol, body.layout-two-column-left .entry-content blockquote, body.layout-two-column-left .entry-content h2, body.layout-two-column-left .entry-content h3, body.layout-two-column-left .entry-content div { max-width: 100% !important; } /* グリッドレイアウトの最適化 */ body.layout-two-column-right .content-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; /* minmax(0, 1fr) で確実に伸長 */ gap: var(--spacing-xl); align-items: start; } body.layout-two-column-left .content-layout { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: var(--spacing-xl); align-items: start; } /* コンテンツエリアのオーバーフロー対策 */ body.layout-two-column-right .content-area, body.layout-two-column-left .content-area { min-width: 0; /* グリッドアイテムの縮小を許可 */ overflow-wrap: break-word; /* 長いテキストの折り返し */ } } /* サイドバーのsticky調整(ヘッダー追従なしの場合) */ .sidebar-inner { position: sticky; top: var(--spacing-md); /* ヘッダー高さ分の余白を削除 */ } /* ======================================== v1.3.4 アイコンメニュー最適化 ======================================== */ /* ヘッダー右ウィジェットエリアのレイアウト */ .header-widget-area { display: flex; align-items: center; gap: var(--spacing-md); margin-left: auto; } /* ウィジェット内の余計なスタイルをリセット */ .header-widget-area .widget { background: none !important; border: none !important; padding: 0 !important; margin: 0 !important; box-shadow: none !important; } .header-widget-area .widget-title { display: none !important; /* ウィジェットタイトルを完全非表示 */ } /* 画像ウィジェット用スタイル */ .header-widget-area .widget img { max-height: 40px; /* アイコン画像の高さ制限 */ width: auto; transition: all var(--transition-base); border-radius: calc(var(--border-radius) / 2); } .header-widget-area .widget img:hover { transform: translateY(-2px); opacity: 0.8; box-shadow: var(--shadow-sm); } /* テキストウィジェット・カスタムHTMLウィジェット用 */ .header-widget-area .textwidget, .header-widget-area .custom-html-widget { display: flex; gap: var(--spacing-md); align-items: center; } .header-widget-area .textwidget a, .header-widget-area .custom-html-widget a { display: inline-flex; align-items: center; text-decoration: none; transition: all var(--transition-base); } .header-widget-area .textwidget a:hover, .header-widget-area .custom-html-widget a:hover { transform: translateY(-2px); } /* 横並びリスト対応 */ .header-widget-area ul { display: flex !important; gap: var(--spacing-md); list-style: none !important; margin: 0 !important; padding: 0 !important; } .header-widget-area li { margin: 0 !important; padding: 0 !important; } /* レスポンシブ対応 */ @media (max-width: 767px) { .header-widget-area { gap: var(--spacing-sm); } .header-widget-area .widget img { max-height: 32px; /* モバイルでは少し小さく */ } } @media (max-width: 480px) { .header-inner { flex-wrap: wrap; justify-content: center; } .header-widget-area { width: 100%; justify-content: center; margin-left: 0; margin-top: var(--spacing-sm); } } /* ======================================== 2カラムレイアウト本文幅最適化 ======================================== */ @media (min-width: 1024px) { /* グリッドレイアウトの最適化 */ body.layout-two-column-right .content-layout { display: grid; grid-template-columns: 1fr 320px; /* 本文エリアに残り全幅を割り当て */ gap: var(--spacing-xl); max-width: 1280px; margin: 0 auto; } body.layout-two-column-left .content-layout { display: grid; grid-template-columns: 320px 1fr; gap: var(--spacing-xl); max-width: 1280px; margin: 0 auto; } /* コンテンツエリアの最適化 */ body.layout-two-column-right .content-area, body.layout-two-column-left .content-area { min-width: 0; /* グリッドオーバーフロー防止 */ max-width: 100%; } /* 2カラム時のみ幅制限を解除 */ body.layout-two-column-right .entry-content > *, body.layout-two-column-left .entry-content > * { max-width: 100%; } } /* 1カラム時は読みやすさのため幅制限を維持(オプション) */ body.layout-one-column .entry-content { max-width: var(--content-width); margin-left: auto; margin-right: auto; } /* ======================================== 2カラム本文幅 強制修正版 ======================================== */ @media (min-width: 1024px) { /* 2カラム時の幅制限を強制解除 */ body.layout-two-column-right .entry-content, body.layout-two-column-left .entry-content { max-width: 100% !important; width: 100% !important; } /* 全ての子要素の幅制限を強制解除 */ body.layout-two-column-right .entry-content > *, body.layout-two-column-right .entry-content p, body.layout-two-column-right .entry-content ul, body.layout-two-column-right .entry-content ol, body.layout-two-column-right .entry-content blockquote, body.layout-two-column-right .entry-content div, body.layout-two-column-left .entry-content > *, body.layout-two-column-left .entry-content p, body.layout-two-column-left .entry-content ul, body.layout-two-column-left .entry-content ol, body.layout-two-column-left .entry-content blockquote, body.layout-two-column-left .entry-content div { max-width: 100% !important; } /* コンテナ幅の最適化 */ .site-main .container { max-width: 1280px !important; width: 100% !important; } } /* ======================================== SNSシェアボタン バランス調整版 ======================================== */ /* 基本レイアウト */ .aics-sns-share.aics-sns-icons-large { margin: var(--spacing-lg) 0; padding: var(--spacing-lg); background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); border-radius: var(--border-radius); text-align: center; box-shadow: var(--shadow-sm); border: 1px solid var(--color-border); } .aics-sns-icons-large .share-label { font-size: var(--font-size-base); font-weight: 700; color: var(--color-text); margin-bottom: var(--spacing-md); text-transform: uppercase; letter-spacing: 0.05em; } .aics-sns-icons-large .share-buttons { display: flex; justify-content: center; gap: var(--spacing-md); flex-wrap: wrap; } /* PC(1024px以上): 控えめな42px */ .aics-sns-icons-large .share-icon { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1); text-decoration: none; position: relative; overflow: hidden; } .aics-sns-icons-large .share-icon svg { width: 20px; height: 20px; transition: transform 0.3s ease; } /* タブレット(768-1023px): 48px */ @media (min-width: 768px) and (max-width: 1023px) { .aics-sns-icons-large .share-icon { width: 48px; height: 48px; } .aics-sns-icons-large .share-icon svg { width: 22px; height: 22px; } } /* スマホ(767px以下): タップしやすい56px */ @media (max-width: 767px) { .aics-sns-icons-large .share-icon { width: 56px; height: 56px; } .aics-sns-icons-large .share-icon svg { width: 26px; height: 26px; } .aics-sns-share.aics-sns-icons-large { padding: var(--spacing-md); } .aics-sns-icons-large .share-buttons { gap: var(--spacing-sm); } } /* 小型スマホ(480px以下): 52px */ @media (max-width: 480px) { .aics-sns-icons-large .share-icon { width: 52px; height: 52px; } .aics-sns-icons-large .share-icon svg { width: 24px; height: 24px; } } /* ホバー効果 */ .aics-sns-icons-large .share-icon::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.2); opacity: 0; transition: opacity 0.3s ease; } .aics-sns-icons-large .share-icon:hover::before { opacity: 1; } .aics-sns-icons-large .share-icon:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); } .aics-sns-icons-large .share-icon:hover svg { transform: scale(1.1); } /* 各SNSのブランドカラー */ .share-twitter { background: linear-gradient(135deg, #000000 0%, #333333 100%); color: #ffffff; } .share-facebook { background: linear-gradient(135deg, #1877f2 0%, #0d5dbf 100%); color: #ffffff; } .share-line { background: linear-gradient(135deg, #06c755 0%, #05a647 100%); color: #ffffff; } /* ホバー時のグロー効果 */ .share-twitter:hover { box-shadow: 0 6px 12px rgba(0, 0, 0, 0.25); } .share-facebook:hover { box-shadow: 0 6px 12px rgba(24, 119, 242, 0.3); } .share-line:hover { box-shadow: 0 6px 12px rgba(6, 199, 85, 0.3); } /* アクセシビリティ対応 */ @media (prefers-reduced-motion: reduce) { .aics-sns-icons-large .share-icon, .aics-sns-icons-large .share-icon svg { transition: none; } .aics-sns-icons-large .share-icon:hover { transform: none; } } /* ======================================== 2カラム時の本文幅完全拡大(最終修正版) ======================================== */ /* 投稿ページ: 2カラム時は .single-post の幅制限を解除 */ @media (min-width: 1024px) { body.layout-two-column-right .single-post, body.layout-two-column-left .single-post { max-width: 100% !important; margin: 0; /* コンテナに任せる */ } /* 固定ページも同様に幅制限を解除 */ body.layout-two-column-right .page-content, body.layout-two-column-left .page-content { max-width: 100% !important; margin: 0; /* コンテナに任せる */ } /* グリッドレイアウトの確実な適用 */ body.layout-two-column-right .content-layout { display: grid !important; grid-template-columns: 1fr 320px !important; gap: var(--spacing-xl) !important; max-width: var(--container-max) !important; margin: 0 auto !important; } body.layout-two-column-left .content-layout { display: grid !important; grid-template-columns: 320px 1fr !important; gap: var(--spacing-xl) !important; max-width: var(--container-max) !important; margin: 0 auto !important; } } } /* ======================================== Archive & Search Pages ======================================== */ .page-header { margin-bottom: var(--spacing-xl); padding-bottom: var(--spacing-lg); border-bottom: 2px solid var(--color-border); } .page-title { font-size: var(--font-size-2xl); color: var(--color-text); margin-bottom: var(--spacing-sm); } .archive-description { color: var(--color-text-light); font-size: var(--font-size-base); line-height: 1.7; } .posts-list { display: grid; gap: var(--spacing-xl); margin-bottom: var(--spacing-xl); } .post-item { display: grid; gap: var(--spacing-lg); padding: var(--spacing-lg); background: var(--color-background); border: 1px solid var(--color-border); border-radius: var(--border-radius); transition: box-shadow 0.3s ease; } .post-item:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); } @media (min-width: 768px) { .post-item { grid-template-columns: 280px 1fr; } } .post-thumbnail { overflow: hidden; border-radius: var(--border-radius); } .post-thumbnail img { width: 100%; height: auto; object-fit: cover; transition: transform 0.3s ease; } .post-item:hover .post-thumbnail img { transform: scale(1.05); } .post-content { display: flex; flex-direction: column; gap: var(--spacing-md); } .entry-title a { color: var(--color-text); text-decoration: none; transition: color 0.3s ease; } .entry-title a:hover { color: var(--color-primary); } .entry-meta { display: flex; gap: var(--spacing-md); font-size: var(--font-size-sm); color: var(--color-text-light); } .entry-summary { color: var(--color-text); line-height: 1.7; } .read-more { display: inline-flex; align-items: center; gap: 0.5rem; color: var(--color-primary); text-decoration: none; font-weight: 500; transition: gap 0.3s ease; } .read-more:hover { gap: 0.75rem; } .read-more::after { content: '→'; } .no-posts, .no-results { padding: var(--spacing-xl); text-align: center; background: var(--color-background-alt); border-radius: var(--border-radius); } /* ======================================== 404 Page ======================================== */ .error-404 { padding: var(--spacing-xl) 0; text-align: center; } .error-404 .page-title { font-size: var(--font-size-3xl); color: var(--color-primary); margin-bottom: var(--spacing-lg); } .error-404 .page-content { max-width: 600px; margin: 0 auto; } .error-404 .page-content > p { font-size: var(--font-size-lg); margin-bottom: var(--spacing-xl); color: var(--color-text-light); } .search-form-wrapper { margin: var(--spacing-xl) 0; max-width: 500px; margin-left: auto; margin-right: auto; } .search-form { display: flex; gap: 0; border: 2px solid var(--color-border); border-radius: var(--border-radius); overflow: hidden; background: var(--color-background); } .search-form label { flex: 1; } .search-field { width: 100%; padding: var(--spacing-md); border: none; font-size: var(--font-size-base); outline: none; } .search-submit { padding: var(--spacing-md) var(--spacing-lg); background: var(--color-primary); color: white; border: none; cursor: pointer; transition: background 0.3s ease; display: flex; align-items: center; justify-content: center; } .search-submit:hover { background: var(--color-primary-dark); } .helpful-links { margin-top: var(--spacing-2xl); text-align: left; padding: var(--spacing-lg); background: var(--color-background-alt); border-radius: var(--border-radius); } .helpful-links h2 { font-size: var(--font-size-xl); margin-bottom: var(--spacing-md); color: var(--color-text); } .helpful-links ul { list-style: none; padding: 0; } .helpful-links ul li { margin-bottom: var(--spacing-sm); } .helpful-links ul ul { margin-left: var(--spacing-lg); margin-top: var(--spacing-sm); } .helpful-links a { color: var(--color-primary); text-decoration: none; transition: color 0.3s ease; } .helpful-links a:hover { color: var(--color-primary-dark); text-decoration: underline; } /* ======================================== Accessibility ======================================== */ @media (prefers-reduced-motion: reduce) { .post-thumbnail img, .read-more { transition: none; } .post-item:hover .post-thumbnail img { transform: none; } } /* ======================================== Print Styles ======================================== */ @media print { .breadcrumb, .search-form, .helpful-links, .read-more { display: none; } }