/*
 * 採用サイト recruit.pharma-planning.com のスタイル
 * 色・文字・余白はコーポレートのデザインシステム（pharma-planning.com の DESIGN.md）のトークンにそろえる。
 * 採用サイト固有の色は --rc-* の3つだけ（旧サイトの紫のアクセントと水色の面を引き継ぐ）。
 */
:root {
  --pp-bg: #f7fbfe;
  --pp-surface: #ffffff;
  --pp-surface-soft: #eef7fc;
  --pp-border: #cfe4ef;
  --pp-control-border: #78909c;
  --pp-text: #18313b;
  --pp-muted: #5e7078;
  --pp-deep: #003d55;
  --pp-ink: #002c3d;
  --pp-panel: #2f5d78;
  --pp-night: #082f46;
  --pp-primary: #54b2dc;
  --pp-primary-strong: #2e95c3;
  --pp-action: #247599;
  --pp-action-strong: #1f6584;
  --pp-required-red: #b43b32;
  --pp-env-scrim-deep: linear-gradient(115deg, rgba(0, 45, 61, .62), rgba(0, 74, 153, .30));
  --pp-image-heading-shadow: 0 2px 4px rgba(0, 26, 43, .84), 0 0 14px rgba(0, 26, 43, .38);

  /* 採用サイト固有（旧サイトから引き継ぐ色。紫はアイコン・飾り・大きな文字だけ。白地で 4.0:1） */
  --rc-violet: #7f69f4;
  --rc-sky: #e3f0fa;
  --rc-sky-strong: #cce4f5;

  --pp-font-body: "Hiragino Kaku Gothic ProN", "Hiragino Kaku Gothic Pro", "Yu Gothic", "Meiryo", system-ui, sans-serif;
  --pp-font-display: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Yu Gothic UI", "Meiryo", system-ui, sans-serif;
  --pp-font-latin: "Segoe UI", "Helvetica Neue", Arial, sans-serif;

  --pp-space-1: 4px;
  --pp-space-2: 8px;
  --pp-space-3: 12px;
  --pp-space-4: 16px;
  --pp-space-5: 24px;
  --pp-space-6: 32px;
  --pp-space-7: 48px;
  --pp-space-8: 64px;
  --pp-space-9: 96px;
  --pp-radius-pill: 999px;
  --pp-shadow-raised: 0 12px 28px rgba(0, 61, 85, .18);
  --pp-card-shadow: 0 26px 70px rgba(0, 35, 58, .25);
  --pp-duration-quick: 180ms;
  --pp-duration-base: 240ms;
  --pp-ease-standard: cubic-bezier(.2, .8, .2, 1);
  --pp-header-height: 76px;
  --pp-content-max: 1180px;
  --pp-gutter: clamp(24px, 5vw, 72px);
  --pp-section-gap: var(--pp-space-9);
  color-scheme: light;
}

