:root {
  --hospital-ink: #17352a;
  --hospital-muted: #66756e;
  --hospital-line: #dfe7e2;
  --hospital-surface: #f6f8f5;
  --hospital-mint: #e7f2eb;
  --hospital-wasabi: #758f47;
  --hospital-wasabi-dark: #4e6727;
  --hospital-alert-bg: #fff6df;
  --hospital-alert-ink: #704d0c;
}

.hospital-visit-page { background: #fbfcfa; color: var(--hospital-ink); }
.hospital-hero { padding: clamp(48px, 8vw, 88px) 0; background: linear-gradient(135deg, #f4f7ee 0%, #eaf3ec 54%, #f8f5e8 100%); border-bottom: 1px solid var(--hospital-line); }
.hospital-hero-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr); align-items: center; gap: clamp(32px, 6vw, 80px); }
.hospital-hero h1 { max-width: 720px; margin: 10px 0 18px; color: #17352a; font-size: clamp(2.25rem, 5vw, 4.5rem); font-weight: 650; line-height: 1.08; letter-spacing: -.055em; }
.hospital-hero p { max-width: 680px; color: #53645c; font-size: clamp(1rem, 1.6vw, 1.18rem); line-height: 1.75; }
.hospital-trust-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.hospital-trust-row span { padding: 8px 12px; border: 1px solid #cbdccf; border-radius: 999px; background: rgba(255,255,255,.72); color: #48634e; font-size: .88rem; font-weight: 750; }
.hospital-hero-preview { padding: clamp(26px, 4vw, 40px); border: 1px solid rgba(86,117,85,.22); border-radius: 20px; background: #fff; box-shadow: 0 18px 50px rgba(44,72,55,.12); }
.hospital-preview-label { display: inline-block; margin-bottom: 24px; padding: 6px 10px; border-radius: 6px; background: var(--hospital-mint); color: #3c6249; font-size: .78rem; font-weight: 800; }
.hospital-hero-preview strong { display: block; color: #142e24; font-size: clamp(1.65rem, 3vw, 2.35rem); line-height: 1.35; }
.hospital-hero-preview small { display: block; margin-top: 8px; color: var(--hospital-muted); font-size: 1rem; }
.hospital-hero-preview p { margin: 22px 0 0; padding-top: 18px; border-top: 1px solid var(--hospital-line); color: #41534a; }

.hospital-safety-alert { display: grid; grid-template-columns: auto 1fr; gap: 18px; margin-top: 32px; padding: 24px; border: 1px solid #ead39b; border-radius: 14px; background: var(--hospital-alert-bg); color: var(--hospital-alert-ink); }
.hospital-safety-alert > div:first-child span { display: grid; width: 54px; height: 54px; place-items: center; border-radius: 12px; background: #8c5d0a; color: #fff; font-size: 1rem; font-weight: 900; }
.hospital-safety-alert h2 { margin: 0 0 7px; color: #6b4809; font-size: clamp(1.15rem, 2vw, 1.45rem); }
.hospital-safety-alert p { margin: 0; line-height: 1.7; }
.hospital-safety-alert a { display: inline-block; margin-top: 10px; color: #624006; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }

.hospital-card-shell { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(360px, .92fr); gap: 24px; margin-top: 32px; align-items: start; }
.hospital-form-panel, .hospital-result-panel { padding: clamp(24px, 4vw, 38px); border: 1px solid var(--hospital-line); border-radius: 16px; background: #fff; }
.hospital-result-panel { position: sticky; top: 24px; }
.hospital-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.hospital-form-grid label:nth-child(3) { grid-column: 1 / -1; }
.hospital-form-panel label > span, .hospital-caution-fieldset legend { display: block; margin-bottom: 8px; color: #263c32; font-weight: 800; }
.hospital-form-panel label em { color: #8a4c0e; font-size: .75rem; font-style: normal; }
.hospital-form-panel label small { color: var(--hospital-muted); font-weight: 500; }
.hospital-form-panel select, .hospital-form-panel textarea { width: 100%; min-height: 48px; border: 1px solid #b9c9bf; border-radius: 8px; background: #fff; color: var(--hospital-ink); font: inherit; }
.hospital-form-panel select { padding: 0 13px; }
.hospital-form-panel textarea { padding: 12px 13px; line-height: 1.6; resize: vertical; }
.hospital-form-panel select:focus, .hospital-form-panel textarea:focus { outline: 3px solid rgba(117,143,71,.2); border-color: var(--hospital-wasabi-dark); }
[data-hospital-error] { display: block; min-height: 1.3em; margin-top: 6px; color: #a13e2b !important; }
.hospital-caution-fieldset { margin: 26px 0 0; padding: 0; border: 0; }
.hospital-check-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.hospital-check-grid label { display: flex; min-height: 52px; align-items: center; gap: 10px; padding: 12px; border: 1px solid var(--hospital-line); border-radius: 9px; background: var(--hospital-surface); cursor: pointer; }
.hospital-check-grid input { width: 20px; height: 20px; flex: 0 0 auto; accent-color: var(--hospital-wasabi-dark); }
.hospital-check-grid label > span { margin: 0; font-size: .92rem; }
.hospital-memo-grid { display: grid; gap: 18px; margin-top: 26px; }
.hospital-form-actions, .hospital-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.hospital-primary-button, .hospital-secondary-button { min-height: 46px; padding: 11px 18px; border-radius: 8px; font: inherit; font-weight: 800; cursor: pointer; }
.hospital-primary-button { border: 1px solid var(--hospital-wasabi-dark); background: var(--hospital-wasabi-dark); color: #fff; }
.hospital-secondary-button { border: 1px solid #aebdb3; background: #fff; color: #30473b; }
.hospital-primary-button:focus-visible, .hospital-secondary-button:focus-visible { outline: 3px solid rgba(117,143,71,.3); outline-offset: 2px; }
.hospital-privacy-note { display: grid; gap: 4px; margin-top: 24px; padding: 16px; border-radius: 10px; background: var(--hospital-mint); color: #365443; }
.hospital-privacy-note span { line-height: 1.65; }

.hospital-result-placeholder { display: grid; min-height: 310px; place-items: center; align-content: center; gap: 15px; padding: 30px; border: 1px dashed #b8c7bd; border-radius: 12px; background: var(--hospital-surface); text-align: center; }
.hospital-result-placeholder span { display: grid; width: 64px; height: 64px; place-items: center; border-radius: 18px; background: var(--hospital-mint); color: #4d704f; font-size: 2rem; font-weight: 700; }
.hospital-result-placeholder p { margin: 0; color: var(--hospital-muted); line-height: 1.7; }
.hospital-result-card { overflow: hidden; border: 1px solid #b5c7ba; border-radius: 12px; background: #fff; }
.hospital-result-card.is-enlarged .hospital-japanese-panel { position: fixed; z-index: 10000; inset: 0; display: grid; align-content: center; padding: clamp(24px, 7vw, 80px); background: #fff; }
.hospital-result-card.is-enlarged .hospital-ja-close { display: inline-flex; position: fixed; z-index: 10001; top: 18px; right: 18px; }
.hospital-ja-close { display: none; }
.hospital-result-header { padding: 14px 18px; background: #203d31; color: #fff; }
.hospital-result-header strong { display: block; font-size: .95rem; }
.hospital-result-header span { display: block; margin-top: 3px; color: #d6e5dc; font-size: .78rem; }
.hospital-japanese-panel, .hospital-korean-panel { padding: 24px; }
.hospital-japanese-panel { background: #f3f7f3; }
.hospital-japanese-panel h3, .hospital-korean-panel h3 { margin: 0 0 14px; color: #45604f; font-size: .82rem; letter-spacing: .05em; }
.hospital-japanese-panel strong { display: block; color: #132c22; font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.45; word-break: break-word; }
.hospital-japanese-panel small { display: block; margin-top: 7px; color: #5f7067; font-size: .95rem; word-break: break-word; }
.hospital-japanese-panel ul, .hospital-korean-panel ul { display: grid; gap: 8px; margin: 18px 0 0; padding-left: 1.2em; }
.hospital-japanese-panel p, .hospital-korean-panel p { margin: 18px 0 0; line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere; }
.hospital-korean-panel { border-top: 1px solid var(--hospital-line); }
.hospital-card-disclaimer { padding: 13px 18px; border-top: 1px solid var(--hospital-line); background: #fff8e8; color: #74500d; font-size: .8rem; line-height: 1.6; }

.hospital-preparation, .hospital-next-actions { margin-top: 34px; padding: clamp(26px, 4vw, 40px); border: 1px solid var(--hospital-line); border-radius: 16px; background: #fff; }
.hospital-preparation ul { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 24px 0 0; padding: 0; list-style: none; counter-reset: prep; }
.hospital-preparation li { min-height: 94px; padding: 18px; border-radius: 10px; background: var(--hospital-surface); color: #30463b; font-weight: 750; line-height: 1.55; }
.hospital-preparation li::before { counter-increment: prep; content: counter(prep); display: grid; width: 26px; height: 26px; place-items: center; margin-bottom: 10px; border-radius: 7px; background: var(--hospital-mint); color: #42644a; font-size: .8rem; }
.hospital-next-actions { margin-bottom: 48px; }
.hospital-next-actions > div:last-child { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 24px; }
.hospital-next-actions a { display: grid; gap: 4px; padding: 18px; border: 1px solid var(--hospital-line); border-radius: 10px; background: var(--hospital-surface); color: var(--hospital-ink); }
.hospital-next-actions a span { color: var(--hospital-muted); font-size: .9rem; }

@media (max-width: 900px) {
  .hospital-hero-grid, .hospital-card-shell { grid-template-columns: 1fr; }
  .hospital-result-panel { position: static; }
  .hospital-preparation ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .hospital-hero { padding: 42px 0; }
  .hospital-hero-preview { display: none; }
  .hospital-safety-alert { grid-template-columns: 1fr; padding: 20px; }
  .hospital-form-grid, .hospital-check-grid, .hospital-next-actions > div:last-child { grid-template-columns: 1fr; }
  .hospital-form-grid label:nth-child(3) { grid-column: auto; }
  .hospital-form-panel, .hospital-result-panel, .hospital-preparation, .hospital-next-actions { padding: 20px; border-radius: 12px; }
  .hospital-form-actions > *, .hospital-actions > * { width: 100%; }
  .hospital-preparation ul { grid-template-columns: 1fr; }
}

@media print {
  @page { size: A4 portrait; margin: 14mm; }
  body { background: #fff !important; color: #111 !important; }
  .hospital-screen-only, .hospital-result-placeholder, .hospital-actions { display: none !important; }
  .hospital-safety-alert { display: grid !important; margin: 0 0 8mm; padding: 5mm; border: 1px solid #8a6a24; break-inside: avoid; }
  .hospital-safety-alert a { display: none; }
  .hospital-result-card { display: block !important; border: 1px solid #777; border-radius: 0; break-inside: avoid; }
  .hospital-japanese-panel strong { font-size: 22pt; }
  .hospital-japanese-panel, .hospital-korean-panel { padding: 7mm; }
}
