/* PROFILE / CONTACT / 404 のページ別CSS（共通部品とトークンは style.css） */

/* ================= PROFILE ================= */
.pf { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 40%); grid-template-areas: "main fig" "career fig"; column-gap: clamp(28px, 5vw, 72px); row-gap: 40px; padding-bottom: 72px; align-items: start; }
.pf-loading { grid-column: 1 / -1; padding: 80px 0; text-align: center; color: var(--c-ink-soft); }
.pf-main { grid-area: main; }
.pf-career { grid-area: career; }

/* 立ち絵: 右側に貼り付く。高さは画像の縦横比（既定の character-*.webp は 800:1601。差し替えた画像・動画は js/profile.js が --pf-ar に w / h を入れる）で決め、画面の高さ（svh）は上限にだけ使う。
   高さを svh そのものにすると、縮小表示（ビューポートが巨大）で楕円がページの高さまで伸び、行をまたぐので左の列にも空白が出ていた */
.pf-fig { grid-area: fig; position: sticky; top: 92px; aspect-ratio: var(--pf-ar, 800 / 1601); max-height: calc(100svh - 108px); min-height: 420px; display: grid; grid-template: minmax(0, 1fr) / minmax(0, 1fr); place-items: end center; }
/* 差し替えた画像・動画: 横長でも列からはみ出さない（既定の min-height は縦長の立ち絵用）。幅が列で決まる分、高さは縦横比から出る */
.pf-fig.is-custom { min-height: 0; max-width: 100%; }
.pf-blob {
  position: absolute; inset: 6% 0 0; border-radius: 46% 54% 40% 60% / 38% 42% 58% 62%;
  background: radial-gradient(circle at 30% 24%, rgba(244, 169, 210, .55) 0, transparent 56%), linear-gradient(170deg, var(--c-lav-soft), var(--c-lav));
}
.pf-float { position: relative; z-index: 1; height: 100%; min-height: 0; max-width: 100%; display: grid; grid-template: minmax(0, 1fr) / minmax(0, 1fr); place-items: end center; animation: pf-float 6.5s ease-in-out infinite; }
.pf-img[data-zoom] { cursor: zoom-in; }
.pf-img { height: 100%; width: auto; max-width: 100%; object-fit: contain; object-position: center bottom; filter: drop-shadow(0 14px 22px rgba(110, 79, 214, .28)); }
/* 動画（mp4）は背景が透けないので、四角いまま角丸で枠に収める。縦横比は --pf-ar（読み込んだ動画の寸法）に合わせる */
.pf-vid { aspect-ratio: var(--pf-ar, 800 / 1601); object-fit: cover; border-radius: 28px; }
@keyframes pf-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
/* ハート・きらめきは控えめに（天使の輪は立ち絵に描かれているので重ねない） */
.pf-hrt { position: absolute; z-index: 2; color: var(--c-heart); filter: drop-shadow(0 4px 8px rgba(184, 53, 143, .3)); animation: pf-bob 4.2s ease-in-out infinite; }
.pf-hrt1 { left: 4%; top: 30%; width: 34px; height: 34px; }
.pf-hrt2 { right: 2%; top: 52%; width: 26px; height: 26px; color: var(--c-purple); animation-delay: -2s; }
@keyframes pf-bob { 0%, 100% { transform: translateY(0) rotate(-8deg); } 50% { transform: translateY(-10px) rotate(8deg); } }
.pf-fig .spk { z-index: 2; }