@media (max-width: 980px) {
  :root { --pp-header-height: 68px; --pp-section-gap: var(--pp-space-8); }
}
@media (max-width: 640px) {
  :root { --pp-gutter: 18px; --pp-section-gap: var(--pp-space-7); }
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-padding-top: calc(var(--pp-header-height) + 12px); -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--pp-bg);
  color: var(--pp-text);
  font-family: var(--pp-font-body);
  font-size: 16px;
  line-height: 1.75;
}
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4 { font-family: var(--pp-font-display); color: var(--pp-deep); margin: 0; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
ul { margin: 0; padding-left: 1.4em; }
a { color: var(--pp-deep); text-underline-offset: 3px; }
a:hover { color: var(--pp-action); }
:focus-visible { outline: 3px solid var(--pp-action); outline-offset: 3px; }
.on-deep :focus-visible, .hero :focus-visible, .cta-band :focus-visible { outline-color: #fff; }

.ic { width: 1em; height: 1em; flex: none; vertical-align: -.125em; fill: currentColor; }

.skip-link {
  position: absolute; left: 12px; top: -60px; z-index: 100;
  background: var(--pp-deep); color: #fff; padding: 8px 16px; font-weight: 700;
}
.skip-link:focus { top: 12px; color: #fff; }

.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.container { width: 100%; max-width: calc(var(--pp-content-max) + var(--pp-gutter) * 2); margin: 0 auto; padding: 0 var(--pp-gutter); }

/* ---------- ヘッダー ---------- */
.site-header {
  position: sticky; top: 0; z-index: 20;
  height: var(--pp-header-height);
  background: rgba(255, 255, 255, .92);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--pp-border);
}
.site-header__inner { height: 100%; display: flex; align-items: center; gap: var(--pp-space-5); }
.site-logo { display: flex; align-items: center; gap: var(--pp-space-4); text-decoration: none; color: var(--pp-ink); min-width: 0; }
.site-logo img { width: clamp(190px, 18vw, 250px); }
.site-logo__label { font-size: 13px; font-weight: 700; color: var(--pp-muted); white-space: nowrap; }
.site-nav { margin-left: auto; }
.site-nav ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: var(--pp-space-5); }
.site-nav a { font-size: 14px; font-weight: 700; color: var(--pp-ink); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; min-height: 44px; }
.site-nav a[aria-current="page"] { box-shadow: inset 0 -3px 0 var(--pp-panel); }
.site-nav a:hover { color: var(--pp-action); }
.menu-button { display: none; }

@media (max-width: 1060px) { .site-logo__label { display: none; } }
@media (max-width: 860px) {
  .menu-button {
    display: inline-flex; align-items: center; gap: 6px; margin-left: auto;
    min-height: 44px; padding: 0 14px; border: 1px solid var(--pp-control-border); background: #fff;
    color: var(--pp-deep); font: 700 13px/1 var(--pp-font-latin); letter-spacing: .12em; cursor: pointer;
  }
  .menu-button .ic { font-size: 20px; }
  .site-nav { display: none; position: absolute; left: 0; right: 0; top: var(--pp-header-height); background: #fff; border-bottom: 1px solid var(--pp-border); box-shadow: var(--pp-shadow-raised); }
  .site-nav.is-open { display: block; }
  .site-nav ul { flex-direction: column; align-items: stretch; gap: 0; padding: var(--pp-space-2) var(--pp-gutter) var(--pp-space-5); }
  .site-nav li { border-bottom: 1px solid var(--pp-border); }
  .site-nav li:last-child { border-bottom: 0; padding-top: var(--pp-space-4); }
  .site-nav a { min-height: 56px; width: 100%; font-size: 15px; }
  .site-nav a[aria-current="page"] { box-shadow: none; background: var(--pp-surface-soft); padding-left: 8px; }
}

/* ---------- ボタンと文字リンク ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 46px; padding: 0 24px; border: 0; cursor: pointer;
  font: 800 14px/1.2 var(--pp-font-body); letter-spacing: .04em; text-decoration: none;
  transition: background-color var(--pp-duration-quick) var(--pp-ease-standard), transform var(--pp-duration-quick) var(--pp-ease-standard);
}
.btn:hover { transform: translateY(-1px); }
.btn--entry { background: var(--pp-action); color: #fff; border-radius: var(--pp-radius-pill); box-shadow: var(--pp-shadow-raised); }
.btn--entry:hover { background: var(--pp-action-strong); color: #fff; }
.site-nav .btn--entry { color: #fff; padding: 0 20px; }
.site-nav .btn--entry:hover { color: #fff; }
.btn--primary { background: var(--pp-deep); color: #fff; min-height: 48px; }
.btn--primary:hover { background: var(--pp-ink); color: #fff; }
.btn--secondary { background: #fff; color: var(--pp-deep); border: 1px solid var(--pp-border); min-height: 48px; }
.btn--secondary:hover { border-color: var(--pp-action); color: var(--pp-deep); }
.btn[disabled], .btn[aria-disabled="true"] { opacity: .45; cursor: not-allowed; transform: none; }
.btn .ic { font-size: 18px; }

.text-link {
  display: inline-flex; align-items: center; gap: 6px; min-height: 44px;
  color: var(--pp-deep); font-weight: 800; text-decoration: underline; text-decoration-color: var(--pp-primary);
  text-decoration-thickness: 2px; text-underline-offset: 5px;
}
.text-link .ic { transition: transform var(--pp-duration-quick) var(--pp-ease-standard); }
.text-link:hover .ic { transform: translateX(3px); }

/* ---------- 見出し ---------- */
.eyebrow {
  display: block; font: 700 12px/1.2 var(--pp-font-latin); letter-spacing: .2em; text-transform: uppercase;
  color: var(--pp-action); margin-bottom: var(--pp-space-3);
}
.section-heading { margin-bottom: var(--pp-space-7); }
.section-heading h2 { font-size: clamp(24px, 3vw, 32px); font-weight: 800; line-height: 1.35; }
.section-heading p { margin-top: var(--pp-space-4); color: var(--pp-muted); font-weight: 700; }
.section-heading--center { text-align: center; }
.page-heading { padding: clamp(56px, 8vh, 96px) 0 var(--pp-space-7); }
.page-heading h1 { font-size: clamp(30px, 4vw, 48px); font-weight: 800; line-height: 1.2; letter-spacing: -.02em; }
.page-heading .lead { margin-top: var(--pp-space-4); color: var(--pp-muted); font-weight: 700; max-width: 45em; }

/* ---------- 区画 ---------- */
.section { padding: var(--pp-section-gap) 0; }
.section--white { background: var(--pp-surface); }
.section--sky { background: var(--rc-sky); }
.section--tight-top { padding-top: 0; }

/* ---------- トップ: ヒーロー ---------- */
.hero { position: relative; isolation: isolate; color: #fff; background: var(--pp-night); }
.hero__media, .hero__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.hero::before { content: ""; position: absolute; inset: 0; background: var(--pp-env-scrim-deep); z-index: -1; }
.hero__body { min-height: clamp(420px, 64vh, 620px); display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: var(--pp-space-9) 0 calc(var(--pp-space-9) + 72px); }
.hero__label { font: 700 clamp(14px, 1.6vw, 18px)/1.3 var(--pp-font-latin); letter-spacing: .2em; text-transform: uppercase; text-shadow: var(--pp-image-heading-shadow); }
.hero h1 { color: #fff; margin-top: var(--pp-space-4); font-size: clamp(28px, 4.4vw, 52px); font-weight: 800; line-height: 1.35; text-shadow: var(--pp-image-heading-shadow); text-wrap: balance; }
.hero__sub { margin-top: var(--pp-space-4); font-size: 13px; font-weight: 700; letter-spacing: .08em; text-shadow: var(--pp-image-heading-shadow); }

.entry-cards { position: relative; margin-top: -72px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pp-space-5); }
.entry-card { background: var(--pp-surface); border-top: 4px solid var(--pp-primary); box-shadow: var(--pp-card-shadow); padding: clamp(24px, 3.4vw, 36px); display: grid; grid-template-columns: auto 1fr; gap: var(--pp-space-2) var(--pp-space-5); align-content: start; }
.entry-card__icon { grid-row: span 3; font-size: 44px; color: var(--rc-violet); line-height: 1; }
.entry-card h2 { font-size: clamp(19px, 2vw, 22px); font-weight: 800; line-height: 1.4; }
.entry-card p { color: var(--pp-text); margin: 0; }
.badge-soon { justify-self: start; display: inline-block; margin-top: var(--pp-space-2); padding: 4px 12px; border: 1px solid var(--pp-control-border); color: var(--pp-muted); font: 700 12px/1.4 var(--pp-font-latin); letter-spacing: .12em; border-radius: var(--pp-radius-pill); }
@media (max-width: 760px) { .entry-cards { grid-template-columns: 1fr; margin-top: -56px; } }

/* ---------- トップ: 導入・メッセージ ---------- */
.statement { text-align: center; font-size: clamp(20px, 2.6vw, 30px); font-weight: 800; line-height: 1.6; color: var(--pp-deep); text-wrap: balance; }
.statement span { display: block; }
.message { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 5vw, 72px); align-items: center; margin-top: var(--pp-space-8); }
.message__media { background: var(--rc-sky); }
.message__media img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.message__body h2 { font: 800 clamp(24px, 3vw, 32px)/1.2 var(--pp-font-latin); letter-spacing: .04em; color: var(--pp-deep); margin-bottom: var(--pp-space-5); }
.message__body > p { max-width: 45em; }
.features { list-style: none; padding: 0; margin: var(--pp-space-6) 0 0; display: grid; gap: var(--pp-space-5); }
.features li { display: grid; grid-template-columns: 48px 1fr; gap: 4px var(--pp-space-4); padding-top: var(--pp-space-5); border-top: 1px solid var(--pp-border); }
.features .ic { grid-row: span 2; font-size: 36px; color: var(--rc-violet); }
.features h3 { font-size: 18px; font-weight: 700; line-height: 1.5; }
.features p { margin: 0; color: var(--pp-muted); font-size: 15px; }
@media (max-width: 860px) { .message { grid-template-columns: 1fr; } .message__media { max-width: 420px; } }

/* ---------- カード（写真つき） ---------- */
.photo-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--pp-space-6); }
.photo-card { background: var(--pp-surface); border-top: 4px solid var(--pp-primary); display: flex; flex-direction: column; }
.photo-card img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.photo-card__body { padding: var(--pp-space-5); }
.photo-card h3 { font-size: 19px; font-weight: 700; line-height: 1.4; margin-bottom: var(--pp-space-3); }
.photo-card p { font-size: 15px; }
@media (max-width: 900px) { .photo-cards { grid-template-columns: 1fr; max-width: 560px; margin: 0 auto; } }

