/*
 * AWS SAP学習リソース - kms-key-types 専用CSS
 * ページ固有のレイアウト・セクション・コンポーネントスタイル
 *
 * 自動生成日: 2026-01-11 18:19:02
 */

* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Segoe UI', 'Hiragino Kaku Gothic ProN', sans-serif;
            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
            min-height: 100vh;
            color: #e8e8e8;
            line-height: 1.8;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 40px 20px;
            background-color: transparent;
            box-shadow: none;
        }

        /* ヘッダー */
        .header {
            text-align: center;
            margin-bottom: 50px;
            padding: 40px;
            background: linear-gradient(135deg, rgba(255,193,7,0.2), rgba(255,152,0,0.2));
            border-radius: 20px;
            border: 2px solid rgba(255,193,7,0.3);
        }

        .header h1 {
            font-size: 2.5em;
            background: linear-gradient(135deg, #ffc107, #ff9800);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            margin-bottom: 15px;
        }

        .header .subtitle {
            font-size: 1.2em;
            color: #aaa;
        }

        /* 結論ファーストセクション */
        .conclusion-first {
            background: linear-gradient(135deg, rgba(76,175,80,0.2), rgba(56,142,60,0.2));
            border-radius: 20px;
            padding: 30px;
            margin-bottom: 40px;
            border-left: 5px solid #4caf50;
        }

        .conclusion-first h2 {
            color: #81c784;
            font-size: 1.5em;
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .quick-summary {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
        }

        .quick-item {
            background: rgba(255,255,255,0.05);
            padding: 20px;
            border-radius: 12px;
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .quick-icon {
            font-size: 2.5em;
        }

        .quick-text h3 {
            color: #ffc107;
            margin-bottom: 5px;
        }

        .quick-text h4 {
            color: #ffc107;
            margin-bottom: 5px;
        }

        /* たとえ話セクション */
        .analogy-section {
            background: linear-gradient(135deg, rgba(156,39,176,0.15), rgba(103,58,183,0.15));
            border-radius: 20px;
            padding: 30px;
            margin-bottom: 40px;
            border: 2px solid rgba(156,39,176,0.3);
        }

        .analogy-section h2 {
            color: #ce93d8;
            font-size: 1.8em;
            margin-bottom: 25px;
            text-align: center;
        }

        .analogy-intro {
            text-align: center;
            font-size: 1.1em;
            margin-bottom: 30px;
            padding: 20px;
            background: rgba(255,255,255,0.05);
            border-radius: 15px;
        }

        .analogy-cards {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
            gap: 25px;
        }

        .analogy-card {
            background: rgba(255,255,255,0.08);
            border-radius: 20px;
            padding: 25px;
            transition: all 0.3s ease;
            border: 2px solid transparent;
        }

        .analogy-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 15px 40px rgba(0,0,0,0.3);
        }

        .analogy-card.hotel {
            border-color: rgba(33,150,243,0.5);
        }

        .analogy-card.apartment {
            border-color: rgba(255,152,0,0.5);
        }

        .analogy-card.house {
            border-color: rgba(76,175,80,0.5);
        }

        .analogy-header {
            display: flex;
            align-items: center;
            gap: 15px;
            margin-bottom: 20px;
        }

        .analogy-emoji {
            font-size: 3em;
        }

        .analogy-title h3 {
            font-size: 1.3em;
            margin-bottom: 5px;
        }

        .analogy-title .aws-name {
            font-size: 0.9em;
            color: #aaa;
        }

        .analogy-card.hotel .analogy-title h3 { color: #64b5f6; }
        .analogy-card.apartment .analogy-title h3 { color: #ffb74d; }
        .analogy-card.house .analogy-title h3 { color: #81c784; }

        .analogy-content {
            background: rgba(0,0,0,0.2);
            padding: 20px;
            border-radius: 12px;
            margin-bottom: 15px;
        }

        .analogy-point {
            display: flex;
            align-items: flex-start;
            gap: 10px;
            margin-bottom: 12px;
        }

        .analogy-point:last-child {
            margin-bottom: 0;
        }

        .analogy-point-icon {
            font-size: 1.2em;
        }

        .control-level {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 15px;
            background: rgba(255,255,255,0.05);
            border-radius: 10px;
        }

        .control-bar {
            flex: 1;
            height: 12px;
            background: rgba(255,255,255,0.1);
            border-radius: 6px;
            overflow: hidden;
        }

        .control-fill {
            height: 100%;
            border-radius: 6px;
            transition: width 0.5s ease;
        }

        .control-fill.low {
            width: 10%;
            background: linear-gradient(90deg, #f44336, #e91e63);
        }

        .control-fill.medium {
            width: 50%;
            background: linear-gradient(90deg, #ff9800, #ffc107);
        }

        .control-fill.high {
            width: 100%;
            background: linear-gradient(90deg, #4caf50, #8bc34a);
        }

        /* 詳細比較セクション */
        .comparison-section {
            margin-bottom: 40px;
        }

        .comparison-section h2 {
            text-align: center;
            font-size: 1.8em;
            margin-bottom: 30px;
            color: #ffc107;
        }

        .comparison-table-wrapper {
            overflow-x: auto;
            border-radius: 15px;
            background: rgba(255,255,255,0.05);
        }

        .comparison-table {
            width: 100%;
            border-collapse: collapse;
            min-width: 800px;
        }

        .comparison-table th,
        .comparison-table td {
            padding: 18px 15px;
            text-align: left;
            border-bottom: 1px solid rgba(255,255,255,0.1);
        }

        .comparison-table th {
            background: linear-gradient(135deg, rgba(255,193,7,0.3), rgba(255,152,0,0.3));
            font-weight: 600;
            color: #fff;
        }

        .comparison-table th:first-child {
            border-radius: 15px 0 0 0;
        }

        .comparison-table th:last-child {
            border-radius: 0 15px 0 0;
        }

        .comparison-table tr:hover {
            background: rgba(255,255,255,0.05);
        }

        .comparison-table td:first-child {
            font-weight: 600;
            color: #ce93d8;
        }

        .badge {
            display: inline-block;
            padding: 4px 12px;
            border-radius: 20px;
            font-size: 0.85em;
            font-weight: 500;
        }

        .badge-blue { background: rgba(33,150,243,0.3); color: #fff; }
        .badge-orange { background: rgba(255,152,0,0.3); color: #fff; }
        .badge-green { background: rgba(76,175,80,0.3); color: #fff; }
        .badge-red { background: rgba(244,67,54,0.3); color: #fff; }
        .badge-purple { background: rgba(156,39,176,0.3); color: #fff; }

        /* キー詳細セクション */
        .key-details {
            margin-bottom: 40px;
        }

        .key-details h2 {
            text-align: center;
            font-size: 1.8em;
            margin-bottom: 30px;
            color: #64b5f6;
        }

        .key-detail-cards {
            display: flex;
            flex-direction: column;
            gap: 30px;
        }

        .key-detail-card {
            background: rgba(255,255,255,0.05);
            border-radius: 20px;
            overflow: hidden;
        }

        .key-detail-header {
            padding: 25px;
            display: flex;
            align-items: center;
            gap: 20px;
        }

        .key-detail-header.aws-owned {
            background: linear-gradient(135deg, rgba(33,150,243,0.3), rgba(3,169,244,0.3));
        }

        .key-detail-header.aws-managed {
            background: linear-gradient(135deg, rgba(255,152,0,0.3), rgba(255,193,7,0.3));
        }

        .key-detail-header.customer-managed {
            background: linear-gradient(135deg, rgba(76,175,80,0.3), rgba(139,195,74,0.3));
        }

        .key-detail-icon {
            font-size: 3em;
        }

        .key-detail-title h3 {
            font-size: 1.5em;
            margin-bottom: 5px;
            color: #fff;
        }

        .key-detail-title p {
            color: #aaa;
        }

        .key-detail-body {
            padding: 25px;
        }

        .feature-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 20px;
            margin-bottom: 20px;
        }

        .feature-item {
            background: rgba(255,255,255,0.05);
            padding: 20px;
            border-radius: 12px;
        }

        .feature-item h4 {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 10px;
            color: #ffc107;
        }

        .use-cases {
            background: rgba(156,39,176,0.1);
            padding: 20px;
            border-radius: 12px;
            border-left: 4px solid #ce93d8;
        }

        .use-cases h4 {
            color: #ce93d8;
            margin-bottom: 15px;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .use-case-list {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
        }

        .use-case-item {
            background: rgba(255,255,255,0.1);
            padding: 8px 16px;
            border-radius: 20px;
            font-size: 0.9em;
        }

        /* 選び方フローチャート */
        .flowchart-section {
            background: linear-gradient(135deg, rgba(0,188,212,0.15), rgba(0,150,136,0.15));
            border-radius: 20px;
            padding: 30px;
            margin-bottom: 40px;
        }

        .flowchart-section h2 {
            text-align: center;
            color: #4dd0e1;
            font-size: 1.8em;
            margin-bottom: 30px;
        }

        .flowchart {
            display: flex;
            flex-direction: column;
            gap: 20px;
            max-width: 700px;
            margin: 0 auto;
        }

        .flow-step {
            display: flex;
            align-items: center;
            gap: 20px;
        }

        .flow-question {
            background: linear-gradient(135deg, #2196f3, #03a9f4);
            padding: 20px 25px;
            border-radius: 15px;
            flex: 1;
            text-align: center;
            font-weight: 600;
        }

        .flow-arrow {
            font-size: 2em;
            color: #4dd0e1;
        }

        .flow-answers {
            display: flex;
            gap: 15px;
            justify-content: center;
            flex-wrap: wrap;
        }

        .flow-answer {
            padding: 15px 25px;
            border-radius: 12px;
            text-align: center;
            min-width: 200px;
        }

        .flow-answer.yes {
            background: linear-gradient(135deg, rgba(76,175,80,0.3), rgba(139,195,74,0.3));
            border: 2px solid #4caf50;
        }

        .flow-answer.no {
            background: linear-gradient(135deg, rgba(255,152,0,0.3), rgba(255,193,7,0.3));
            border: 2px solid #ff9800;
        }

        .flow-answer.simple {
            background: linear-gradient(135deg, rgba(33,150,243,0.3), rgba(3,169,244,0.3));
            border: 2px solid #2196f3;
        }

        .flow-result {
            font-weight: 600;
            margin-top: 8px;
        }

        .flow-result.green { color: #81c784; }
        .flow-result.orange { color: #ffb74d; }
        .flow-result.blue { color: #64b5f6; }

        /* ベストプラクティス */
        .best-practices {
            background: linear-gradient(135deg, rgba(233,30,99,0.15), rgba(156,39,176,0.15));
            border-radius: 20px;
            padding: 30px;
            margin-bottom: 40px;
        }

        .best-practices h2 {
            text-align: center;
            color: #f48fb1;
            font-size: 1.8em;
            margin-bottom: 25px;
        }

        .practice-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: 20px;
        }

        .practice-item {
            background: rgba(255,255,255,0.08);
            padding: 25px;
            border-radius: 15px;
            transition: all 0.3s ease;
        }

        .practice-item:hover {
            transform: translateY(-3px);
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        }

        .practice-item h3 {
            display: flex;
            align-items: center;
            gap: 10px;
            color: #f48fb1;
            margin-bottom: 12px;
        }

        .practice-item h4 {
            display: flex;
            align-items: center;
            gap: 10px;
            color: #f48fb1;
            margin-bottom: 12px;
        }

        /* FAQ */
        .faq-section {
            margin-bottom: 40px;
        }

        .faq-section h2 {
            text-align: center;
            font-size: 1.8em;
            margin-bottom: 30px;
            color: #ffb74d;
        }

        .faq-item {
            background: rgba(255,255,255,0.05);
            border-radius: 15px;
            margin-bottom: 15px;
            overflow: hidden;
        }

        .faq-question {
            padding: 20px 25px;
            cursor: pointer;
            display: flex;
            justify-content: space-between;
            align-items: center;
            font-weight: 600;
            transition: background 0.3s ease;
        }

        .faq-question:hover {
            background: rgba(255,255,255,0.05);
        }

        .faq-toggle {
            font-size: 1.5em;
            transition: transform 0.3s ease;
        }

        .faq-answer {
            padding: 0 25px;
            max-height: 0;
            overflow: hidden;
            transition: all 0.3s ease;
        }

        .faq-item.active .faq-answer {
            padding: 0 25px 20px;
            max-height: 500px;
        }

        .faq-item.active .faq-toggle {
            transform: rotate(45deg);
        }

        /* コスト比較 */
        .cost-section {
            background: rgba(255,255,255,0.05);
            border-radius: 20px;
            padding: 30px;
            margin-bottom: 40px;
        }

        .cost-section h2 {
            text-align: center;
            color: #81c784;
            font-size: 1.8em;
            margin-bottom: 25px;
        }

        .cost-cards {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: 20px;
        }

        .cost-card {
            background: rgba(255,255,255,0.05);
            padding: 25px;
            border-radius: 15px;
            text-align: center;
        }

        .cost-card h3 {
            margin-bottom: 15px;
            font-size: 1.2em;
            color: #fff;
        }

        .cost-card h4 {
            margin-bottom: 15px;
            font-size: 1.2em;
            color: #fff;
        }

        .cost-price {
            font-size: 2em;
            font-weight: 700;
            margin-bottom: 10px;
        }

        .cost-price.free { color: #81c784; }
        .cost-price.paid { color: #ffb74d; }

        .cost-note {
            font-size: 0.9em;
            color: #aaa;
        }

        /* フッター */
        .footer {
            text-align: center;
            padding: 30px;
            color: #9CA3AF;
            border-top: 1px solid rgba(255,255,255,0.1);
        }

        /* レスポンシブ */
        @media (max-width: 768px) {
            .header h1 {
                font-size: 1.8em;
            }

            .analogy-cards {
                grid-template-columns: 1fr;
            }

            .flow-step {
                flex-direction: column;
            }

            .flow-arrow {
                transform: rotate(90deg);
            }
        }