
:root{
  --bg:#ffffff; --fg:#1f2937; --muted:#6b7280; --line:#e5e7eb;
  --accent:#2563eb; --accent-weak:#e8f0fe; --surface:#f8fafc; --radius:14px;
}
*{box-sizing:border-box} html,body{height:100%} body{margin:0;background:var(--surface);color:var(--fg);font-family:Inter, "Noto Sans JP", system-ui, -apple-system, Roboto, Arial, sans-serif;line-height:1.6}
a{color:var(--accent);text-decoration:none}
.app-header{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid var(--line)}
.header-inner{max-width:980px;margin:0 auto;display:flex;align-items:center;gap:16px;padding:10px 16px}
.brand{display:flex;align-items:center;gap:8px}
.brand-text{font-weight:800;color:var(--accent)}
.header-meta{display:flex;align-items:center;gap:12px;margin-left:auto}
.meta-title,.meta-org{display:flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--line);border-radius:999px;background:#fff}
.meta-label{font-size:12px;color:var(--muted)} .meta-value{font-size:12px;font-weight:600}
.reset-btn{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;cursor:pointer}
.container{max-width:980px;margin:0 auto;padding:16px}
.container--with-header{padding-top:12px}
.page-title{margin:8px 0 12px;font-size:22px}
.page-title.single{margin-top:24px}
.lead{color:var(--muted)}
.btn{display:inline-block;padding:10px 14px;border-radius:12px;background:var(--accent);color:#fff}
.btn.ghost{background:#eee;border:1px;border-radius:999px; solid var(--line);color:var(--accent)}

.entry-form .field{display:block;margin:10px 0}
.entry-form .label{display:block;font-weight:600;margin-bottom:6px}
.entry-form input{width:100%;max-width:360px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff}
.tos{margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}
/* === TOS 同意：チェックは最小、テキストが残りを使う === */
.tos-agree{
  display:flex;
  align-items:center;
  gap:6px;
  margin:8px 0 0 0;
  width:auto;                 /* 不要な100%化を防ぐ */
}

.tos-agree input[type="checkbox"]{
  flex:0 0 auto;              /* 伸縮させない＝最小幅 */
  width:auto;
  height:auto;
  margin:0;
}

.tos-agree .tos-text{
  flex:1 1 auto;              /* 残りの幅をすべて使う */
  display:inline-flex;
  align-items:center;
  gap:.25rem;
  margin:0 !important;
  white-space:normal;          /* 折り返し可（長文でも左寄せのまま） */
}

.tos-agree .tos-text a{
  text-decoration: underline;
  margin:0 !important;
}

/* 念のため、内部要素のフロート/自動マージンを無効化 */
.tos-agree > *{ float:none !important; }

#entrySubmit{ display:block; margin-top:12px; }


.submit-btn{border:none;background:var(--accent);color:#fff;padding:10px 16px;border-radius:12px;font-weight:700;cursor:pointer}
.submit-btn[disabled]{opacity:.6;cursor:default;background:#cbd5e1}

.table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.table th,.table td{border-bottom:1px solid var(--line);padding:10px;text-align:left}
.table tr.done td{opacity:.6}

.quiz-form{margin-bottom:100px}
.question{margin:16px 0;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;position:relative}
.q-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.q-text{margin:0 0 8px;font-size:18px}
.choices{display:grid;grid-template-columns:1fr;gap:10px;margin-top:6px}
.choice-label{display:block;padding:.9rem 1rem;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;position:relative;transition:.15s;padding-left:36px}
.choice-label::before{content:"";width:14px;height:14px;border:2px solid #9ca3af;border-radius:50%;position:absolute;left:12px;top:50%;transform:translateY(-50%);background:#fff}
input[type=radio]:checked + .choice-label{border-color:#93c5fd;box-shadow:0 0 0 2px rgba(37,99,235,.15) inset}
input[type=radio]:checked + .choice-label::before{background:radial-gradient(circle at 50% 50%, var(--accent) 0 5px, transparent 6px)}
.q-footer{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
.clear-btn{border:none;background:var(--accent-weak);color:var(--accent);padding:6px 10px;border-radius:999px;cursor:pointer;font-weight:600}

.question.answered{opacity:.65}
.question .q-status{font-size:12px;color:var(--muted)}
.question.answered .q-status::after{content:" ✓ 回答済";margin-left:6px;color:var(--accent);font-weight:700}
.question.need-answer{background:#fff6f6;outline:2px solid #f3b7b7}

.app-footer{position:sticky;bottom:0;z-index:1000;background:#fff;border-top:1px solid var(--line)}
.footer-inner{max-width:980px;margin:0 auto;display:flex;align-items:center;gap:16px;padding:10px 16px}
.progress-wrap{flex:1;display:flex;align-items:center;gap:12px}
.progress-bar{flex:1;height:8px;background:#e6e6e6;border-radius:999px;overflow:hidden}
.progress-fill{height:100%;width:0%;background:var(--accent);transition:width .2s}
.progress-count{font-size:16px;color:var(--muted);min-width:52px;text-align:right}

.submit-overlay{position:fixed;inset:0;background:rgba(255,255,255,.75);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:2000}
.submit-overlay.active{display:flex}
.submit-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 24px;box-shadow:0 10px 40px rgba(0,0,0,.08);display:flex;flex-direction:column;align-items:center;gap:10px}
.spinner{width:28px;height:28px;border:3px solid #cbd5e1;border-top-color:var(--accent);border-radius:999px;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.submit-text{font-weight:700;color:#334155}

.flash{padding:0;margin:8px 0}
.flash li{list-style:none;margin:6px 0;padding:8px;border-radius:6px}
.flash li.error{background:#ffe8e8;border:1px solid #f5b5b5}

.nick-loading{color:var(--muted);font-size:12px;margin-top:8px}

@media (max-width:720px){
  .meta-title,.meta-org{display:none}
  .q-text{font-size:16px}
}

/* === fix: radio duplicated (show only native) === */
/* ネイティブのラジオを強制表示 */
input[type="radio"]{
  appearance: auto !important;
  -webkit-appearance: radio !important;
  -moz-appearance: radio !important;
  position: static !important;
  opacity: 1 !important;
  width: revert-layer; 
  height: revert-layer; 
  margin: 0 .5rem 0 .25rem;
}

/* 各種UIフレームワークが描くカスタム丸を無効化 */
input[type="radio"] + label::before,
input[type="radio"] + label::after,
.form-check-input + .form-check-label::before,
.form-check-input + .form-check-label::after,
.choice-label::before,
.choice-label::after {
  content: none !important;
  display: none !important;
}

/* === quiz: ラジオをカード枠内に収める（スコープ：.quiz-form .choices） === */

/* 1) ネイティブ input は視覚的に隠す（フォーカス/読上げは残す） */
.quiz-form .choices input[type="radio"]{
  position: absolute !important;
  opacity: 0 !important;
  width: 1px; height: 1px; /* 物理サイズは極小に */
  margin: 0; padding: 0;
}

/* 2) カード(label)側を内側余白つきボックスに */
.quiz-form .choices input[type="radio"] + .choice-label{
  position: relative;
  display: block;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  padding: .9rem 1rem .9rem 44px; /* 左に丸のスペース */
  cursor: pointer;
  transition: .15s;
}

/* 3) カード内に擬似要素で丸を1つだけ描く（※グローバルの「非表示」を打ち消す） */
.quiz-form .choices input[type="radio"] + .choice-label::before{
  content: "" !important;         /* グローバルの display:none を解除 */
  display: block !important;
  position: absolute;
  left: 14px; top: 50%;
  width: 16px; height: 16px;
  border: 2px solid #9ca3af;
  border-radius: 50%;
  transform: translateY(-50%);
  background: #fff;
  box-sizing: border-box;
}

/* 4) 選択/フォーカス時の見た目 */
.quiz-form .choices input[type="radio"]:checked + .choice-label{
  border-color: #93c5fd;
  box-shadow: 0 0 0 2px rgba(37,99,235,.15) inset;
}
.quiz-form .choices input[type="radio"]:checked + .choice-label::before{
  background: radial-gradient(circle at 50% 50%, var(--accent) 0 5px, transparent 6px);
  border-color: var(--accent);
}
.quiz-form .choices input[type="radio"]:focus + .choice-label{
  outline: 2px solid rgba(37,99,235,.45);
  outline-offset: 2px;
}

/* ヘッダーの中止ボタン（危険操作） */
.btn.danger{
  background:#f7a1a1;
  border:1px solid #f7a1a1;
  color:#fff;
  border-radius: 999px;
}
.btn.danger:hover{ filter:brightness(0.95); }
.btn.danger:disabled{ opacity:.6; cursor:default; }

/* モバイルで詰まり過ぎる場合は縮小 */
@media (max-width:720px){
  #hrpStopBtn{ padding:8px 10px; font-size:14px; }
}

  .exam-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}
  .exam-card{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px}
  .exam-card.done{opacity:.65}
  .exam-info{line-height:1.6}
  .exam-actions{display:flex;align-items:center}
  @media (max-width:560px){
    .exam-card{flex-direction:column;align-items:flex-start}
    .exam-actions{margin-top:6px}
  }