/* ---------- 企業文化（アイコンの格子） ---------- */
.philosophy-lead { text-align: center; font-weight: 700; color: var(--pp-deep); margin-bottom: var(--pp-space-8); }
.philosophy-lead p { margin: 0; }
.values { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--pp-space-7) var(--pp-space-6); }
.values li { text-align: center; padding: 0 var(--pp-space-2); }
.values .ic { font-size: 40px; color: var(--rc-violet); margin: 0 auto var(--pp-space-3); display: block; }
.values h3 { font-size: 18px; font-weight: 700; margin-bottom: var(--pp-space-2); }
.values p { font-size: 15px; text-align: left; max-width: 22em; margin: 0 auto; }
@media (max-width: 860px) { .values { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .values { grid-template-columns: 1fr; } }

/* ---------- 応募への帯 ---------- */
.cta-band { position: relative; isolation: isolate; background: var(--pp-night); color: #fff; padding: var(--pp-space-8) 0; }
.cta-band__media, .cta-band__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.cta-band::before { content: ""; position: absolute; inset: 0; background: linear-gradient(115deg, rgba(8, 47, 70, .92), rgba(0, 61, 85, .78)); z-index: -1; }
.cta-band__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--pp-space-6); flex-wrap: wrap; }
.cta-band .eyebrow { color: #fff; }
.cta-band h2 { color: #fff; font-size: clamp(24px, 3vw, 32px); font-weight: 800; }
.cta-band p { margin: var(--pp-space-3) 0 0; }

/* ---------- フッター ---------- */
.site-footer { background: var(--pp-surface); border-top: 1px solid var(--pp-border); padding: var(--pp-space-7) 0 var(--pp-space-5); font-size: 14px; }
.site-footer__top { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--pp-space-6); flex-wrap: wrap; }
.site-footer__brand img { width: 230px; }
.site-footer__brand p { margin-top: var(--pp-space-3); color: var(--pp-muted); font-size: 13px; }
.site-footer nav ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, auto); gap: 4px var(--pp-space-6); }
.site-footer nav a { display: inline-flex; align-items: center; gap: 4px; min-height: 36px; font-weight: 700; text-decoration: none; }
.site-footer nav a:hover { text-decoration: underline; }
.site-footer__copy { margin-top: var(--pp-space-6); padding-top: var(--pp-space-4); border-top: 1px solid var(--pp-border); color: var(--pp-muted); font: 12px/1.6 var(--pp-font-latin); }
@media (max-width: 560px) { .site-footer nav ul { grid-template-columns: 1fr; } }

