:root { --amber: #3A7CC3; --navy: #17457B; --primary: #17457B; --accent: #3A7CC3; --bg-soft: #F5F7FA; --line: #DDE4EE; }
body { font-family: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', sans-serif; color: #3A4250; }
.font-serif-jp { font-family: 'Zen Kaku Gothic New', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif; letter-spacing: .03em; }
.font-en { font-family: 'Jost', 'Helvetica Neue', Arial, sans-serif; }

.brand-logo { font-weight: 900; letter-spacing: 0.15em; font-size: 1.05rem; }
.brand-logo span { color: var(--amber); }

/* Hero */
.hero { background: radial-gradient(1200px 600px at 80% -10%, rgba(58,124,195,.45), transparent 60%), linear-gradient(160deg, #0C2747 0%, #17457B 100%); position: relative; }
.hero::after { content: ''; position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px); background-size: 48px 48px; pointer-events: none; }
.hero-card { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); border-radius: 1.25rem; padding: 1.75rem; backdrop-filter: blur(8px); }
.cta-primary { white-space: nowrap; display: inline-flex; align-items: center; justify-content: center; background: #fff; color: #17457B; font-weight: 700; padding: 1rem 2rem; border-radius: 999px; box-shadow: 0 10px 30px -12px rgba(12,39,71,.6); transition: transform .15s, background .15s; }
.cta-primary:hover { background: #EAF1F8; transform: translateY(-2px); }

.section-title { text-align: center; font-family: 'Zen Kaku Gothic New', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif; letter-spacing: .03em; font-size: clamp(1.5rem, 3vw, 2.1rem); font-weight: 700; line-height: 1.5; }
.feature-card { background: #F5F7FA; border: 1px solid #DDE4EE; border-radius: 1rem; padding: 2rem; }
.feature-card i { font-size: 1.6rem; color: var(--amber); }
.feature-card h3 { font-weight: 700; font-size: 1.1rem; margin-top: 1rem; }
.feature-card p { color: #56606E; font-size: .9rem; line-height: 1.8; margin-top: .6rem; }
.area-card { background: #fff; border-radius: 1rem; padding: 1.5rem; border-top: 4px solid var(--amber); box-shadow: 0 4px 20px -12px rgba(0,0,0,.15); }
.area-no { font-size: .75rem; font-weight: 900; color: #8F9AAA; letter-spacing: .1em; }
.flow-item { display: flex; gap: 1.25rem; align-items: flex-start; background: #F5F7FA; border-radius: 1rem; padding: 1.5rem; }
.flow-step { flex-shrink: 0; background: var(--navy); color: #9DBFE4; font-size: .7rem; font-weight: 900; letter-spacing: .1em; padding: .4rem .7rem; border-radius: .4rem; }
.faq-item { background: #fff; border-radius: .75rem; padding: 1.1rem 1.4rem; border: 1px solid #DDE4EE; }
.faq-item summary { font-weight: 700; cursor: pointer; }
.faq-item p { color: #56606E; font-size: .9rem; margin-top: .7rem; line-height: 1.8; }

/* Survey */
.tip-box { background: #EAF1F8; border: 1px solid #C2D7EE; border-radius: .75rem; padding: 1rem 1.2rem; font-size: .9rem; line-height: 1.8; color: #17457B; }
.tip-list { list-style: disc; padding-left: 1.3rem; margin-top: .3rem; }
.spinner { width: 48px; height: 48px; border: 4px solid #DDE4EE; border-top-color: var(--amber); border-radius: 50%; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* Report */
.report-header { background: linear-gradient(160deg, #0C2747 0%, #17457B 100%); color: #fff; }
.report-card { background: #fff; border-radius: 1.25rem; padding: 2rem; box-shadow: 0 10px 40px -20px rgba(0,0,0,.2); border: 1px solid #EEF2F7; }
.report-h2 { font-weight: 800; font-size: 1.15rem; display: flex; align-items: center; gap: .6rem; }
.report-h2 i { color: var(--amber); }
.grade-badge { display: inline-flex; align-items: center; justify-content: center; width: 4rem; height: 4rem; border-radius: 1rem; color: #fff; font-size: 2.2rem; font-weight: 900; }
.hero-card .grade-badge { width: 3rem; height: 3rem; font-size: 1.6rem; }
.grade-B { background: #2F6CB0; }
.grade-scale { display: flex; gap: 4px; }
.grade-scale span { flex: 1; text-align: center; padding: .3rem 0; background: #EEF2F7; color: #8F9AAA; font-weight: 800; font-size: .8rem; border-radius: .3rem; }
.grade-scale span.active { color: #fff; }
.item-chip { font-size: .75rem; background: #EEF2F7; color: #3A4250; padding: .25rem .6rem; border-radius: 999px; }
.expert-note { background: #ecfdf5; border-left: 3px solid #059669; padding: .7rem 1rem; font-size: .85rem; color: #064e3b; border-radius: 0 .5rem .5rem 0; line-height: 1.7; }
.statement-card { background: linear-gradient(135deg, #EAF1F8, #fff); border-color: #C2D7EE; }
.statement-quote { font-family: 'Zen Kaku Gothic New', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif; letter-spacing: .03em; font-size: 1.25rem; line-height: 1.9; margin-top: 1.25rem; padding: 1.25rem 1.5rem; border-left: 4px solid var(--amber); background: #fff; border-radius: 0 .75rem .75rem 0; }
.statement-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .75rem; }
.statement-grid div { background: #fff; border: 1px solid #EEF2F7; border-radius: .6rem; padding: .7rem .9rem; }
.statement-grid dt { font-size: .7rem; font-weight: 800; color: #2F6CB0; letter-spacing: .05em; }
.statement-grid dd { font-size: .85rem; margin-top: .2rem; color: #3A4250; }
.statement-blank { color: #17457B; background: #DCE8F6; border-radius: .25rem; padding: 0 .2rem; }
.statement-gaps { background: #F5F7FA; border: 1px solid #C2D7EE; border-radius: .75rem; padding: 1rem 1.25rem; }
.hook-no { flex-shrink: 0; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--navy); color: #9DBFE4; font-size: .8rem; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.cta-card { background: linear-gradient(160deg, #0C2747 0%, #17457B 100%); color: #fff; border-radius: 1.25rem; padding: 2.5rem; }
.service-chip { background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12); border-radius: .6rem; padding: .7rem 1rem; font-size: .9rem; }
.form-input { display: block; width: 100%; margin-top: .3rem; border: 1px solid #C3CDDA; border-radius: .5rem; padding: .55rem .75rem; font-weight: 400; font-size: .9rem; background: #fff; }
.form-input:focus { outline: 2px solid #3A7CC3; border-color: transparent; }

/* Admin */
.admin-card { background: #fff; border-radius: 1rem; padding: 1.5rem; }
.admin-table { width: 100%; font-size: .85rem; border-collapse: collapse; }
.admin-table th { text-align: left; font-size: .72rem; color: #6B7584; padding: .6rem .5rem; border-bottom: 1px solid #DDE4EE; white-space: nowrap; }
.admin-table td { padding: .7rem .5rem; border-bottom: 1px solid #EEF2F7; vertical-align: top; }
.admin-table tbody tr { cursor: pointer; }
.admin-table tbody tr:hover { background: #EAF1F8; }
.rank { display: inline-flex; width: 1.6rem; height: 1.6rem; align-items: center; justify-content: center; border-radius: .4rem; font-weight: 900; font-size: .8rem; color: #fff; }
.rank-A { background: #dc2626; } .rank-B { background: #2F6CB0; } .rank-C { background: #8F9AAA; }
.q-label { font-size: .85rem; font-weight: 700; color: #3A4250; }
.answer-box { margin-top: .4rem; background: #F5F7FA; border: 1px solid #EEF2F7; border-radius: .5rem; padding: .7rem .9rem; font-size: .88rem; line-height: 1.8; }
.score-pill { font-size: .8rem; font-weight: 800; background: #EEF2F7; padding: .2rem .7rem; border-radius: 999px; }
.file-row { display: flex; align-items: center; gap: .8rem; border: 1px solid #EEF2F7; border-radius: .5rem; padding: .5rem; }
.link { color: #2F6CB0; text-decoration: underline; }

/* Print (PDF) */
@media print {
  .no-print { display: none !important; }
  body { background: #fff; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .report-card, .cta-card { box-shadow: none; break-inside: avoid; }
  .report-header { padding-bottom: 1rem; }
  main { margin-top: 0 !important; }
}

/* 注意シグナル */
.lamp-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .6rem; }
@media (max-width: 640px) { .lamp-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.lamp-item { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .35rem; background: #F5F7FA; border: 1px solid #EEF2F7; border-radius: .8rem; padding: .85rem .5rem; }
.lamp { width: 1.1rem; height: 1.1rem; border-radius: 50%; }
.lamp-red { background: #ef4444; box-shadow: 0 0 0 4px rgba(239,68,68,.15); }
.lamp-yellow { background: #f59e0b; box-shadow: 0 0 0 4px rgba(245,158,11,.15); }
.lamp-green { background: #10b981; box-shadow: 0 0 0 4px rgba(16,185,129,.15); }
.alert-card { border: 1px solid #EEF2F7; border-left-width: 4px; border-radius: .75rem; padding: 1rem 1.15rem; background: #fff; }
.alert-high { border-left-color: #ef4444; background: linear-gradient(90deg, #fef2f2, #fff 40%); }
.alert-mid { border-left-color: #f59e0b; background: linear-gradient(90deg, #fffbeb, #fff 40%); }
.alert-badge { flex-shrink: 0; font-size: .68rem; font-weight: 800; padding: .2rem .55rem; border-radius: 999px; margin-top: .1rem; white-space: nowrap; }
.alert-badge-high { background: #fee2e2; color: #b91c1c; }
.alert-badge-mid { background: #fef3c7; color: #92400e; }
.alert-risk { margin-top: .55rem; font-size: .8rem; color: #9f1239; background: #fff1f2; border-radius: .4rem; padding: .4rem .65rem; line-height: 1.6; }
.alert-foot { display: flex; gap: .9rem; align-items: flex-start; margin-top: 1.25rem; padding: 1rem 1.15rem; border: 1px dashed #9DBFE4; background: #F5F7FA; border-radius: .75rem; }
.print-only { display: none; }
@media print { .print-only { display: inline; } .alert-card, .alert-foot { break-inside: avoid; } }

/* 見出し・ボタン（コーポレートサイトに合わせた調整） */
.section-title { color: #333A45; }
.report-h2 { font-family: 'Zen Kaku Gothic New', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif; color: #333A45; letter-spacing: .03em; }
.brand-logo { font-family: 'Jost', 'Helvetica Neue', Arial, sans-serif; font-weight: 500; letter-spacing: .18em; }
.brand-logo span { color: #6FA0D6; }
.area-card { border-top-color: var(--primary); }
.cta-primary.hidden { display: none; }
