:root{--ink:#1b2220;--muted:#5a6560;--rule:#d9ded9;--accent:#2f5d50;--bg:#f7f8f6;--err:#94362e;}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.7;
  font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;-webkit-text-size-adjust:100%}
.wrap{max-width:640px;margin:0 auto;padding:16px 18px 64px}
.progress{height:4px;background:var(--rule);border-radius:2px;margin-bottom:20px}
.progress .bar{height:100%;background:var(--accent);border-radius:2px;transition:width .2s}
.page-title{font-size:20px;margin:0 0 20px}
.q{border:0;padding:0;margin:0 0 30px}
.q-text{font-weight:600;padding:0;margin-bottom:10px;display:block}
.q-hint{font-size:13px;color:var(--muted);margin:0 0 8px}
.req{color:var(--err);margin-left:4px}
.opts{display:flex;flex-direction:column;gap:2px}
/* 44px 是手指可靠点中的最小高度 */
.opt{display:flex;align-items:center;gap:10px;min-height:44px;padding:4px 8px;
  border-radius:6px;cursor:pointer}
.opt:active{background:#ecefec}
.opt input{width:20px;height:20px;flex:0 0 auto;accent-color:var(--accent)}
.open,.other-input,.followup-input{width:100%;padding:10px;border:1px solid var(--rule);
  border-radius:6px;font:inherit;background:#fff}
.matrix-wrap{overflow-x:auto}
.matrix{border-collapse:collapse;width:100%;font-size:14px}
.matrix th,.matrix td{border-bottom:1px solid var(--rule);padding:8px 6px;text-align:center}
.matrix th[scope=row]{text-align:left;white-space:nowrap}
.slider{width:100%;height:10px;-webkit-appearance:none;appearance:none;background:var(--rule);
  border-radius:5px;margin:8px 0}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;border-radius:50%;
  background:#fff;border:3px solid var(--accent);margin-top:-9px}
.slider.untouched::-webkit-slider-thumb{border-color:var(--rule)}
.slider-readout{display:flex;align-items:baseline;gap:12px;min-height:44px}
.slider-val{font-size:36px;font-weight:700;min-width:56px}
.slider-lbl{font-size:14px;color:var(--muted)}
.slider-scale{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}
.errors{background:#f6e6e3;border-left:3px solid var(--err);padding:12px 16px;
  border-radius:0 4px 4px 0;margin-bottom:20px;font-size:14px}
/* 刚露出来的题。用和 .errors 同一套语汇（左边一道竖线 + 淡底），但取 accent 色，
   不是错误红 —— 受访者没做错什么，这只是页面上多了一题。 */
.revealed{background:#eaf0ed;border-left:3px solid var(--accent);
  border-radius:0 4px 4px 0;padding:12px 16px 2px;margin-bottom:30px}
.revealed .q{margin-bottom:12px}
.revealed-note{font-size:13px;color:var(--muted);margin:0 0 10px}
.next{width:100%;min-height:48px;background:var(--accent);color:#fff;border:0;
  border-radius:8px;font-size:17px;font-weight:600;margin-top:12px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