/* ---------- 求人一覧 ---------- */
.intro { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(32px, 5vw, 72px); align-items: start; }
.intro__points { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--pp-space-6); }
.intro__points li { display: grid; grid-template-columns: 44px 1fr; gap: var(--pp-space-4); }
.intro__points .ic { font-size: 32px; color: var(--rc-violet); margin-top: 4px; }
.intro__media img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-top: 4px solid var(--pp-primary); }
@media (max-width: 860px) { .intro { grid-template-columns: 1fr; } .intro__media { max-width: 420px; } }

.conditions { background: var(--pp-surface); border-top: 4px solid var(--pp-primary); }
.conditions dl { margin: 0; }
.conditions .row { display: grid; grid-template-columns: 220px 1fr; border-bottom: 1px solid var(--pp-border); }
.conditions .row:last-child { border-bottom: 0; }
.conditions dt { background: var(--pp-surface-soft); padding: var(--pp-space-4) var(--pp-space-5); font-weight: 700; color: var(--pp-deep); }
.conditions dd { margin: 0; padding: var(--pp-space-4) var(--pp-space-5); }
.conditions dd p { margin: 0; }
.conditions dd ul { padding-left: 1.2em; }
@media (max-width: 640px) { .conditions .row { grid-template-columns: 1fr; } .conditions dt { padding-bottom: var(--pp-space-2); } }

