:root{
  --ink:#16181d;
  --ink2:#5b6270;
  --line:#e2e0da;
  --paper:#f6f5f2;
  --card:#ffffff;
  --accent:#1a56db;
  --accent-soft:#e8eefc;
  --ok:#12805c;
  --warn:#b45309;
  --bad:#b42318;
  --radius:14px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--paper);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","PingFang SC","Noto Sans JP",system-ui,sans-serif;
  font-size:15px;line-height:1.6;
  padding-bottom:calc(72px + env(safe-area-inset-bottom));
}
b{font-weight:700}
small{font-weight:400}

/* ---------------- 顶栏 ---------------- */
.top{
  position:sticky;top:0;z-index:30;background:rgba(246,245,242,.94);
  backdrop-filter:saturate(1.4) blur(10px);
  padding:10px 14px 8px;border-bottom:1px solid var(--line);
}
.ttl{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ttl b{font-size:16px;letter-spacing:.01em}
.ttl small{font-size:11.5px;color:var(--ink2);letter-spacing:.04em}
.chips{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap;align-items:center}
.chip{
  font-size:11.5px;padding:2px 8px;border-radius:99px;background:#ecebe6;color:var(--ink2);
  border:1px solid transparent;white-space:nowrap;
}
.chip.strong{background:var(--accent-soft);color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}
.chip.ok{background:#e2f4ec;color:var(--ok);font-weight:700}
.chip.dot::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:5px;vertical-align:1px;opacity:.75}
.pbar{height:2px;background:#e8e6e0;overflow:hidden;position:sticky;top:0;z-index:29}
.pbar i{display:block;height:100%;width:0;background:var(--accent);transition:width .25s}

/* ---------------- 分节 tab ---------------- */
.tabs{
  display:flex;gap:6px;overflow-x:auto;padding:10px 12px 8px;-webkit-overflow-scrolling:touch;
  position:sticky;top:0;z-index:20;background:var(--paper);
  scrollbar-width:none;
}
.tabs::-webkit-scrollbar{display:none}
.tabs button{
  flex:0 0 auto;font:inherit;font-size:13.5px;padding:7px 13px;border-radius:99px;
  border:1px solid var(--line);background:#fff;color:var(--ink2);cursor:pointer;
  display:flex;align-items:center;gap:6px;
}
.tabs button em{font-style:normal;font-size:11px;color:#98a1ae;font-variant-numeric:tabular-nums}
.tabs button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.tabs button.on em{color:#c8cdd6}
.tabs button.done em{color:var(--ok)}

/* ---------------- 主体 ---------------- */
main{padding:4px 12px 18px;max-width:860px;margin:0 auto}
.loading{padding:60px 0;text-align:center;color:var(--ink2)}

.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 14px 12px;margin:10px 0;
}
.card h2{
  font-size:14px;margin:0 0 2px;letter-spacing:.03em;display:flex;align-items:center;gap:8px;
}
.card h2 span.n{font-size:11.5px;color:var(--ink2);font-weight:400}
.note{font-size:12.5px;color:var(--ink2);margin:6px 0 0}
.note.jp{font-size:12px;color:#7b8290;line-height:1.55}
.hint{font-size:12px;color:var(--ink2);margin-top:8px}

/* ---------------- マークシート ---------------- */
.sheet{display:grid;grid-template-columns:repeat(auto-fill,minmax(151px,1fr));gap:6px;margin-top:10px}
.qrow{
  display:flex;align-items:center;gap:3px;border:1px solid var(--line);border-radius:11px;
  padding:5px 6px;background:#fdfdfc;
}
.qrow.cur{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.qno{
  width:26px;flex:0 0 26px;text-align:right;font-size:12.5px;color:#7b8290;
  font-variant-numeric:tabular-nums;
}
.qrow.answered .qno{color:var(--accent);font-weight:700}
.b{
  flex:1 1 0;min-width:26px;height:30px;border-radius:99px;
  border:1.4px solid #c9cdd4;background:#fff;color:#8b93a1;
  font:inherit;font-size:12.5px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .12s,border-color .12s,color .12s,transform .06s;
}
.b:active{transform:scale(.94)}
.b.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.locked .b{cursor:default}
.locked .b:not(.on){opacity:.45}
.locked .b:active{transform:none}

/* ---------------- 記述 ---------------- */
.topic{
  display:flex;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;
  margin-top:8px;background:#fdfdfc;cursor:pointer;
}
.topic.on{border-color:var(--accent);background:var(--accent-soft)}
.topic .mark{
  flex:0 0 26px;width:26px;height:26px;border-radius:50%;border:1.4px solid #c9cdd4;
  display:flex;align-items:center;justify-content:center;font-size:13px;color:#8b93a1;background:#fff;
}
.topic.on .mark{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.topic p{margin:0;font-size:13px;line-height:1.75}
.topic .tt{font-size:11.5px;color:var(--ink2);margin-bottom:3px}

.photogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-top:10px}
.photogrid figure{margin:0}
.photogrid img{width:100%;border-radius:10px;border:1px solid var(--line);display:block;cursor:zoom-in}
.photogrid figcaption{font-size:10.5px;color:var(--ink2);margin-top:3px;font-variant-numeric:tabular-nums}
.upbtn{
  width:100%;margin-top:10px;padding:14px;border-radius:12px;border:1.5px dashed #c2c8d2;
  background:#fbfbfa;color:var(--ink);font:inherit;font-size:14px;font-weight:600;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;
}
.upbtn:active{background:#f2f4f8}
.upbtn.busy{border-style:solid;border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.photostate{font-size:12.5px;margin-top:8px}
.photostate.ok{color:var(--ok)}
.photostate.no{color:var(--warn)}

textarea,input[type=text]{
  width:100%;font:inherit;font-size:13.5px;padding:9px 11px;border:1px solid var(--line);
  border-radius:10px;background:#fdfdfc;color:var(--ink);resize:vertical;
}
textarea:focus,input[type=text]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}

/* ---------------- 总览抽屉 ---------------- */
.overview{margin-top:10px}
.ovsec{margin-top:8px}
.ovsec h4{margin:10px 0 4px;font-size:13px}
.ovgrid{display:flex;flex-wrap:wrap;gap:4px}
.ovgrid b{
  width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;
  background:#ecebe6;color:#8b93a1;font-size:11.5px;font-variant-numeric:tabular-nums;font-weight:600;
}
.ovgrid b.on{background:var(--accent);color:#fff}

/* ---------------- 底栏 ---------------- */
.bar{
  position:fixed;left:0;right:0;bottom:0;z-index:40;
  display:flex;align-items:center;gap:8px;
  padding:9px 12px calc(9px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.96);border-top:1px solid var(--line);
  backdrop-filter:saturate(1.4) blur(10px);
}
.bar .sp{flex:1}
.btn{
  font:inherit;font-size:13.5px;padding:9px 14px;border-radius:11px;border:1px solid var(--line);
  background:#fff;color:var(--ink);cursor:pointer;white-space:nowrap;
}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.btn.ghost{background:#fff;color:var(--ink2)}
.btn:disabled{opacity:.5;cursor:default}
.btn.small{font-size:12.5px;padding:7px 11px}

/* ---------------- 提示条 ---------------- */
#alert{padding:0 12px;max-width:860px;margin:0 auto}
.abar{
  display:flex;gap:8px;align-items:flex-start;
  background:#fff4e5;border:1px solid #f3c98b;color:#7a4b06;
  border-radius:12px;padding:10px 12px;font-size:12.5px;margin:8px 0;line-height:1.6;
}
.abar.bad{background:#fdecea;border-color:#f2b3ac;color:#8a1c12}
.abar .x{margin-left:auto;background:none;border:none;color:inherit;font-size:16px;line-height:1;cursor:pointer;padding:0 2px}
.abar input{margin-top:6px}

/* ---------------- toast / modal ---------------- */
.toast{
  position:fixed;left:50%;transform:translateX(-50%) translateY(8px);bottom:86px;z-index:60;
  background:rgba(22,24,29,.92);color:#fff;font-size:13px;padding:8px 16px;border-radius:99px;
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;
}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.modal{position:fixed;inset:0;z-index:70;background:rgba(16,18,22,.42);display:flex;align-items:center;justify-content:center;padding:22px}
.modal.hide{display:none}
.mbox{background:#fff;border-radius:16px;padding:18px;max-width:380px;width:100%;box-shadow:0 18px 50px rgba(0,0,0,.2)}
.mbox h3{margin:0 0 6px;font-size:15px}
.mbox p{margin:0 0 14px;font-size:13.5px;color:var(--ink2);line-height:1.65;white-space:pre-line}
.mrow{display:flex;gap:8px;justify-content:flex-end}

@media (max-width:420px){
  .sheet{grid-template-columns:1fr 1fr;gap:5px}
  .qrow{padding:4px 5px;gap:2px}
  .qno{width:22px;flex-basis:22px;font-size:12px}
  .b{height:29px;min-width:22px;font-size:12px}
}
