:root {
  --navy: #102b56;
  --teal: #007f7b;
  --ink: #172033;
  --muted: #5b6575;
  --line: #cad4e0;
  --pale: #f1f6f9;
  --white: #ffffff;
  --danger: #a3342b;
  font-family: "Hiragino Sans", "Yu Gothic", "Noto Sans JP", sans-serif;
  color: var(--ink);
  background: var(--white);
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--white); line-height: 1.65; }
button, input, textarea { font: inherit; }
button { cursor: pointer; }
.site-header { min-height: 64px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; padding: 0 38px; }
.brand { color: var(--navy); font-size: 21px; font-weight: 800; letter-spacing: .04em; }
.site-header p { margin: 0; font-size: 14px; font-weight: 700; }
.page-shell { width: min(1180px, calc(100% - 40px)); margin: 0 auto; padding: 42px 0 68px; }
.progress { display: flex; max-width: 710px; justify-content: space-between; margin: 0 auto 62px; padding: 0; list-style: none; position: relative; }
.progress::before { content: ""; height: 2px; background: var(--line); position: absolute; top: 20px; left: 11%; right: 11%; z-index: 0; }
.progress li { z-index: 1; background: var(--white); min-width: 130px; text-align: center; font-weight: 700; color: var(--muted); font-size: 14px; }
.progress span { display: block; width: 40px; height: 40px; line-height: 40px; margin: 0 auto 7px; border-radius: 50%; color: var(--white); background: #8793a2; font-size: 18px; }
.progress .active { color: var(--navy); }
.progress .active span { background: var(--navy); }
.intro { max-width: 750px; margin-bottom: 30px; }
h1, h2, h3, p { margin-top: 0; }
h1 { font-size: clamp(30px, 4vw, 42px); line-height: 1.28; letter-spacing: .025em; margin-bottom: 13px; }
h2 { font-size: 22px; line-height: 1.4; margin-bottom: 0; }
h3 { font-size: 16px; margin-bottom: 8px; }
.eyebrow { color: var(--teal); font-size: 13px; font-weight: 800; letter-spacing: .08em; margin-bottom: 7px; }
.intro > p:last-child, .guidance { color: var(--muted); max-width: 700px; }
.form-panel, .memo-panel { border: 1px solid var(--line); padding: 32px; }
.form-panel label, .form-panel fieldset { display: block; border: 0; padding: 0; margin: 0 0 25px; }
.form-panel label > span, legend { display: block; font-weight: 800; margin-bottom: 8px; }
b { color: var(--teal); font-size: 12px; margin-left: 5px; }
input[type="text"], input:not([type]), textarea { width: 100%; border: 1px solid #95a5b7; padding: 13px 14px; color: var(--ink); background: var(--white); border-radius: 2px; }
textarea { resize: vertical; }
input:focus, textarea:focus { outline: 3px solid #b8e2df; outline-offset: 1px; border-color: var(--teal); }
.choice-row { display: flex; gap: 12px; flex-wrap: wrap; }
.radio-choice { display: flex !important; margin: 0 !important; align-items: center; gap: 8px; padding: 11px 14px; border: 1px solid var(--line); font-weight: 600; }
.radio-choice input { accent-color: var(--navy); }
.consent-choice { display: flex !important; align-items: flex-start; gap: 10px; padding: 14px; border: 1px solid #b8dfdc; background: #f2fbfa; font-size: 13px; line-height: 1.65; }
.consent-choice input { margin-top: 5px; accent-color: var(--teal); }
.turnstile-container { min-height: 0; margin: -8px 0 17px; }
.actions { display: flex; justify-content: flex-end; align-items: center; gap: 12px; margin-top: 34px; }
.split-actions { justify-content: space-between; }
.button-primary, .button-secondary { padding: 12px 19px; border: 1px solid var(--navy); font-weight: 800; border-radius: 2px; }
.button-primary { background: var(--navy); color: var(--white); }
.button-primary:hover { background: #0a2043; }
.button-secondary { background: var(--white); color: var(--navy); }
.button-secondary:hover { background: var(--pale); }
.error-message { color: var(--danger); font-weight: 700; min-height: 1.6em; margin: 10px 0 0; }
.screen-heading, .result-heading { display: flex; gap: 30px; align-items: start; justify-content: space-between; }
.answer-count { margin: 10px 0 0; color: var(--navy); font-weight: 800; white-space: nowrap; }
.question-page-status + #question-groups { overflow: hidden; margin-top: 22px; }
.question-track { display: flex; width: 700%; transition: transform .32s ease; will-change: transform; }
.question-stage { flex: 0 0 calc(100% / 7); padding-right: 2px; }
.question-page-status { color: var(--navy); border-left: 3px solid var(--teal); padding: 7px 11px; background: var(--pale); font-size: 14px; font-weight: 800; }
.question-page-dots { display: flex; justify-content: center; gap: 11px; margin: 24px 0 6px; }.question-page-dot { width: 10px; height: 10px; border-radius: 50%; background: #bdc8d5; }.question-page-dot.active { background: var(--ink); transform: scale(1.18); }
.question-stage-label { color: var(--teal); font-size: 14px; font-weight: 800; margin: 0 0 13px; }
.question-stage > h2 { padding: 12px 16px; background: var(--pale); color: var(--navy); font-size: 17px; }
.dimension-block { padding: 25px 0 8px; border-bottom: 1px solid var(--line); }
.dimension-block h2, .dimension-block h3 { display: flex; align-items: center; gap: 8px; font-size: 20px; }
.dimension-block h2 span, .dimension-block h3 span { color: var(--teal); font-size: 22px; }
.question-card { border: 0; padding: 0 0 22px; margin: 0; }
.question-card legend { font-size: 16px; font-weight: 700; padding: 0; }
.question-card legend span { color: var(--teal); font-size: 13px; margin-right: 8px; }
.answer-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin-top: 10px; }
.answer-option { display: flex; align-items: flex-start; gap: 8px; padding: 11px; border: 1px solid var(--line); font-size: 14px; cursor: pointer; }
.answer-option:has(input:checked) { border-color: var(--teal); background: #effafa; }
.answer-option input { margin-top: 4px; accent-color: var(--teal); }
.score-dot { width: 20px; height: 20px; flex: 0 0 20px; border-radius: 50%; text-align: center; line-height: 20px; background: var(--pale); color: var(--navy); font-size: 12px; font-weight: 800; }
.input-summary { display: grid; grid-template-columns: 1fr 1.7fr 1fr; margin: 28px 0 25px; border: 1px solid var(--line); }
.input-summary div { padding: 16px 19px; min-width: 0; }
.input-summary div + div { border-left: 1px solid var(--line); }
.input-summary dt { color: var(--muted); font-size: 13px; font-weight: 800; }
.input-summary dd { margin: 4px 0 0; font-size: 18px; font-weight: 800; overflow-wrap: anywhere; }
.gpt-copy-panel { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 18px 24px; margin: 0 0 25px; padding: 22px 24px; border: 1px solid #b8dfdc; background: #f2fbfa; }.gpt-copy-panel h2 { color: var(--navy); }.gpt-copy-panel p:last-child { max-width: 720px; margin: 8px 0 0; color: var(--muted); font-size: 14px; }.gpt-copy-action { align-self: end; }.gpt-copy-action .button-secondary { width: 100%; margin-top: 10px; }.copy-status { min-height: 1.7em; color: var(--teal) !important; font-size: 13px !important; font-weight: 800; }.ai-content { grid-column: 1 / -1; padding-top: 18px; border-top: 1px solid #b8dfdc; }.ai-content h3 { color: var(--navy); margin: 18px 0 8px; }.ai-content h3:first-child { margin-top: 0; }.ai-content p { margin: 0 0 9px; }.ai-content .ai-list { padding-left: 4px; }
.results-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 18px; }
.score-panel, .priority-panel { border: 1px solid var(--line); padding: 26px; }
.panel-title-row { display: flex; justify-content: space-between; gap: 16px; align-items: start; }
.panel-title-row > span { color: var(--muted); font-size: 13px; font-weight: 800; }
.chart-wrap { max-width: 520px; margin: 8px auto 15px; }
#radar-chart { width: 100%; display: block; }
.radar-grid polygon, .radar-grid line { fill: none; stroke: #cbd6e0; stroke-width: 1; }
.radar-area { fill: rgba(0, 127, 123, .16); stroke: var(--teal); stroke-width: 3; }
.radar-point { fill: var(--teal); }
.radar-label { fill: var(--navy); font-size: 14px; font-weight: 800; }
.score-list { list-style: none; padding: 0; margin: 0; }
.score-list li { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; border-top: 1px solid var(--line); padding: 9px 0; font-size: 13px; }
.score-list strong { color: var(--navy); font-size: 17px; }.score-list small { font-size: 11px; }.score-list em { font-style: normal; font-size: 11px; padding: 2px 5px; border-radius: 2px; }.state-low { color: #8b2c24; background: #f8e9e7; }.state-mid { color: #7b5b12; background: #fbf4df; }.state-ready { color: #176148; background: #e7f5ed; }
.priority-panel { background: var(--white); }.primary-description { font-size: 16px; }.composite-action { border-top: 1px solid var(--line); padding-top: 18px; margin-top: 18px; }.primary-name { padding: 15px 17px; background: var(--navy); color: var(--white); font-size: 18px; font-weight: 800; line-height: 1.45; margin: 0 0 13px; }.primary-name span { display: block; font-size: 13px; font-weight: 600; opacity: .86; }.composite-action > p:not(.primary-name) { margin-bottom: 0; }.first-step { border: 1px solid #b8dfdc; background: #f2fbfa; padding: 16px; margin-top: 16px; }.first-step h3 { color: var(--teal); }.first-step p { margin: 0; font-weight: 600; }.secondary-priority { border-top: 1px solid var(--line); margin-top: 23px; padding-top: 18px; }.secondary-priority p { color: var(--muted); font-size: 13px; font-weight: 800; margin-bottom: 3px; }.secondary-priority strong { font-size: 16px; }.continuity-review { margin-top: 17px; padding: 12px; border-left: 3px solid var(--teal); background: var(--pale); font-size: 14px; font-weight: 700; }
.question-profile { margin-top: 22px; border-top: 1px solid var(--line); padding-top: 14px; }.question-profile-toggle { width: 100%; display: flex; align-items: center; justify-content: space-between; border: 0; padding: 7px 0; color: var(--navy); background: var(--white); text-align: left; }.question-profile-toggle span { display: grid; gap: 2px; }.question-profile-toggle small { color: var(--muted); font-size: 12px; }.question-profile-toggle b { color: var(--navy); margin: 0; font-size: 24px; line-height: 1; }.question-profile > div > p { color: var(--muted); font-size: 13px; margin-top: 13px; }.question-profile section { border-top: 1px solid var(--line); padding: 13px 0; }.question-profile h4 { color: var(--navy); margin: 0 0 7px; font-size: 14px; }.question-profile ul { list-style: none; padding: 0; margin: 0; }.question-profile li { display: grid; grid-template-columns: 1fr auto; gap: 10px; padding: 6px 0; font-size: 12px; }.question-profile li strong { color: var(--teal); white-space: nowrap; }
.memo-panel { margin-top: 18px; }.memo-panel textarea { margin-top: 17px; }.memo-panel p:last-child { color: var(--muted); font-size: 13px; margin: 11px 0 0; }.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 760px) { .site-header { padding: 0 18px; }.site-header p { font-size: 11px; }.brand { font-size: 17px; }.page-shell { width: min(100% - 28px, 1180px); padding-top: 28px; }.progress { margin-bottom: 40px; }.progress li { min-width: 0; font-size: 11px; }.progress span { width: 33px; height: 33px; line-height: 33px; }.progress::before { top: 16px; }.form-panel, .score-panel, .priority-panel, .memo-panel, .gpt-copy-panel { padding: 20px; }.screen-heading, .result-heading { display: block; }.result-heading .button-secondary { margin-top: 16px; }.gpt-copy-panel { grid-template-columns: 1fr; }.gpt-copy-action { min-width: 0; }.answer-options, .results-grid, .input-summary { grid-template-columns: 1fr; }.input-summary div + div { border-left: 0; border-top: 1px solid var(--line); }.choice-row { display: grid; }.actions { flex-direction: column-reverse; align-items: stretch; }.split-actions { flex-direction: column; }.button-primary, .button-secondary { width: 100%; }.primary-name { font-size: 21px; }.score-list li { grid-template-columns: 1fr auto; }.score-list em { grid-column: 1 / -1; justify-self: start; } }
