/* 装飾は贈り物の見出し・教材画像に集約し、本文は白地で読みやすく。 */
.gifts { padding:0 28px 24px; border:1px solid #e0d8c5; border-radius:4px; background:#fff; box-shadow:none; }
.gifts .gift-label { display:flex; justify-content:center; align-items:baseline; flex-wrap:wrap; gap:0 .35em; margin:0 -28px; padding:18px 24px; background:linear-gradient(110deg,#651b2d,#902e43,#651b2d); color:#fff0b7; border:0; border-bottom:3px solid #c9ac65; border-radius:3px 3px 0 0; clip-path:none; font-family:var(--serif); font-size:1.35rem; line-height:1.6; letter-spacing:.03em; }
.gifts .gift-label strong { font-size:1.65em; font-weight:800; }
.gifts .gift-heading { flex-direction:column; text-align:center; gap:14px; margin:30px 0 12px; }
.gifts .gift-heading h2 { color:#154b32; }
.gifts .pdf-label { background:none; border:0; padding:0; color:#526354; }
.gifts .pdf-label br { display:none; }
.gift-visual { position:relative; overflow:hidden; background:radial-gradient(ellipse at center,#f5dfa6 0,#fff8e3 45%,#fff 74%); padding:24px 0 10px; margin-bottom:24px; }
.gifts .gift-showcase { display:block; width:100%; max-height:none; height:auto; margin:0; filter:none; }
.gift-ribbon { position:absolute; z-index:1; top:18px; right:-36px; width:150px; padding:7px 0; transform:rotate(35deg); text-align:center; background:linear-gradient(100deg,#d6b468,#fff0b5,#d6b468); color:#624a16; box-shadow:0 2px 5px #59451915; font:700 .75rem/1.5 var(--serif); letter-spacing:.12em; }
.gifts .gift { display:grid; grid-template-columns:minmax(0,1fr); gap:14px; padding:26px 24px; margin:0; border:0; border-top:1px solid #e2e6df; border-radius:0; background:#fff; box-shadow:none; }
.gifts .gift-number { justify-self:start; width:auto; padding:5px 14px; color:#fff1bb; background:#792438; border:0; text-shadow:none; font:700 1rem/1.6 var(--serif); letter-spacing:.08em; }
.gifts .gift>div { grid-column:1; }
.gifts .gift h3 { color:#16472f; font-size:1.65rem; line-height:1.6; margin:0 0 12px; }
.gifts .gift p { color:#303d34; font-size:1.0625rem; line-height:1.9; }
@media(max-width:700px){
 .gifts { width:calc(100% - 24px); padding:0 16px 18px; }
 .gifts .gift-label { margin:0 -16px; padding:16px 10px; font-size:1rem; }
 .gifts .gift-heading { margin-top:24px; }
 .gifts .gift-heading h2 { font-size:clamp(1.5rem,6.4vw,1.9rem); line-height:1.6; margin:0; }
 .gifts .pdf-label { font-size:.875rem; }
 .gift-visual { margin:0 -8px 16px; padding-top:26px; }
 .gift-ribbon { top:12px; right:-34px; width:132px; font-size:.75rem; padding:4px 0; }
 .gifts .gift { padding:22px 2px; gap:12px; }
 .gifts .gift h3 { font-size:1.25rem; line-height:1.65; }
 .gifts .gift p { font-size:1rem; line-height:1.85; }
 .gifts .gift p br { display:none; }
 .voices { gap:24px; }
 .voices .voice-card { grid-template-columns:minmax(0,1fr); gap:20px; padding:24px 20px; margin:0; }
 .voices .voice-portrait { width:132px; max-width:100%; justify-self:center; border:3px solid #fff; box-shadow:0 0 0 1px #d8c591; }
 .voices .voice-copy { width:100%; }
 .voices .voice-copy .voice-summary { font-size:1.25rem; line-height:1.75; margin-bottom:18px; }
 .voices .voice-copy p { font-size:1rem; line-height:1.95; margin-bottom:20px; text-align:left; overflow-wrap:anywhere; }
 .voices .voice-copy footer { font-size:.9375rem; line-height:1.8; border-top:1px solid #dfdfd2; padding-top:16px; }
}

/* 長いヒーローコピーをスマホでも一行で読み取れるサイズに。 */
.hero-stage .hero-opening { font-size:.8em; letter-spacing:-.055em; }
/* 特典部分だけ深い赤を使い、サイト全体の緑との対比をつくる。 */
.gifts .gift-heading h2,.gifts .gift h3 { color:#702438; }
@media(min-width:701px){
 .gifts { padding-bottom:18px; }
 .gifts .gift-heading { margin:22px 0 4px; gap:8px; }
 .gift-visual { max-width:760px; margin:0 auto 12px; padding:14px 0 4px; }
 .gifts .gift-showcase { max-height:240px; object-fit:contain; }
 .gifts .gift { grid-template-columns:100px minmax(0,1fr); column-gap:24px; row-gap:7px; padding:18px 20px; align-items:start; }
 .gifts .gift>img { display:block; grid-column:1; grid-row:1/3; width:82px; height:auto; align-self:center; justify-self:center; transform:none; }
 .gifts .gift-number { grid-column:2; grid-row:1; font-size:.875rem; padding:3px 12px; }
 .gifts .gift>div { grid-column:2; grid-row:2; }
 .gifts .gift h3 { font-size:1.45rem; margin-bottom:6px; line-height:1.5; }
 .gifts .gift h3 br,.gifts .gift p br { display:none; }
 .gifts .gift p { font-size:1rem; line-height:1.8; }
 .gifts .gift-note { margin-top:14px; }
}

/* 申込判断に必要な情報を先に示す。 */
.hero-stage .hero { grid-template-rows:repeat(6,auto); }
.hero-stage .hero:before { grid-row:1/5; }
.hero-stage .hero-action { grid-column:1; grid-row:3; position:relative; z-index:2; padding:8px 20px 4px; text-align:center; }
.hero-action p { color:#fff5d4; font-size:1rem; margin:0 0 10px; }
.hero-action .button { max-width:560px; margin:0 auto; font-size:1.125rem; min-height:52px; border:1px solid #ead898; }
.hero-stage .hero-photo { grid-row:4; }
.hero-stage .hero-copy>.hero-lead { grid-row:5; }
.hero-stage .hero-copy>p:last-child { grid-row:6; }
.schedule .gift-teaser { display:flex; flex-direction:column; gap:4px; margin:12px auto 18px; padding:14px 20px; max-width:680px; clip-path:none; border:1px solid #b68b53; border-radius:4px; background:linear-gradient(115deg,#641d2f,#8c2e43); color:#fff4cc; text-decoration:none; }
.gift-teaser strong { font-family:var(--serif); font-size:1.35rem; }
.gift-teaser span { font-size:1rem; color:#fff; }
.gift-teaser small { font-size:.875rem; text-decoration:underline; }
.profile-details { border-block:1px solid #b8c9bd; padding:16px 0; margin:24px 0; }
.profile-details summary { cursor:pointer; color:#16472f; font-size:1.125rem; font-weight:700; line-height:1.8; }
.profile-details .profile-story { margin-top:24px; }
#registration-fields { border:0; padding:0; margin:0; min-width:0; }
#registration-fields:disabled { opacity:.55; }
.form-guidance { font-size:1rem; line-height:1.8; }
#schedule,#gifts,#registration { scroll-margin-top:20px; }
a:focus-visible,summary:focus-visible { outline:3px solid #b58430; outline-offset:4px; }
@media(max-width:600px){
 .hero-stage .hero-action { padding:6px 16px 2px; }
 .hero-action .button { font-size:1rem; padding:14px 10px; }
 .schedule .gift-teaser { padding:13px 12px; }
 .gift-teaser strong { font-size:1.2rem; }
 .gift-teaser span { font-size:.9375rem; line-height:1.8; }
}

/* 添付された実物のプレビューと提供形式に合わせる。 */
.gifts .actual-gifts { max-width:none; text-align:center; padding:20px 16px; margin-bottom:8px; }
.actual-gifts p { color:#702438; font-family:var(--serif); font-size:1.25rem; line-height:1.7; margin:0 0 6px; }
.actual-gifts>span:not(.gift-ribbon) { color:#594a2c; font-size:1rem; }
.gifts .gift-format { display:inline-block; color:#702438; font-weight:700; font-size:.875rem; margin:0 0 8px; padding:3px 8px; background:#f8eef0; }
.gifts .gift>img { width:100%; height:auto; transform:none; border:1px solid #d8ddd7; box-shadow:0 3px 10px #17382615; }
@media(min-width:701px){.gifts .gift { grid-template-columns:160px minmax(0,1fr); }.gifts .gift>img { width:140px; }}
@media(max-width:700px){.gifts .gift>img { display:block; width:132px; grid-column:1; grid-row:auto; justify-self:center; margin-bottom:4px; }.gifts .gift-number { grid-column:1; grid-row:auto; }.gifts .gift>div { grid-column:1; grid-row:auto; }.actual-gifts p {font-size:1.1rem;}}

/* 写真原本を保持し、表示だけをわずかに拡大・明るくする。 */
.hero-stage .hero-photo img { transform:scale(1.04); transform-origin:36% top; filter:brightness(1.10) saturate(1.02); }
/* 深赤の見出し帯を、光がゆっくり横切る。 */
.gifts .gift-label { position:relative; isolation:isolate; overflow:hidden; }
.gifts .gift-label::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(110deg,transparent 30%,rgba(255,231,169,.12) 44%,rgba(255,247,218,.32) 50%,rgba(255,231,169,.12) 56%,transparent 70%); transform:translateX(-110%); animation:gift-glint 6s ease-in-out infinite; }
@keyframes gift-glint { 0%,15% {transform:translateX(-110%);} 48%,100% {transform:translateX(110%);} }
/* リボンを独立した行へ移し、本文への重なりを防ぐ。 */
.actual-gifts .gift-ribbon { position:relative; display:block; top:auto; right:auto; width:fit-content; max-width:100%; margin:0 auto 12px; padding:5px 16px; transform:none; clip-path:polygon(0 0,100% 0,94% 50%,100% 100%,0 100%,6% 50%); box-shadow:none; }
@media(prefers-reduced-motion:reduce){.gifts .gift-label::after {animation:none;display:none;}}

/* スマートフォンでの資料・質問・入力欄の読みやすさを調整。 */
@media(max-width:700px){
 .gifts .gift { row-gap:12px; padding-block:24px; }
 .gifts .gift-number { grid-row:1; }
 .gifts .gift>img { grid-row:2; width:min(180px,65%); }
 .gifts .gift>img[src*="gift02-actual"] { width:100%; max-width:420px; }
 .gifts .gift>div { grid-row:3; }
 .gifts .gift-format { font-size:.9375rem; line-height:1.7; }
 .gifts .gift-note { text-align:left; font-size:.9375rem; line-height:1.9; }
 .faq summary { min-height:48px; padding-block:16px; font-size:1rem; line-height:1.8; }
 .profile-details .profile-story { margin-top:8px; }
 .profile-story p,.profile-message p { font-size:1rem; line-height:1.9; }
 .date-main { flex-wrap:wrap; row-gap:4px; }
 #registration input:not([type=checkbox]):not([type=radio]) { font-size:1rem; min-height:48px; }
 .consent { align-items:flex-start; line-height:1.8; }
 .consent input { flex-shrink:0; margin-top:5px; }
 .floating-apply a { min-height:72px; padding-block:9px; }
}

/* ヘッダーCTAは左右に同じ幅を確保し、文言自体を中央へ。 */
.header .header-cta { display:grid; grid-template-columns:1em auto 1em; align-items:center; justify-content:center; column-gap:8px; padding:12px 14px; min-height:48px; box-sizing:border-box; flex-shrink:0; font-size:.875rem; line-height:1.4; text-align:center; }
.header .header-cta::before { content:""; grid-column:1; grid-row:1; }
.header .header-cta .header-cta-label { grid-column:2; grid-row:1; display:block; margin:0; padding:0; white-space:nowrap; }
.header .header-cta>span[aria-hidden] { grid-column:3; grid-row:1; position:static; inset:auto; transform:none; margin:0; padding:0; line-height:1; }
@media print {.header .header-cta {display:none;}}
