/*
* jdmain.css — Junior-Doctor Chokai Academy
* ============================================================
* デザイン方針: 白基調・余白重視・カード型レイアウト
* ▼ テーマカラー変更はここだけ ▼
* ============================================================
*/
:root {
/* --- テーマカラー --- */
--c-school: #1e6b3a;
/* 学校カラー:深緑 */
--c-school-mid: #2e9050;
/* 中明度緑(ホバー等) */
--c-school-pale: #eaf4ee;
/* 淡緑(背景・縞等) */
--c-found: #1040a0;
/* 財団カラー:深青 */
--c-found-pale: #e8eef8;
/* 淡青(背景) */
--c-accent: #e85c00;
/* アクセント(CTA) */
/* --- テキスト --- */
--c-text: #1a1a1a;
--c-text-sub: #666;
--c-text-inv: #fff;
--c-link: var(--c-found);
/* --- 背景 --- */
--c-bg-white: #fff;
--c-bg-header: rgba(255, 255, 255, .95);
/* --- ボーダー・影 --- */
--c-border: #e0e0e0;
--shadow: 0 2px 16px rgba(0, 0, 0, .07);
--shadow-hover: 0 6px 28px rgba(0, 0, 0, .13);
/* --- レイアウト --- */
--max-w: 1160px;
--header-h: 68px;
/* --- 角丸 --- */
--r-sm: 4px;
--r-md: 10px;
--r-lg: 18px;
}
/* ============================================================
リセット
============================================================ */
*,
*::before,
*::after {
box-sizing: border-box;
}
html,
body,
div,
section,
article,
p,
a,
img,
figure,
h1,
h2,
h3,
h4,
dl,
dt,
dd,
ul,
li,
header,
footer,
main,
aside {
margin: 0;
padding: 0;
}
html {
font-size: 100%;
scroll-behavior: smooth;
}
/* 動くグラデーション背景(fixed擬似要素で全ブラウザ対応) */
html::before {
content: '';
position: fixed;
inset: 0;
z-index: -1;
background: linear-gradient(125deg,
#6fa882 0%,
#7a9cc8 25%,
#5d8a9e 50%,
#7db88a 75%,
#6fa882 100%);
background-size: 300% 300%;
animation: bg-shift 18s ease infinite;
}
body {
font-family: 'Noto Serif JP', 'Yu Mincho', 'YuMincho', '游明朝',
'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'ヒラギノ明朝 ProN',
'MS Mincho', 'MS 明朝', serif;
color: var(--c-text);
background: transparent;
line-height: 1.75;
-webkit-font-smoothing: antialiased;
}
img {
max-width: 100%;
display: block;
}
a {
color: var(--c-link);
}
dt {
font-weight: bold;
}
dd {
margin-left: 1.5em;
}
/* ============================================================
ヘッダー
============================================================ */
header#header {
width: 100%;
position: fixed;
top: 0;
z-index: 100;
background: rgba(255, 255, 255, 0.18);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(255, 255, 255, 0.35);
transition: background .35s, box-shadow .35s;
}
header#header.scroll-nav {
background: rgba(255, 255, 255, 0.88);
box-shadow: 0 1px 0 var(--c-border), 0 4px 16px rgba(0, 0, 0, .06);
}
/* ── ヘッダー内部レイアウト ── */
.site-header {
max-width: 1200px;
margin: 0 auto;
padding: 0 40px;
height: var(--header-h);
display: flex;
align-items: center;
gap: 16px;
position: relative;
}
/* ── ロゴ ── */
.site-header__logo {
font-size: 1rem;
font-weight: 700;
color: rgba(255, 255, 255, .95);
text-decoration: none;
letter-spacing: .04em;
white-space: nowrap;
text-shadow: 0 1px 4px rgba(0, 0, 0, .3);
flex-shrink: 0;
z-index: 110;
}
.site-header__logo img {
height: 44px;
width: auto;
display: block;
}
header#header.scroll-nav .site-header__logo {
color: var(--c-school);
text-shadow: none;
}
/* ── PC ナビ ── */
.site-header nav {
margin-left: auto;
}
.site-header nav ul {
display: flex;
align-items: center;
gap: 4px;
list-style: none;
margin: 0;
padding: 0;
}
.site-header nav ul li a {
display: block;
padding: 6px 16px;
font-size: .875rem;
font-weight: 600;
color: rgba(255, 255, 255, .92);
text-decoration: none;
border-radius: var(--r-sm);
letter-spacing: .04em;
text-shadow: 0 1px 4px rgba(0, 0, 0, .2);
transition: color .2s, background .2s;
}
.site-header nav ul li a:hover {
background: rgba(255, 255, 255, .25);
color: #fff;
}
header#header.scroll-nav .site-header nav ul li a {
color: var(--c-text);
text-shadow: none;
}
header#header.scroll-nav .site-header nav ul li a:hover {
color: var(--c-school);
background: var(--c-school-pale);
}
/* ── ハンバーガーボタン(スマホのみ表示) ── */
.site-header__hamburger {
display: none;
flex-direction: column;
justify-content: center;
gap: 5px;
width: 36px;
height: 36px;
background: none;
border: none;
cursor: pointer;
padding: 4px;
margin-left: auto;
z-index: 110;
}
.site-header__hamburger span {
display: block;
width: 100%;
height: 2.5px;
background: #111;
border-radius: 2px;
transition: transform .3s, opacity .3s, background .3s;
}
header#header.scroll-nav .site-header__hamburger span {
background: var(--c-school);
}
.site-header__hamburger.is-open span:nth-child(1) {
transform: translateY(7.5px) rotate(45deg);
}
.site-header__hamburger.is-open span:nth-child(2) {
opacity: 0;
}
.site-header__hamburger.is-open span:nth-child(3) {
transform: translateY(-7.5px) rotate(-45deg);
}
/* ── スマホ ドロワーメニュー ── */
@media (max-width: 768px) {
.site-header {
padding: 0 20px;
}
.site-header__hamburger {
display: flex;
}
.site-header nav {
position: fixed;
top: 0;
right: 0;
width: min(280px, 80vw);
height: 100dvh;
background: rgba(255, 255, 255, 0.97);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
box-shadow: -4px 0 24px rgba(0, 0, 0, .15);
padding: calc(var(--header-h) + 16px) 0 32px;
margin-left: 0;
transform: translateX(110%);
transition: transform .35s cubic-bezier(.4, 0, .2, 1);
z-index: 105;
overflow-y: auto;
}
.site-header nav.is-open {
transform: translateX(0);
}
.site-header nav ul {
flex-direction: column;
align-items: stretch;
gap: 0;
}
.site-header nav ul li a {
color: var(--c-text);
text-shadow: none;
font-size: 1rem;
padding: 16px 28px;
border-radius: 0;
border-bottom: 1px solid var(--c-school-pale);
}
.site-header nav ul li a:hover {
background: var(--c-school-pale);
color: var(--c-school);
}
.site-header__overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0, 0, 0, .35);
z-index: 104;
}
.site-header__overlay.is-open {
display: block;
}
}
/* ============================================================
共通レイアウト
============================================================ */
.wrapper {
max-width: var(--max-w);
margin: 0 auto;
padding: 40px 40px 100px;
}
.jd-section-title,
.section-title {
font-size: 2rem;
font-weight: 700;
color: var(--c-text);
text-align: center;
margin: 48px 0 32px;
line-height: 1.3;
letter-spacing: .02em;
&::before {
content: none;
}
&::after {
content: '';
display: block;
width: 48px;
height: 3px;
margin: 14px auto 0;
border-radius: 2px;
background: linear-gradient(to right, var(--c-school), var(--c-found));
}
& .jd-section-title__en {
display: block;
font-size: .75rem;
font-weight: 600;
letter-spacing: .18em;
color: var(--c-school);
margin-bottom: 8px;
text-transform: uppercase;
}
}
.section-text {
text-align: center;
font-size: 1.05rem;
max-width: 720px;
margin: 0 auto 40px;
color: var(--c-text-sub);
line-height: 1.85;
}
/* ============================================================
メインビジュアル
============================================================ */
#mainvisual {
height: 660px;
position: relative;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
/* 鳥海山背景画像 */
&::before {
content: '';
position: absolute;
inset: 0;
z-index: 0;
background: url('./img/home_bgi.jpeg') center center / cover no-repeat;
opacity: 1.0;
}
& .top-title {
position: absolute;
z-index: 10;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
width: 100%;
padding: 0 20px;
& .site-title {
font-size: 3.4rem;
font-weight: 800;
color: var(--c-text-inv);
text-shadow: 0 4px 16px rgba(0, 0, 0, .45);
text-align: center;
letter-spacing: .08em;
line-height: 1.3;
& .small {
display: block;
font-size: 1.2rem;
color: rgba(255, 255, 255, .75);
text-shadow: 0 2px 8px rgba(0, 0, 0, .3);
font-weight: 500;
letter-spacing: .22em;
margin-top: 8px;
text-transform: uppercase;
}
}
}
& .fade li {
max-width: 100%;
position: absolute;
inset: 0;
opacity: 0;
animation: fade 25s infinite;
list-style: none;
z-index: 1;
&:nth-child(1) {
animation-delay: 0s;
}
&:nth-child(2) {
animation-delay: 5s;
}
&:nth-child(3) {
animation-delay: 10s;
}
&:nth-child(4) {
animation-delay: 15s;
}
&:nth-child(5) {
animation-delay: 20s;
}
& img {
width: 100%;
height: 660px;
object-fit: cover;
}
&::after {
content: "";
position: absolute;
inset: 0;
background: rgba(0, 0, 0, .28);
}
}
@media (max-width: 746px) {
height: 460px;
& .top-title .site-title {
font-size: 2.2rem;
}
& .top-title .site-title .small {
font-size: 1rem;
}
& .fade li img {
height: 460px;
}
}
@media (max-width: 499px) {
& .top-title .site-title {
font-size: 1.7rem;
}
& .top-title .site-title .small {
font-size: .85rem;
}
}
}
.mainvisual-logo {
display: block;
margin: 0 auto 16px;
height: 300px;
width: auto;
}
.mainvisual-inner {
margin-top: 110px;
}
.mainvisual-img {
position: relative;
max-width: 100%;
}
@keyframes bg-shift {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@keyframes fade {
0%,
100% {
opacity: 0;
}
15%,
25% {
opacity: 1;
}
35% {
opacity: 0;
}
}
/* ============================================================
ホームセクション 半透過カード
============================================================ */
#home-notice,
#home-class_content,
#home-info {
background: rgba(255, 255, 255, 0.80);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border-radius: var(--r-lg);
margin-bottom: 32px;
}
/* ============================================================
新着情報
============================================================ */
.notice {
& li {
border-bottom: 1px solid var(--c-border);
list-style: none;
padding: 12px 8px;
width: 800px;
margin: 0 auto;
transition: background .15s;
&:hover {
background: var(--c-school-pale);
}
& a {
color: var(--c-text);
text-decoration: none;
display: flex;
align-items: baseline;
flex-wrap: wrap;
gap: 10px;
& .news-title {
background: var(--c-found);
border-radius: var(--r-sm);
color: var(--c-text-inv);
font-size: .78rem;
padding: 3px 10px;
white-space: nowrap;
flex-shrink: 0;
}
& time {
font-weight: 600;
font-size: .88rem;
color: var(--c-text-sub);
white-space: nowrap;
}
& p {
color: var(--c-found);
text-decoration: underline;
}
}
@media (max-width: 746px) {
padding: 8px 5px;
width: auto;
& a {
font-size: .85rem;
}
}
}
}
.new::after {
content: "NEW";
color: #c00;
font-size: .78rem;
border: 1px solid #c00;
padding: 2px 6px;
margin-left: 12px;
border-radius: 3px;
vertical-align: middle;
}
.home-notice-title {
margin-top: 0;
}
/* ============================================================
授業内容カード(home-class_content)
============================================================ */
#home-class_content {
padding: 50px 16px;
margin: -50px auto 10px;
& .scroll {
opacity: 0;
}
& .show,
& .grid .show {
opacity: 1;
transition: 1s;
transform: translateY(-50px);
}
& .grid {
display: grid;
gap: 24px;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
& .class_content-item {
text-decoration: none;
color: var(--c-text);
}
& .item {
background: var(--c-bg-white);
border-radius: var(--r-lg);
box-shadow: var(--shadow);
overflow: hidden;
transition: box-shadow .25s, transform .25s;
&:hover {
box-shadow: var(--shadow-hover);
transform: translateY(-3px);
}
}
& img {
height: 240px;
width: 100%;
object-fit: cover;
}
& .item-content {
padding: 22px 24px;
}
& .item-cat {
font-size: .8rem;
font-weight: 600;
color: var(--c-found);
margin-bottom: 10px;
letter-spacing: .06em;
}
& .item-text {
font-weight: 700;
font-size: 1rem;
margin-bottom: 14px;
line-height: 1.5;
}
& .item-date {
font-size: .8rem;
color: var(--c-text-sub);
text-align: right;
}
}
}
.class_content-item>.item:hover {
opacity: 1;
}
.home-class_content-btn {
text-align: center;
margin-top: 40px;
& a {
display: inline-block;
text-decoration: none;
color: var(--c-text-inv);
background: var(--c-school);
padding: 12px 40px;
border-radius: 100vmax;
font-size: 1rem;
font-weight: 600;
letter-spacing: .06em;
transition: background .2s;
&:hover {
background: var(--c-school-mid);
}
}
}
/* ============================================================
アクセス(home-info)
============================================================ */
#home-info {
background: var(--c-bg-white);
padding: 60px;
margin: 60px 0;
& img {
object-fit: cover;
width: 100%;
height: 450px;
border-radius: var(--r-md);
}
@media (max-width: 746px) {
padding: 20px;
& img {
height: 200px;
}
}
}
.home-info-address_title {
font-size: 1.8rem;
color: var(--c-school);
@media (max-width: 746px) {
font-size: 1em;
}
}
.info-item {
display: flex;
justify-content: space-evenly;
align-items: center;
padding-top: 70px;
@media (max-width: 1024px) {
flex-direction: column;
margin: 0 auto;
}
}
.info-text .info-small {
font-size: .9rem;
}
.info-address {
font-size: 15px;
letter-spacing: .15em;
white-space: nowrap;
line-height: 1.9;
padding-bottom: 10px;
}
.line-dl {
& div {
display: flex;
border-bottom: 1px solid var(--c-school-pale);
padding: 11px 5px 14px;
align-items: flex-start;
&:first-child {
border-top: 1px solid var(--c-school-pale);
}
& .font-mg {
width: 110px;
letter-spacing: .15em;
white-space: nowrap;
color: var(--c-school);
font-size: 15px;
line-height: 1.9;
}
& dd {
width: calc(100% - 110px);
font-size: 14px;
letter-spacing: .04em;
line-height: 1.9;
& a {
color: var(--c-link);
&:hover {
opacity: .7;
}
}
& .info-small {
font-size: 13px;
}
}
}
}
iframe {
width: 450px;
height: 600px;
@media (max-width: 746px) {
width: 100%;
height: 300px;
}
}
.iframe-wrap {
@media (max-width: 1024px) {
padding-top: 50px;
width: 100%;
}
}
/* ============================================================
活動掲載ページ(#active)
============================================================ */
#active {
display: grid;
grid-template-columns: 1fr 260px;
gap: 0 40px;
max-width: 1200px;
margin: 0 auto;
padding: calc(var(--header-h) + 32px) 40px 80px;
align-items: start;
}
#active>.jd-section-title,
#active>.section-title,
#active>.jd-notice-box,
#active>.box {
grid-column: 1 / -1;
}
#active>.jd-section-title,
#active>.section-title {
background: rgba(255, 255, 255, 0.72);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
border-radius: var(--r-md);
padding: 24px 32px 20px;
}
/* ── 記事エリア ── */
.jd-activity,
main.activity {
grid-column: 1;
}
/* ── 記事カード ── */
.jd-entry,
main.activity article {
background: rgba(255, 255, 255, 0.82);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
border-radius: var(--r-lg);
box-shadow: var(--shadow);
margin-bottom: 32px;
padding: 32px 36px;
border-top: 3px solid var(--c-school);
transition: box-shadow .2s;
&:hover {
box-shadow: var(--shadow-hover);
}
}
.jd-entry__title,
main.activity article h3 {
font-size: 1.2rem;
font-weight: 700;
color: var(--c-text);
padding-left: 14px;
border-left: 4px solid var(--c-school);
margin-bottom: 6px;
line-height: 1.45;
}
.jd-entry__date,
main.activity article h4 {
font-size: .82rem;
color: var(--c-found);
font-weight: 500;
padding-left: 14px;
margin-bottom: 20px;
letter-spacing: .04em;
}
.jd-entry__body p,
main.activity article p {
display: block;
margin-bottom: 18px;
font-size: .95rem;
line-height: 1.9;
color: var(--c-text);
text-align: left;
}
.jd-entry__body p>a,
main.activity article p>a {
align-self: flex-start;
}
.jd-entry__body p>ul,
main.activity article p>ul {
align-self: stretch;
width: 100%;
}
.jd-entry__body p img,
main.activity article p img {
display: block;
margin: 0 auto 14px;
width: 400px;
max-width: 400px;
height: auto;
max-height: 300px;
object-fit: cover;
border-radius: var(--r-md);
box-shadow: 0 2px 8px rgba(0, 0, 0, .1);
}
.jd-entry__body p img.full,
main.activity article p img.full {
width: 100%;
height: auto;
max-height: 480px;
flex-shrink: unset;
}
.jd-entry__body a,
main.activity article a {
color: var(--c-link);
&:hover {
color: var(--c-school);
}
}
/* ── サイドバー ── */
aside#sidebar {
grid-column: 2;
position: sticky;
top: calc(var(--header-h) + 20px);
max-height: calc(100vh - var(--header-h) - 40px);
overflow-y: auto;
scrollbar-width: thin;
}
aside#sidebar #act-list {
margin-bottom: 20px;
}
.jd-archive,
aside#sidebar section.archive {
background: rgba(255, 255, 255, 0.82);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
border-radius: var(--r-md);
box-shadow: var(--shadow);
padding: 20px;
& h3 {
font-size: .82rem;
font-weight: 700;
color: var(--c-school);
letter-spacing: .12em;
text-transform: uppercase;
border-bottom: 2px solid var(--c-school-pale);
padding-bottom: 10px;
margin-bottom: 12px;
}
& ul {
list-style: none;
padding: 0;
}
& li {
line-height: 1.4;
padding: 8px 8px 8px 10px;
border-bottom: 1px solid rgba(30, 107, 58, 0.2);
border-left: 3px solid transparent;
transition: background .15s, border-left-color .15s;
&:last-child {
border-bottom: none;
}
&:hover {
background: rgba(234, 244, 238, 0.7);
border-left-color: var(--c-school);
}
& a {
display: flex;
flex-direction: column;
gap: 3px;
text-decoration: none;
transition: color .2s;
&:hover {
color: var(--c-school);
}
}
& .arch-date {
font-size: .7rem;
color: var(--c-found);
letter-spacing: .04em;
}
& .arch-title {
font-size: .78rem;
color: var(--c-text-sub);
line-height: 1.45;
}
&:hover .arch-title {
color: var(--c-school);
}
}
}
/* スマホ → 1カラム */
@media (max-width: 768px) {
#active {
grid-template-columns: 1fr;
padding: calc(var(--header-h) + 16px) 20px 60px;
}
#active>.jd-section-title,
#active>.section-title,
#active>.jd-notice-box,
#active>.box,
.jd-activity,
main.activity,
aside#sidebar {
grid-column: 1;
}
aside#sidebar {
position: static;
max-height: none;
margin-top: 40px;
}
.jd-entry,
main.activity article {
padding: 20px 16px;
}
.jd-entry__body p,
main.activity article p {
display: block;
}
.jd-entry__body p img,
main.activity article p img {
max-width: 100%;
max-height: 240px;
}
}
/* ============================================================
注意ボックス(.jd-notice-box)
============================================================ */
.jd-notice-box,
.box {
padding: 14px 20px;
margin: 0 0 32px;
color: var(--c-text);
background: rgba(255, 251, 234, 0.88);
border-left: 5px solid var(--c-accent);
border-radius: 0 var(--r-sm) var(--r-sm) 0;
& p {
text-align: center;
font-size: 1.1rem;
margin: 0;
}
& a {
color: var(--c-found);
font-weight: 600;
}
}
/* ============================================================
フッター
============================================================ */
footer {
background: linear-gradient(135deg, var(--c-school) 0%, var(--c-found) 100%);
color: var(--c-text-inv);
text-align: center;
font-size: .8rem;
padding: 32px 20px 24px;
margin-top: 60px;
& a {
color: rgba(255, 255, 255, .8);
&:hover {
color: #fff;
}
}
}
.site-footer__copy {
margin-top: 10px;
font-size: .75rem;
color: rgba(255, 255, 255, .65);
letter-spacing: .06em;
}
/* ============================================================
レスポンシブ
============================================================ */
@media (max-width: 746px) {
.jd-section-title,
.section-title {
font-size: 1.25rem;
margin: 40px 0 28px;
&::after {
width: 40px;
}
}
.section-text {
font-size: .85rem;
}
.wrapper {
padding: 0 20px 40px;
}
#mainvisual .top-title .site-title {
font-size: 0;
}
#mainvisual .top-title .site-title .mainvisual-logo {
display: block;
height: auto;
width: min(260px, 70vw);
font-size: initial;
}
}
/* ============================================================
活動成果一覧ページ(achievements)
============================================================ */
#achievements-page {
padding: calc(var(--header-h) + 32px) 0 80px;
}
.achievements-inner {
max-width: 900px;
}
/* 年度ブロック */
.achieve-year-block {
margin-bottom: 48px;
}
.achieve-year {
font-size: 1.1rem;
font-weight: 700;
color: var(--c-text-inv);
background: linear-gradient(to right, var(--c-school), var(--c-found));
padding: 10px 20px;
border-radius: var(--r-sm);
margin-bottom: 16px;
letter-spacing: .06em;
}
/* 各カード */
.achieve-card {
display: grid;
grid-template-columns: 180px 1fr;
gap: 0;
background: rgba(255, 255, 255, 0.82);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
border-radius: var(--r-md);
box-shadow: var(--shadow);
margin-bottom: 12px;
overflow: hidden;
transition: box-shadow .2s;
&:hover {
box-shadow: var(--shadow-hover);
}
}
.achieve-date {
background: var(--c-school-pale);
color: var(--c-school);
font-size: .82rem;
font-weight: 600;
padding: 16px 14px;
display: flex;
align-items: center;
border-right: 2px solid rgba(30, 107, 58, 0.15);
line-height: 1.5;
}
.achieve-body {
padding: 14px 20px;
font-size: .92rem;
line-height: 1.85;
color: var(--c-text);
& p {
margin-bottom: 6px;
}
& p:last-child {
margin-bottom: 0;
}
& a {
color: var(--c-found);
&:hover {
color: var(--c-school);
}
}
}
.achieve-event {
color: var(--c-text);
}
.achieve-award {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: .85rem;
font-weight: 600;
color: var(--c-accent);
& a {
color: var(--c-accent) !important;
text-decoration: underline;
&:hover {
opacity: .8;
}
}
}
/* 箇条書き */
.achieve-list {
margin: 8px 0 4px 1.4em;
padding: 0;
font-size: .88rem;
color: var(--c-text-sub);
& li {
margin-bottom: 4px;
}
}
/* スマホ */
@media (max-width: 600px) {
.achieve-card {
grid-template-columns: 1fr;
}
.achieve-date {
border-right: none;
border-bottom: 2px solid rgba(30, 107, 58, 0.15);
padding: 10px 14px;
}
}