/* ========== リセット・基本設定 ========== */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', 'Noto Sans JP', Meiryo, sans-serif;
font-size: 16px;
line-height: 1.8;
color: #333;
background: linear-gradient(135deg, #f5f7fa 0%, #e8f0f7 100%);
min-height: 100vh;
display: flex;
flex-direction: column;
}
/* ========== コンテナ ========== */
.container {
max-width: 600px;
width: 100%;
margin: 0 auto;
background: #fff;
box-shadow: 0 0 40px rgba(0, 70, 140, 0.1);
flex: 1;
display: flex;
flex-direction: column;
}
/* ========== ヘッダー ========== */
header {
position: relative;
background: linear-gradient(135deg, #1e5a9e 0%, #2980b9 50%, #3498db 100%);
padding: 0;
overflow: hidden;
}
header::before {
content: '';
position: absolute;
top: -50%;
right: -20%;
width: 400px;
height: 400px;
background: rgba(255, 255, 255, 0.08);
border-radius: 50%;
z-index: 1;
}
header::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 8px;
background: linear-gradient(90deg, #3498db, #5dade2, #85c1e9);
}
.header-content {
position: relative;
z-index: 2;
padding: 40px 30px 30px;
}
h1 {
margin: 0;
}
h1 a {
color: #fff;
text-decoration: none;
font-size: 28px;
font-weight: 700;
display: inline-block;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
letter-spacing: 0.05em;
transition: all 0.3s ease;
position: relative;
}
h1 a::after {
content: '';
position: absolute;
bottom: -5px;
left: 0;
width: 0;
height: 3px;
background: #85c1e9;
transition: width 0.3s ease;
}
h1 a:hover::after {
width: 100%;
}
.header-image {
width: 100%;
height: auto;
display: block;
position: relative;
z-index: 2;
}
/* ========== メインコンテンツ ========== */
main {
flex: 1;
padding: 50px 30px;
position: relative;
}
/* ========== 見出し ========== */
h2 {
font-size: 26px;
color: #1e5a9e;
margin: 50px 0 25px;
padding: 0 0 15px 25px;
border-left: 6px solid #3498db;
border-bottom: 3px solid #e8f4f8;
position: relative;
background: linear-gradient(90deg, #f0f8ff 0%, transparent 100%);
line-height: 1.5;
}
h2::before {
content: '';
position: absolute;
left: -6px;
bottom: -3px;
width: 80px;
height: 3px;
background: #3498db;
}
h2:first-child {
margin-top: 0;
}
h3 {
font-size: 22px;
color: #2471a3;
margin: 40px 0 20px;
padding: 12px 20px;
background: #e8f4f8;
border-left: 5px solid #5dade2;
position: relative;
line-height: 1.5;
}
h3::after {
content: '';
position: absolute;
top: 50%;
right: 20px;
transform: translateY(-50%) rotate(45deg);
width: 8px;
height: 8px;
border-top: 2px solid #5dade2;
border-right: 2px solid #5dade2;
}
h4 {
font-size: 19px;
color: #34495e;
margin: 30px 0 15px;
padding: 10px 15px 10px 40px;
border-bottom: 2px solid #d6eaf8;
position: relative;
line-height: 1.5;
}
h4::before {
content: '\25A0';
position: absolute;
left: 15px;
top: 50%;
transform: translateY(-50%);
color: #3498db;
font-size: 14px;
}
/* ========== 段落 ========== */
p {
margin: 0 0 1.8em 0;
line-height: 1.9;
}
p:last-child {
margin-bottom: 0;
}
/* ========== リスト ========== */
ul, ol {
margin: 20px 0;
padding-left: 30px;
}
ul li {
margin: 12px 0;
padding-left: 10px;
position: relative;
line-height: 1.8;
}
ul li::marker {
color: #3498db;
}
ol li {
margin: 12px 0;
padding-left: 10px;
line-height: 1.8;
}
ol li::marker {
color: #2980b9;
font-weight: 600;
}
/* ========== テーブル ========== */
table {
width: 100%;
border-collapse: collapse;
margin: 25px 0;
background: #fff;
border: 2px solid #d6eaf8;
box-shadow: 0 2px 8px rgba(52, 152, 219, 0.08);
}
th {
background: linear-gradient(135deg, #2980b9 0%, #3498db 100%);
color: #fff;
padding: 15px 12px;
text-align: left;
font-weight: 600;
border: 1px solid #2471a3;
}
td {
padding: 15px 12px;
border: 1px solid #d6eaf8;
background: #fff;
}
tr:nth-child(even) td {
background: #f8fbfd;
}
tr:hover td {
background: #eaf5fc;
transition: background 0.2s ease;
}
/* ========== 画像 ========== */
main img {
display: block;
margin: 25px auto;
max-width: 100%;
height: auto;
border-radius: 4px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
/* ========== フッター ========== */
footer {
background: linear-gradient(135deg, #1a4d7e 0%, #1e5a9e 100%);
color: #fff;
padding: 40px 30px 25px;
position: relative;
overflow: hidden;
}
footer::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 4px;
background: linear-gradient(90deg, #3498db, #5dade2, #85c1e9, #3498db);
background-size: 200% 100%;
animation: gradientShift 3s linear infinite;
}
@keyframes gradientShift {
0% { background-position: 0% 0%; }
100% { background-position: 200% 0%; }
}
.footer-menu {
display: flex;
flex-wrap: wrap;
gap: 20px;
justify-content: center;
margin-bottom: 30px;
padding-bottom: 25px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.footer-menu a {
color: #e8f4f8;
text-decoration: none;
font-size: 14px;
transition: all 0.3s ease;
padding: 5px 10px;
border-radius: 3px;
position: relative;
}
.footer-menu a::before {
content: '\203A';
margin-right: 5px;
font-size: 16px;
color: #85c1e9;
}
.footer-menu a:hover {
color: #fff;
background: rgba(255, 255, 255, 0.1);
transform: translateX(3px);
}
.footer-bottom {
text-align: center;
font-size: 13px;
color: #b8d9f0;
}
.footer-bottom p {
margin: 8px 0;
}
.footer-bottom a {
color: #e8f4f8;
text-decoration: none;
font-weight: 500;
transition: color 0.3s ease;
}
.footer-bottom a:hover {
color: #fff;
}
/* ========== レスポンシブ ========== */
@media (max-width: 640px) {
.header-content {
padding: 30px 20px 20px;
}
h1 a {
font-size: 24px;
}
main {
padding: 35px 20px;
}
main::before {
left: 20px;
}
h2 {
font-size: 22px;
padding-left: 20px;
margin: 40px 0 20px;
}
h3 {
font-size: 19px;
padding: 10px 15px;
}
h4 {
font-size: 17px;
}
table {
font-size: 14px;
}
th, td {
padding: 10px 8px;
}
.footer-menu {
gap: 15px;
}
footer {
padding: 30px 20px 20px;
}
}
/* ========== カード型リンク ========== */
.card-link {
display: block;
margin: 25px 0;
padding: 0;
text-decoration: none;
background: #fff;
border: 2px solid #d6eaf8;
border-radius: 8px;
overflow: hidden;
transition: all 0.3s ease;
position: relative;
box-shadow: 0 2px 8px rgba(52, 152, 219, 0.1);
}
.card-link::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 6px;
height: 100%;
background: linear-gradient(180deg, #3498db, #5dade2);
transform: scaleY(0);
transform-origin: bottom;
transition: transform 0.3s ease;
}
.card-link:hover {
border-color: #3498db;
box-shadow: 0 6px 20px rgba(52, 152, 219, 0.2);
transform: translateY(-3px);
}
.card-link:hover::before {
transform: scaleY(1);
transform-origin: top;
}
.card-link-content {
padding: 25px;
position: relative;
}
.card-link-title {
font-size: 19px;
font-weight: 700;
color: #1e5a9e;
margin: 0 0 12px 0;
line-height: 1.5;
display: flex;
align-items: center;
gap: 10px;
}
.card-link-title::after {
content: '\203A';
font-size: 24px;
color: #3498db;
transition: transform 0.3s ease;
}
.card-link:hover .card-link-title::after {
transform: translateX(5px);
}
.card-link-description {
font-size: 14px;
color: #555;
line-height: 1.7;
margin: 0;
}
.card-link-meta {
display: flex;
gap: 15px;
margin-top: 15px;
padding-top: 15px;
border-top: 1px solid #e8f4f8;
font-size: 12px;
color: #7f8c8d;
}
.card-link-meta span::before {
content: '\25A0';
margin-right: 5px;
color: #3498db;
font-size: 10px;
}