:root{
  --bg:#f4f5f7;
  --card:#ffffff;
  --ink:#1c2230;
  --ink-soft:#525c6e;
  --line:#e2e5ea;
  --accent:#2f5d8a;
  --accent-deep:#1f4568;
  --accent-soft:#e8f0f7;
  --pos:#2f7d6b;
  --neg:#8a5a2f;
  --warn:#9a6b1e;
  --radius:14px;
  --shadow:0 1px 2px rgba(20,30,50,.06), 0 8px 24px rgba(20,30,50,.06);
  --maxw:640px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
.wrap{max-width:var(--maxw);margin:0 auto;min-height:100vh;display:flex;flex-direction:column;padding:0 16px}

/* ---- top bar / progress ---- */
.topbar{position:sticky;top:0;z-index:5;background:var(--bg);padding:14px 0 8px}
.brand{font-weight:700;letter-spacing:.14em;font-size:13px;color:var(--accent-deep)}
.brand span{color:var(--ink-soft);font-weight:600}
.brand.big{font-size:20px;letter-spacing:.16em;margin-bottom:2px}
.progress{height:6px;background:var(--line);border-radius:99px;overflow:hidden;margin-top:8px}
.progress-bar{height:100%;width:0;background:var(--accent);border-radius:99px;transition:width .35s cubic-bezier(.4,0,.2,1)}
.progress-label{font-size:12px;color:var(--ink-soft);margin-top:6px;letter-spacing:.02em}

/* ---- screens ---- */
.screen{display:none;flex:1;padding:14px 0 40px}
.screen.active{display:block;animation:fade .3s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}
@media(max-width:480px){.card{padding:18px}.wrap{padding:0 12px}}

/* ---- intro ---- */
.intro .tagline{margin:2px 0 18px;color:var(--ink-soft);font-size:14px}
.lede{font-size:16px;margin:0 0 14px}
.honest{background:var(--accent-soft);border-left:3px solid var(--accent);padding:12px 14px;border-radius:8px;font-size:14.5px;margin:0 0 20px}
.honest.small{font-size:13.5px;margin-bottom:18px}
.honest strong{color:var(--accent-deep)}

.field{margin:0 0 18px}
.field label{display:block;font-weight:600;font-size:14px;margin-bottom:8px}
.field .opt{font-weight:400;color:var(--ink-soft)}
input[type=text]{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fbfcfd}
input[type=text]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

.sat{display:flex;gap:8px}
.sat-dot{flex:1;height:46px;border:1px solid var(--line);background:#fbfcfd;border-radius:10px;font:600 15px/1 inherit;color:var(--ink-soft);cursor:pointer;transition:.15s}
.sat-dot:hover{border-color:var(--accent)}
.sat-dot[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:#fff}
.sat-ends{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink-soft);margin-top:6px}

.consent{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--ink-soft);margin:4px 0 22px;cursor:pointer}
.consent input{margin-top:3px;width:18px;height:18px;flex:none;accent-color:var(--accent);cursor:pointer}

/* ---- buttons ---- */
.btn{font:600 15px/1 inherit;padding:14px 20px;border-radius:11px;border:1px solid transparent;cursor:pointer;transition:.15s;-webkit-tap-highlight-color:transparent}
.btn.primary{background:var(--accent);color:#fff;width:100%}
.btn.primary:hover{background:var(--accent-deep)}
.btn.primary:disabled{background:var(--line);color:#9aa3b2;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--accent-deep);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--accent);background:var(--accent-soft)}
.tiny{font-size:12px;color:var(--ink-soft);text-align:center;margin:12px 0 0}

/* ---- item ---- */
.scenario{font-size:17px;line-height:1.5;font-weight:500;margin-bottom:8px}
.instruction{font-size:13.5px;color:var(--ink-soft);margin:0 0 16px}
.instruction b{color:var(--accent-deep)}

.options{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.opt-btn{width:100%;text-align:left;background:#fbfcfd;border:1px solid var(--line);border-radius:12px;padding:14px 16px;font:inherit;font-size:15px;line-height:1.45;color:var(--ink);cursor:pointer;transition:.13s;display:flex;gap:12px;align-items:flex-start}
.opt-btn:hover{border-color:var(--accent);background:var(--accent-soft)}
.opt-btn:active{transform:scale(.995)}
.opt-btn .pick-hint{flex:none;margin-top:1px;width:22px;height:22px;border-radius:50%;border:1.5px dashed #b8c0cc;display:flex;align-items:center;justify-content:center;font-size:12px;color:#b8c0cc}

.ranked{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:8px}
.ranked:empty{margin:0}
.ranked li{display:flex;gap:12px;align-items:flex-start;background:var(--accent-soft);border:1px solid #cfe0ee;border-radius:12px;padding:12px 14px;font-size:14.5px;line-height:1.4;animation:pop .25s ease}
@keyframes pop{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.ranked .rk{flex:none;width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center}
.ranked .rk-txt{flex:1}
.ranked .rk-tag{display:block;font-size:11px;color:var(--accent-deep);font-weight:600;letter-spacing:.03em;margin-bottom:2px;text-transform:uppercase}

.item-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.item-actions .btn{flex:1;min-width:140px}

/* ---- result ---- */
.result h1{font-size:22px;margin:0 0 10px}
.bars{display:flex;flex-direction:column;gap:20px;margin:6px 0 24px}
.bar-row .bar-head{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-soft);margin-bottom:7px;font-weight:600}
.bar-row .bar-head .neg-lab{color:var(--neg)}
.bar-row .bar-head .pos-lab{color:var(--pos)}
.bar-track{position:relative;height:34px;background:linear-gradient(90deg,#f4ede4,#eef1f4 50%,#e6f1ec);border:1px solid var(--line);border-radius:9px}
.bar-mid{position:absolute;left:50%;top:4px;bottom:4px;width:1px;background:#c4ccd6;transform:translateX(-.5px)}
.bar-fill{position:absolute;top:4px;bottom:4px;border-radius:6px;transition:all .6s cubic-bezier(.34,1.2,.4,1)}
.bar-fill.pos{background:var(--pos);left:50%}
.bar-fill.neg{background:var(--neg);right:50%}
.bar-dim-name{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:12px;font-weight:700;color:var(--ink);letter-spacing:.02em;pointer-events:none;text-shadow:0 0 6px rgba(255,255,255,.9),0 0 6px rgba(255,255,255,.9)}
.bar-lean{font-size:12.5px;color:var(--ink-soft);margin-top:7px}
.bar-lean b{color:var(--ink)}

.read{background:#fbfcfd;border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:22px;font-size:14.5px;line-height:1.6}
.read h2{font-size:15px;margin:0 0 8px}
.read ul{margin:8px 0 0;padding-left:20px}
.read li{margin-bottom:6px}
.read .caveat{color:var(--ink-soft);font-size:13px;margin-top:12px;font-style:italic}

.result-actions{display:flex;flex-direction:column;gap:10px}

.foot{text-align:center;font-size:11.5px;color:#9aa3b2;letter-spacing:.04em;padding:18px 0 26px;margin-top:auto}

/* ---- step screens (demographics / likert steps) ---- */
.step-title{font-size:20px;margin:0 0 6px}
.step-sub{font-size:14px;color:var(--ink-soft);margin:0 0 20px;line-height:1.5}
.step-actions{display:flex;gap:10px;margin-top:22px}
.step-actions .btn{flex:1}
.step-actions .btn.ghost{flex:0 0 auto;min-width:110px}
.step-err{color:#b23b3b;font-size:13px;margin:12px 0 0;font-weight:600}

select{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fbfcfd;color:var(--ink);-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23525c6e' stroke-width='1.6'/></svg>");background-repeat:no-repeat;background-position:right 14px center}
select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
input[type=number]{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fbfcfd}
input[type=number]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

.radio-row{display:flex;flex-wrap:wrap;gap:8px}
.radio-chip{position:relative;flex:1 1 auto;min-width:calc(50% - 4px)}
.radio-chip input{position:absolute;opacity:0;width:0;height:0}
.radio-chip span{display:block;text-align:center;padding:12px 10px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd;font-size:14px;color:var(--ink-soft);cursor:pointer;transition:.15s}
.radio-chip input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.radio-chip:hover span{border-color:var(--accent)}

/* ---- autocomplete / typeahead ---- */
.typeahead{position:relative}
.ac-list{list-style:none;margin:6px 0 0;padding:6px;position:absolute;left:0;right:0;z-index:20;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:300px;overflow-y:auto}
.ac-item{padding:10px 12px;border-radius:9px;cursor:pointer;font-size:14.5px;line-height:1.35;display:flex;flex-direction:column;gap:2px}
.ac-item:hover{background:var(--accent-soft)}
.ac-item .ac-title{font-weight:600;color:var(--ink)}
.ac-item .ac-cluster{font-size:12px;color:var(--ink-soft)}
.ac-fallback{color:var(--accent-deep);font-style:italic;border-top:1px solid var(--line);border-radius:0 0 9px 9px;margin-top:2px}
.ac-chosen{font-size:13px;color:var(--pos);margin:8px 0 0;font-weight:600}

/* ---- Likert grid ---- */
.likert-group-title{font-size:15px;margin:22px 0 8px}
.likert{display:flex;flex-direction:column;gap:16px}
.likert-legend{font-size:12px;color:var(--ink-soft);background:var(--accent-soft);border-radius:8px;padding:8px 10px;line-height:1.4}
.likert-row{border:1px solid var(--line);border-radius:12px;padding:14px 14px 12px;background:#fbfcfd}
.likert-q{font-size:14.5px;line-height:1.45;margin-bottom:10px;color:var(--ink)}
.likert-scale{display:flex;gap:6px}
.likert-dot{flex:1;min-width:0;height:40px;border:1px solid var(--line);background:#fff;border-radius:9px;font:600 14px/1 inherit;color:var(--ink-soft);cursor:pointer;transition:.13s}
.likert-dot:hover{border-color:var(--accent)}
.likert-dot[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:#fff}
.bipolar-ends{display:flex;justify-content:space-between;gap:12px;font-size:11.5px;color:var(--ink-soft);margin-bottom:10px;line-height:1.35}
.bipolar-ends span{flex:1}
.bipolar-ends span:last-child{text-align:right}

.thanks{background:var(--accent-soft);border-left:3px solid var(--pos);padding:12px 14px;border-radius:8px;font-size:14px;margin:0 0 18px;line-height:1.5}

@media(max-width:420px){
  .likert-dot{height:44px;font-size:13px}
  .radio-chip{min-width:calc(50% - 4px)}
}

/* keyboard focus */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