.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--pp-space-4); counter-reset: step; }
.steps li { background: var(--pp-surface); border-top: 4px solid var(--pp-primary); padding: var(--pp-space-5) var(--pp-space-4); position: relative; }
.steps__no { display: block; font: 700 28px/1 var(--pp-font-latin); color: var(--pp-primary-strong); }
.steps .ic { position: absolute; right: 16px; top: 22px; font-size: 28px; color: var(--rc-violet); }
.steps h3 { font-size: 18px; font-weight: 700; margin: var(--pp-space-4) 0 var(--pp-space-2); }
.steps p { font-size: 14px; line-height: 1.7; margin: 0; }
@media (max-width: 980px) { .steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .steps { grid-template-columns: 1fr; } }

.job { background: var(--pp-surface); border-top: 4px solid var(--pp-primary); padding: clamp(24px, 4vw, 48px); display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(24px, 4vw, 56px); align-items: start; }
.job h2 { font-size: clamp(24px, 3vw, 32px); font-weight: 800; }
.job__catch { font-size: clamp(18px, 2vw, 21px); font-weight: 700; color: var(--pp-deep); margin: var(--pp-space-4) 0 var(--pp-space-5); display: flex; gap: 10px; align-items: baseline; }
.job__catch .ic { color: var(--rc-violet); font-size: 26px; transform: translateY(4px); }
.job h3 { display: flex; align-items: center; gap: 8px; font-size: 18px; font-weight: 700; margin: var(--pp-space-5) 0 var(--pp-space-2); padding-top: var(--pp-space-4); border-top: 1px solid var(--pp-border); }
.job h3 .ic { color: var(--pp-action); }
.job ul { margin-top: var(--pp-space-2); }
.job__actions { margin-top: var(--pp-space-6); }
.job__media img { width: 100%; }
@media (max-width: 860px) { .job { grid-template-columns: 1fr; } .job__media { order: -1; max-width: 420px; } }