/* プロフィール本体 */
.pf-en { display: flex; align-items: center; gap: 10px; font-family: var(--f-serif); font-size: 14px; letter-spacing: .3em; color: var(--c-pink-deep); line-height: 1.4; }
.pf-en .ic { width: 22px; height: 22px; color: var(--c-pink); }
.pf-name { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .3em; margin: 6px 0 8px; color: var(--c-head, #615C91); line-height: 1.25; }
.pf-name-ja { font-family: var(--f-sans); font-weight: 700; font-size: clamp(2.6rem, 7.5vw, 4.4rem); letter-spacing: .04em; }
.pf-name-en { font-family: var(--f-serif); font-weight: 400; font-size: clamp(1.1rem, 2.6vw, 1.6rem); letter-spacing: .06em; }
/* キラキラは文字の後ろに置く（.spk 自身には当てない） */
.pf-main > :not(.spk) { position: relative; z-index: 1; }
.pf-main .spk { z-index: 0; }
.pf-job { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 17px; letter-spacing: .12em; color: var(--c-ink-soft); }
.pf-job .ic { color: var(--c-pink); font-size: 12px; }
.pf-roles { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.pf-role { padding: 5px 16px; border-radius: 999px; background: var(--grad-cta); color: #fff; font-weight: 700; font-size: 14px; line-height: 1.7; }
.pf-dl { display: grid; gap: 16px; margin-top: 26px; }
.pf-dl > div { display: grid; grid-template-columns: 6.2em 1fr; gap: 6px 14px; align-items: start; }
.pf-dl dt, .pf-h2 { font-family: var(--f-serif); font-weight: 400; font-size: 13px; letter-spacing: .2em; color: var(--c-purple); line-height: 2.1; }
.pf-dl dt { font-family: var(--f-sans); font-weight: 700; font-size: 13px; letter-spacing: .08em; color: var(--c-ink-soft); }
.pf-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.pf-tag { padding: 3px 14px; border-radius: 999px; background: var(--c-lav-soft); box-shadow: inset 0 0 0 1.5px var(--c-lav); font-size: 14px; font-weight: 700; line-height: 1.8; }
.pf-tag-pk { background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-heart); }
.pf-last { display: flex; align-items: center; gap: 6px; }
.pf-etc { align-self: center; font-size: 14px; font-weight: 700; color: var(--c-ink-soft); }
.pf-act, .pf-lk { margin-top: 28px; }
.pf-h2 { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
.pf-h2::after { content: ""; flex: 1; height: 0; border-top: 2px dotted var(--c-lav); }
.pf-act p { font-size: 15.5px; line-height: 2; }

.pf-links { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px 12px; margin-top: 8px; }
.pf-link { display: grid; grid-template-columns: 22px auto 1fr; align-items: center; gap: 0 10px; min-height: 52px; padding: 8px 16px; border-radius: 18px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); font-size: 14px; line-height: 1.5; }
.pf-link .ic { font-size: 20px; color: var(--c-purple); }
.pf-link .pf-ic { width: 20px; height: 20px; object-fit: contain; }   /* 自分で用意したアイコン画像。SVG（20px）と同じ大きさに収める */
.pf-link-l { font-weight: 700; font-family: var(--f-serif); letter-spacing: .06em; }
.pf-link-t { color: var(--c-ink-soft); font-size: 13px; text-align: right; overflow-wrap: anywhere; }
.pf-note { margin: 4px 6px 0; font-size: 12.5px; line-height: 1.7; color: var(--c-ink-soft); }
.pf-links > li:has(.pf-note) { grid-column: 1 / -1; }
.pf-link.is-done { background: var(--c-purple); color: #fff; box-shadow: none; }
.pf-link.is-done .ic, .pf-link.is-done .pf-link-t { color: #fff; }
.pf-copied { min-height: 0; margin: 4px 6px 0; font-size: 13px; font-weight: 700; color: var(--c-ink-soft); }
.pf-copied:empty { display: none; }
.pf-copied.is-ok { color: var(--c-purple); }

/* 経歴ウィンドウ */
.win { display: flex; flex-direction: column; border-radius: 22px; background: #fff; overflow: hidden; box-shadow: 0 0 0 2px var(--c-ink), 6px 8px 0 -0px var(--c-lav), var(--sh-soft); }
.win-bar { display: flex; align-items: center; gap: 14px; padding: 10px 16px; background: linear-gradient(100deg, var(--c-lav), var(--c-heart)); border-bottom: 2px solid var(--c-ink); }
.win-dots { display: flex; gap: 7px; }
.win-dots .ic { width: 22px; height: 22px; padding: 4px; border-radius: 50%; background: #fff; color: var(--c-pink-deep); box-shadow: 0 0 0 1.5px var(--c-ink); }
.win-dots .ic:nth-child(2) { color: var(--c-purple); }
.win-dots .ic:nth-child(3) { color: var(--c-ink); }
.win-t { display: flex; align-items: baseline; gap: 12px; font-family: var(--f-serif); font-weight: 400; font-size: 17px; letter-spacing: .14em; line-height: 1.4; }
.win-t span { font-family: var(--f-sans); font-weight: 700; font-size: 12px; letter-spacing: .14em; color: var(--c-ink-soft); }
.win-body { max-height: min(56svh, 520px); overflow-y: auto; overscroll-behavior: contain; padding: 0 22px 18px; scrollbar-width: thin; scrollbar-color: var(--c-purple) var(--c-lav-soft); }
.win-body::-webkit-scrollbar { width: 8px; }
.win-body::-webkit-scrollbar-track { background: var(--c-lav-soft); }
.win-body::-webkit-scrollbar-thumb { background: var(--c-purple); border-radius: 8px; }
.win-body:focus-visible { outline-offset: -4px; }
.cr-y {
  position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 10px; margin: 0 -22px; padding: 12px 22px 8px;
  font-family: var(--f-serif); font-weight: 400; font-size: 26px; line-height: 1.3; letter-spacing: .04em;
  background: linear-gradient(#fff 82%, rgba(255, 255, 255, 0));
}
.cr-y .ic { color: var(--c-pink); font-size: 14px; }
.cr-grp { margin-top: 10px; }
.cr-c { font-size: 13px; font-weight: 700; letter-spacing: .06em; color: var(--c-pink-deep); }
.cr-items { margin-top: 2px; }
.cr-items li { position: relative; font-size: 14px; line-height: 1.7; border-bottom: 1px dotted var(--c-lav); }
.cr-i { display: block; padding: 5px 0 5px 18px; overflow-wrap: anywhere; }
/* リンク付きの項目は行全体がクリック範囲。hover は紫、外部リンクは行末の小さなアイコンで見分ける */
.cr-lnk { color: inherit; text-decoration: none; transition: color .2s; }
.cr-lnk:hover { color: var(--c-purple); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.cr-ext { display: inline-block; width: .85em; height: .85em; margin-left: .4em; vertical-align: -.1em; color: var(--c-purple); opacity: .75; }
.cr-items li::before { content: ""; position: absolute; left: 3px; top: 1.05em; width: 6px; height: 6px; border-radius: 1px; background: var(--c-heart); transform: rotate(45deg); }

@media (max-width: 899px) {
  /* モバイル/タブレット: 立ち絵（上半身）→ プロフィール → 経歴 */
  .pf { grid-template-columns: minmax(0, 1fr); grid-template-areas: "fig" "main" "career"; row-gap: 32px; }
  .pf-fig { grid-template: none; position: relative; top: 0; aspect-ratio: auto; max-height: none; height: min(96vw, 440px); min-height: 0; overflow: hidden; border-radius: 30px; place-items: start center; }
  .pf-blob { inset: 0; border-radius: 30px; }
  .pf-float { height: auto; width: min(88%, 380px); display: block; }
  .pf-img { width: 100%; height: auto; }
  /* 差し替えた画像・動画は切り抜かず、縦横比のまま全体を見せる（既定の立ち絵だけ上半身を見せる） */
  .pf-fig.is-custom { aspect-ratio: var(--pf-ar); height: auto; max-height: min(150vw, 640px); place-items: center; }
  .pf-fig.is-custom .pf-float { position: absolute; inset: 0; width: auto; display: grid; place-items: center; }
  .pf-fig.is-custom .pf-img { width: auto; height: 100%; max-width: 100%; }
  .win-body { max-height: 60svh; }
}
@media (max-width: 560px) {
  .pf-dl > div { grid-template-columns: 1fr; gap: 0; }
  .pf-link { grid-template-columns: 22px auto; }
  .pf-link-t { grid-column: 2; text-align: left; }
  .win-body { padding: 0 16px 14px; }
  .cr-y { margin: 0 -16px; padding: 10px 16px 6px; font-size: 22px; }
}

/* ================= CONTACT ================= */
.ct { max-width: 860px; padding-bottom: clamp(64px, 10vw, 110px); }
.ct-h2 { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; font-family: var(--f-serif); font-weight: 400; font-size: 20px; letter-spacing: .1em; line-height: 1.4; }
.ct-h2::before { content: ""; width: 10px; height: 10px; flex: none; border-radius: 2px; background: var(--c-pink); transform: rotate(45deg); }
.ct-status, .ct-lead, .ct-mail, .ct-toggles { margin-top: clamp(32px, 5vw, 52px); }
.ct-lead p { font-size: 15.5px; line-height: 2; }
.ct-can { display: grid; gap: 8px; margin-top: 14px; }
.ct-can li { display: flex; align-items: flex-start; gap: 10px; padding: 12px 18px; border-radius: 18px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); font-size: 15px; font-weight: 700; line-height: 1.7; }
.ct-can .ic { margin-top: .4em; font-size: 14px; color: var(--c-pink); }

.ct-mail { position: relative; overflow: hidden; padding: clamp(24px, 4vw, 40px); border-radius: 28px; background: linear-gradient(160deg, var(--c-lav-soft), #fff 70%); box-shadow: inset 0 0 0 2px var(--c-lav); text-align: center; }
.ct-mail > *:not(.spk) { position: relative; z-index: 1; }
.ct-mail .spk { z-index: 0; }
.ct-mail .ct-h2 { justify-content: center; }
.ct-addr { font-family: var(--f-sans); font-weight: 700; font-size: clamp(1.15rem, 4.6vw, 1.9rem); line-height: 1.5; letter-spacing: .02em; }
.ct-addr a { border-bottom: 2px solid var(--c-heart); overflow-wrap: anywhere; }
.ct-addr a:hover { color: var(--c-purple); }
.ct-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 22px; }
.ct-actions .btn.is-done { background: var(--c-purple); color: #fff; box-shadow: none; }
/* スマホ幅で「フォームでご依頼内容を書く」の最後の1文字だけが次の行に落ちていた。左右の余白と字間を詰めて1行に収め、収まらない狭い端末では <wbr> の位置（語の切れ目）でだけ折る */
@media (max-width: 599px) {
  .ct-actions .btn { padding: 8px 16px; letter-spacing: .03em; line-height: 1.3; word-break: keep-all; }
  .ct-mail .ct-h2 { word-break: keep-all; }
}
.ct-copied { min-height: 1.8em; margin-top: 12px; font-size: 14px; font-weight: 700; color: var(--c-ink-soft); }
.ct-copied.is-ok { color: var(--c-purple); }

.ct-toggles { display: grid; gap: 12px; }
.tg { border-radius: 22px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); transition: box-shadow .2s; }
.tg[open] { box-shadow: inset 0 0 0 2px var(--c-purple); }
.tg summary { display: flex; align-items: center; gap: 12px; min-height: 60px; padding: 12px 20px; list-style: none; cursor: pointer; font-weight: 700; font-size: 16px; line-height: 1.5; border-radius: 22px; }
.tg summary::-webkit-details-marker { display: none; }
.tg summary > span { flex: 1; }
.tg summary > .ic:first-child { font-size: 18px; color: var(--c-pink-deep); }
.tg summary:hover { color: var(--c-purple); }
.tg-chev { font-size: 18px; color: var(--c-purple); transform: rotate(90deg); transition: transform .3s var(--ease-pop); }
.tg[open] .tg-chev { transform: rotate(-90deg); }
.tg.is-closing .tg-chev { transform: rotate(90deg); }
.tg-in { padding: 4px 22px 22px; }
.tg-list { display: grid; gap: 10px; }
.tg-list li { position: relative; padding-left: 20px; font-size: 15px; line-height: 1.85; }
.tg-list li::before { content: ""; position: absolute; left: 3px; top: .85em; width: 7px; height: 7px; border-radius: 1px; background: var(--c-pink); transform: rotate(45deg); }
.tg-steps { counter-reset: st; display: grid; gap: 0; }
.tg-steps li { counter-increment: st; position: relative; display: flex; align-items: center; gap: 14px; padding: 8px 0 8px 0; font-size: 15px; }
.tg-steps li::before { content: counter(st); flex: none; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--grad-cta); color: #fff; font-family: var(--f-serif); font-size: 14px; }
.tg-steps li:not(:last-child)::after { content: ""; position: absolute; left: 14px; top: 42px; bottom: -8px; border-left: 2px dotted var(--c-heart); }
.tg-num { counter-reset: nm; display: grid; gap: 8px; }
.tg-num li { counter-increment: nm; display: flex; gap: 12px; font-size: 15px; line-height: 1.85; }
.tg-num li::before { content: counter(nm); flex: none; width: 26px; height: 26px; margin-top: .2em; display: grid; place-items: center; border-radius: 8px; background: var(--c-lav-soft); color: var(--c-purple); font-family: var(--f-serif); font-size: 13px; }

/* ================= REQUEST（依頼フォーム） ================= */
.rq { max-width: 760px; padding-bottom: clamp(64px, 10vw, 110px); }
.rq-back { margin-top: 18px; }
.rq-back a { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: 14px; color: var(--c-purple); }
.rq-back .ic { transform: rotate(180deg); }
.rq-notice, .rq-form, .rq-confirm { margin-top: clamp(24px, 4vw, 40px); }
.rq-notice { padding: clamp(18px, 3.5vw, 30px); border-radius: 24px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); }
.rq-notice .ct-h2 { margin-bottom: 10px; }
.rq-lead { margin: 18px 0 6px; font-size: 14.5px; line-height: 1.9; color: var(--c-ink-soft); }
.rq-f { margin-top: 24px; }
.rq-l { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-weight: 700; font-size: 15.5px; line-height: 1.6; padding: 0; }
.rq-badge { display: inline-block; padding: 1px 9px; border-radius: 999px; background: var(--c-pink-deep); color: #fff; font-size: 11.5px; font-weight: 700; line-height: 1.7; letter-spacing: .08em; }
.rq-badge.is-opt { background: var(--c-lav-soft); color: var(--c-ink-soft); box-shadow: inset 0 0 0 1px var(--c-lav); }
.rq-hint { margin: 2px 0 8px; font-size: 12.5px; line-height: 1.75; color: var(--c-ink-soft); }
.rq-in { display: block; width: 100%; padding: 12px 16px; border: 0; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); font: inherit; font-size: 16px; line-height: 1.7; color: var(--c-ink); transition: box-shadow .2s; }
.rq-in:hover { box-shadow: inset 0 0 0 2px var(--c-heart); }
.rq-in:focus { outline: none; box-shadow: inset 0 0 0 2.5px var(--c-purple), 0 0 0 4px var(--c-lav); }
.rq-ta { min-height: 7.5em; resize: vertical; }
.rq-err { margin-top: 6px; font-size: 13.5px; font-weight: 700; line-height: 1.6; color: #C0264F; }
.rq-err:empty { display: none; }
.has-err .rq-in { box-shadow: inset 0 0 0 2px #C0264F; }
.has-err .rq-in:focus { box-shadow: inset 0 0 0 2.5px #C0264F, 0 0 0 4px #F7D4DE; }
.rq-radio { margin: 0; padding: 0; border: 0; min-width: 0; }
.rq-opts { display: flex; flex-wrap: wrap; gap: 10px; }
.rq-opt { position: relative; cursor: pointer; }
.rq-opt input { position: absolute; opacity: 0; width: 100%; height: 100%; left: 0; top: 0; margin: 0; cursor: pointer; }
.rq-opt span { display: inline-flex; align-items: center; min-height: 48px; padding: 0 24px; border-radius: 999px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); font-weight: 700; font-size: 15px; transition: background .2s, color .2s, box-shadow .2s; }
.rq-opt input:checked + span { background: var(--c-purple); color: #fff; box-shadow: none; }
.rq-opt input:focus-visible + span { outline: 3px solid var(--c-purple); outline-offset: 3px; }
.has-err .rq-opt span { box-shadow: inset 0 0 0 2px #C0264F; }
.rq-checkline { display: flex; align-items: flex-start; gap: 12px; padding: 12px 16px; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); font-weight: 700; font-size: 15px; line-height: 1.7; cursor: pointer; }
.rq-checkline.is-strong { background: var(--c-lav-soft); box-shadow: inset 0 0 0 2px var(--c-purple); }
.rq-checkline input { flex: none; width: 24px; height: 24px; margin: 2px 0 0; accent-color: var(--c-purple); cursor: pointer; }
.rq-checkline .rq-badge { margin-left: 10px; }
.has-err .rq-checkline { box-shadow: inset 0 0 0 2px #C0264F; }
.rq-chk { margin-top: 20px; }
.rq-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.rq-save { margin-top: 12px; font-size: 12.5px; color: var(--c-ink-soft); }
.rq-confirm .ct-h2 { margin-bottom: 0; }
.rq-confirm .ct-h2:focus { outline: none; }
.rq-sum { display: grid; gap: 10px; margin-top: 12px; }
.rq-sum > div { padding: 12px 18px; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-lav); }
.rq-sum dt { font-size: 12.5px; font-weight: 700; letter-spacing: .06em; color: var(--c-purple); }
.rq-sum dd { margin-top: 2px; font-size: 15px; line-height: 1.8; white-space: pre-wrap; overflow-wrap: anywhere; }
.rq-long { margin-top: 16px; padding: 12px 16px; border-radius: 16px; background: var(--c-lav-soft); font-size: 14px; font-weight: 700; line-height: 1.8; }
.rq-copied { min-height: 1.8em; margin-top: 14px; font-size: 14px; font-weight: 700; color: var(--c-ink-soft); }
.rq-copied.is-ok { color: var(--c-purple); }
.rq-to { margin-top: 4px; font-size: 14px; font-weight: 700; line-height: 1.8; overflow-wrap: anywhere; }
.rq-confirm .rq-ta { margin-top: 12px; }
/* おとり欄（ボット対策）。画面外に置く（左へ逃がすので横スクロールは生まれない） */
.rq-hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
/* 送信（送れる設定のときだけ表示） */
.rq-confirm .btn[disabled] { opacity: .65; cursor: progress; }
.rq-senderr { margin-top: 14px; font-size: 14.5px; font-weight: 700; line-height: 1.8; color: #C0264F; }
.rq-senderr:empty { display: none; }
.rq-senderr:focus { outline: none; }
/* 「送信できない場合」: 送れる設定のときはメールアプリ／コピーを控えめに出し、送信に失敗したら目立たせる */
.rq-alt.is-alt { margin-top: 28px; padding: 16px 18px 6px; border-radius: 18px; background: var(--c-lav-soft); }
.rq-alt.is-alt .rq-actions { margin-top: 14px; }
.rq-alt.is-failed { background: #fff; box-shadow: inset 0 0 0 2px #C0264F; }
.rq-alt-h { font-size: 14.5px; font-weight: 700; line-height: 1.6; color: var(--c-ink-soft); }
.rq-alt-p { margin-top: 4px; font-size: 13.5px; line-height: 1.8; color: var(--c-ink-soft); }
.rq-done { margin-top: clamp(24px, 4vw, 40px); }
.rq-done .ct-h2:focus { outline: none; }
@media (max-width: 560px) {
  .rq-actions .btn { width: 100%; }
  .rq-opts { gap: 8px; }
  .rq-opt span { padding: 0 20px; }
}

/* ================= 404 ================= */
.nf-main { min-height: 78svh; display: grid; }
.nf { position: relative; display: grid; align-content: center; justify-items: center; gap: 14px; text-align: center; padding: 24px 0 90px; }
.nf > *:not(.spk) { position: relative; z-index: 1; }
.nf .spk { z-index: 0; }
.nf-mark { position: relative; width: 180px; animation: pf-float 5.5s ease-in-out infinite; }
.nf-mark img { width: 100%; height: auto; }
.nf-heart { position: absolute; right: -16px; top: -14px; width: 40px; height: 40px; color: var(--c-heart); filter: drop-shadow(0 4px 8px rgba(184, 53, 143, .3)); animation: pf-bob 3.6s ease-in-out infinite; }
.nf-code { display: flex; align-items: center; gap: .08em; font-family: var(--f-serif); font-size: clamp(4.5rem, 20vw, 9rem); line-height: 1; color: var(--c-head, #615C91); }
.nf-code .ic { width: .82em; height: .82em; color: var(--c-pink); filter: drop-shadow(0 8px 14px rgba(184, 53, 143, .3)); animation: pf-bob 3.2s ease-in-out infinite; }
.nf-h { font-size: clamp(1.25rem, 4.2vw, 1.7rem); line-height: 1.5; }
.nf-p { color: var(--c-ink-soft); font-size: 15px; }
.nf-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 10px; }

/* ================= 動きを止める ================= */
@media (prefers-reduced-motion: reduce) {
  .pf-float, .pf-hrt, .nf-mark, .nf-heart, .nf-code .ic { animation: none !important; }
}