.career { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(24px, 4vw, 56px); align-items: center; }
.career__media img { width: 100%; max-width: 360px; margin: 0 auto; }
.chart { display: grid; grid-template-columns: 240px 1fr; gap: var(--pp-space-6); align-items: center; }
.chart svg { width: 100%; max-width: 240px; height: auto; }
.chart ul { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--pp-space-2); }
.chart li { display: grid; grid-template-columns: 14px 1fr auto; gap: var(--pp-space-3); align-items: center; padding: 6px 0; border-bottom: 1px solid var(--pp-border); }
.chart .swatch { width: 14px; height: 14px; }
.chart .value { font: 700 16px/1 var(--pp-font-latin); color: var(--pp-deep); }
.note { font-size: 13px; color: var(--pp-muted); margin-top: var(--pp-space-4); }
@media (max-width: 860px) { .career { grid-template-columns: 1fr; } .career__media { display: none; } }
@media (max-width: 560px) { .chart { grid-template-columns: 1fr; } .chart svg { margin: 0 auto; } }

.day { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(24px, 4vw, 56px); align-items: start; }
.timeline { margin: 0; border-left: 2px solid var(--pp-primary); padding-left: var(--pp-space-5); }
.timeline .row { position: relative; padding-bottom: var(--pp-space-5); }
.timeline .row::before { content: ""; position: absolute; left: calc(-1 * var(--pp-space-5) - 7px); top: 8px; width: 12px; height: 12px; border-radius: 50%; background: #fff; border: 2px solid var(--pp-primary-strong); }
.timeline dt { font-weight: 700; color: var(--pp-deep); }
.timeline dt time { font: 700 16px/1.4 var(--pp-font-latin); color: var(--pp-action); margin-right: 8px; }
.timeline dd { margin: 4px 0 0; font-size: 15px; }
.day__media img { width: 100%; max-width: 360px; }
@media (max-width: 860px) { .day { grid-template-columns: 1fr; } .day__media { display: none; } }

/* ---------- 応募フォーム ---------- */
.form-steps { list-style: none; margin: 0 0 var(--pp-space-6); padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--pp-border); background: #fff; }
.form-steps li { padding: 12px 16px; font-weight: 700; color: var(--pp-muted); border-right: 1px solid var(--pp-border); display: flex; gap: 10px; align-items: baseline; }
.form-steps li:last-child { border-right: 0; }
.form-steps span { font: 700 13px/1 var(--pp-font-latin); letter-spacing: .1em; }
.form-steps [aria-current="step"] { background: var(--pp-panel); color: #fff; }
.form-panel { background: var(--pp-surface); border-top: 4px solid var(--pp-primary); padding: clamp(20px, 4vw, 40px); }
.form-panel h2 { font-size: 22px; font-weight: 800; margin-bottom: var(--pp-space-5); }
.form-panel h2:focus { outline: none; }
.fields { border: 1px solid var(--pp-border); }
.field { display: grid; grid-template-columns: 240px 1fr; border-bottom: 1px solid var(--pp-border); }
.field:last-child { border-bottom: 0; }
.field__label { background: var(--pp-surface-soft); padding: var(--pp-space-4) var(--pp-space-5); font-weight: 700; color: var(--pp-deep); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.field__control { padding: var(--pp-space-4) var(--pp-space-5); }
.req, .opt { display: inline-block; padding: 1px 8px; font-size: 12px; font-weight: 700; line-height: 1.6; }
.req { background: var(--pp-required-red); color: #fff; }
.opt { border: 1px solid var(--pp-muted); color: var(--pp-muted); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 48px; padding: 10px 14px; border: 1px solid var(--pp-control-border); border-radius: 0;
  background: #fff; color: var(--pp-text); font: 16px/1.5 var(--pp-font-body);
}
.field textarea { min-height: 140px; resize: vertical; }
.field select { appearance: none; -webkit-appearance: none; padding-right: 44px; background-image: linear-gradient(45deg, transparent 50%, var(--pp-deep) 50%), linear-gradient(135deg, var(--pp-deep) 50%, transparent 50%); background-position: calc(100% - 22px) 52%, calc(100% - 16px) 52%; background-size: 6px 6px; background-repeat: no-repeat; }
.field input:focus, .field select:focus, .field textarea:focus { outline: 3px solid var(--pp-action); outline-offset: 0; }
.field [aria-invalid="true"] { border-color: var(--pp-required-red); }
.field__error { display: none; margin: 6px 0 0; color: var(--pp-required-red); font-size: 14px; font-weight: 700; }
.field__error.is-shown { display: flex; gap: 6px; align-items: center; }
.field__hint { margin: 6px 0 0; color: var(--pp-muted); font-size: 13px; }
@media (max-width: 760px) { .field { grid-template-columns: 1fr; } .field__label { padding-bottom: var(--pp-space-2); } }

.error-summary { display: none; margin-bottom: var(--pp-space-5); padding: var(--pp-space-4) var(--pp-space-5); border-left: 3px solid var(--pp-required-red); background: #fbeeed; color: var(--pp-text); }
.error-summary.is-shown { display: block; }
.error-summary strong { color: var(--pp-required-red); }

.privacy-box { margin-top: var(--pp-space-6); padding: var(--pp-space-5); background: var(--pp-surface-soft); font-size: 14px; line-height: 1.8; }
.privacy-box h3 { font-size: 16px; font-weight: 700; margin-bottom: var(--pp-space-3); display: flex; gap: 8px; align-items: center; }
.privacy-box dl { margin: 0; display: grid; grid-template-columns: 8em 1fr; gap: 6px var(--pp-space-4); }
.privacy-box dt { font-weight: 700; color: var(--pp-deep); }
.privacy-box dd { margin: 0; }
@media (max-width: 560px) { .privacy-box dl { grid-template-columns: 1fr; } .privacy-box dd { margin-bottom: 8px; } }
.consent { margin-top: var(--pp-space-5); display: flex; gap: 12px; align-items: flex-start; font-weight: 700; }
.consent input { width: 22px; height: 22px; margin: 3px 0 0; accent-color: var(--pp-action); flex: none; }
.form-actions { margin-top: var(--pp-space-6); display: flex; gap: var(--pp-space-4); justify-content: flex-end; flex-wrap: wrap; align-items: center; }
.turnstile-box { margin-top: var(--pp-space-5); min-height: 0; display: flex; justify-content: flex-end; }
.wait-note { margin: var(--pp-space-3) 0 0; text-align: right; font-size: 13px; color: var(--pp-muted); }

.confirm-table { margin: 0; border: 1px solid var(--pp-border); }
.confirm-table .row { display: grid; grid-template-columns: 240px 1fr; border-bottom: 1px solid var(--pp-border); }
.confirm-table .row:last-child { border-bottom: 0; }
.confirm-table dt { background: var(--pp-surface-soft); padding: 12px var(--pp-space-5); font-weight: 700; color: var(--pp-deep); }
.confirm-table dd { margin: 0; padding: 12px var(--pp-space-5); white-space: pre-wrap; word-break: break-word; }
@media (max-width: 760px) { .confirm-table .row { grid-template-columns: 1fr; } }
.send-error { display: none; margin-top: var(--pp-space-5); padding: var(--pp-space-4) var(--pp-space-5); border-left: 3px solid var(--pp-required-red); background: #fbeeed; }
.send-error.is-shown { display: block; }
.preview-note { margin-top: var(--pp-space-5); padding: var(--pp-space-4) var(--pp-space-5); background: #fff6db; border-left: 3px solid #c08b2b; font-size: 14px; }

.notice-bar { background: #fff6db; color: #4a3b10; font-size: 13px; font-weight: 700; text-align: center; padding: 6px 12px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
@media (prefers-reduced-transparency: reduce) {
  .site-header { background: #fff; -webkit-backdrop-filter: none; backdrop-filter: none; }
}
