:root{
  /* 3-colour brand system + neutrals */
  --brand:#6c5ce7; --brand-2:#8b7ff0; --brand-soft:#efedfd;
  --teal:#17b8a6; --teal-soft:#e2f7f4;
  --coral:#f2775f; --coral-soft:#fdeae5;
  --ink:#3b3660; --ink-soft:#847ea6; --line:#ece9fb; --card:#ffffff;
  --shadow:0 16px 36px -18px rgba(108,92,231,.38);
  --shadow-sm:0 8px 20px -12px rgba(108,92,231,.32);
  --r:22px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Quicksand',system-ui,'Segoe UI',sans-serif;color:var(--ink);
  background:linear-gradient(170deg,#faf9ff 0%,#f6f5ff 55%,#f2fbfa 100%);
  min-height:100vh;overflow-x:hidden;position:relative;line-height:1.55}
h1,h2,h3,h4{font-family:'Baloo 2',system-ui,sans-serif;line-height:1.15}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}

/* icons */
.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex:none}
.ic.sm{width:15px;height:15px}
.ic.big{width:40px;height:40px}
#i-heart,#mascotBody{}
.badge .ic,.ethics .ic{stroke:currentColor}
svg symbol #i-heart{fill:currentColor}

/* background: subtle, two brand-tint blobs only */
.bg{position:fixed;inset:0;z-index:-1;overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(60px);opacity:.28}
.b1{width:420px;height:420px;background:var(--brand);top:-120px;left:-120px;animation:float 18s ease-in-out infinite}
.b2{width:360px;height:360px;background:var(--teal);bottom:-140px;right:-100px;animation:float 20s ease-in-out infinite -6s}
@keyframes float{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(24px,-20px) scale(1.08)}}

/* home button */
.homebtn{position:fixed;top:16px;left:16px;z-index:30;width:44px;height:44px;border-radius:14px;
  border:1px solid var(--line);background:#fff;color:var(--brand);cursor:pointer;display:none;
  place-items:center;box-shadow:var(--shadow-sm);transition:.2s}
.homebtn.show{display:grid}
.homebtn:hover{transform:translateY(-2px);background:var(--brand-soft)}
.homebtn .ic{width:22px;height:22px}

/* fixed header fade so scrolled content never clashes with the dots / home button */
body::before{content:"";position:fixed;top:0;left:0;right:0;height:60px;z-index:14;pointer-events:none;
  background:linear-gradient(#faf9ff 45%, rgba(250,249,255,0.75) 75%, rgba(250,249,255,0))}

/* progress dots */
.steps{position:fixed;top:20px;left:50%;transform:translateX(-50%);display:flex;gap:9px;z-index:20}
.steps span{width:9px;height:9px;border-radius:50%;background:var(--line);transition:.4s}

/* toast notification for backend wake-up */
.toast{position:fixed;top:80px;right:24px;z-index:100;
  background:#fff;border:1.5px solid var(--line);border-radius:14px;
  padding:18px 20px;box-shadow:0 8px 24px -8px rgba(108,92,231,.24);
  max-width:360px;min-width:320px;
  transform:translateX(120%);opacity:0;
  transition:transform .5s cubic-bezier(.2,.9,.3,1), opacity .5s}
.toast.show{transform:translateX(0);opacity:1}
.toast-content{display:flex;gap:14px;align-items:flex-start}
.toast-icon{width:40px;height:40px;border-radius:10px;
  background:linear-gradient(135deg,var(--brand-soft),#e8e5fc);
  display:grid;place-items:center;flex:none;position:relative}
.toast-spinner{width:20px;height:20px;border:3px solid var(--brand-soft);
  border-top-color:var(--brand);border-radius:50%;
  animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.toast-check{width:20px;height:20px;display:none}
.toast-check svg{width:100%;height:100%;stroke:var(--teal);stroke-width:3;
  fill:none;stroke-linecap:round;stroke-linejoin:round}
.toast-text{flex:1;min-width:0}
.toast-title{font-family:'Baloo 2';font-size:15px;font-weight:700;
  color:var(--ink);margin-bottom:6px;line-height:1.3}
.toast-msg{font-size:13px;color:var(--ink-soft);font-weight:500;
  line-height:1.5}
.toast-progress{font-size:12px;color:var(--brand);font-weight:600;
  margin-top:6px;font-family:'Baloo 2'}
.toast.success .toast-icon{
  background:linear-gradient(135deg,var(--teal-soft),#d0f2ed)}
.toast.success .toast-spinner{display:none}
.toast.success .toast-check{display:block;animation:checkmark .4s ease-out}
@keyframes checkmark{
  0%{opacity:0;transform:scale(.3) rotate(-12deg)}
  50%{transform:scale(1.1) rotate(3deg)}
  100%{opacity:1;transform:scale(1) rotate(0)}}
.toast.error .toast-icon{background:linear-gradient(135deg,var(--coral-soft),#fde5e1)}
.toast.error .toast-spinner{border-top-color:var(--coral);border-color:var(--coral-soft)}
.toast.error .toast-title{color:var(--coral)}
.steps span.on{background:var(--brand);width:24px;border-radius:5px}
.steps span.done{background:var(--brand-2)}
.steps.hide{display:none}

/* layout */
#app{max-width:760px;margin:0 auto;padding:74px 20px 30px;min-height:calc(100vh - 62px);
  display:flex;flex-direction:column;justify-content:center}
.screen{display:none;text-align:center}
.screen.show{display:flex;flex-direction:column;align-items:center;animation:pop-in .5s cubic-bezier(.2,.9,.3,1.25)}
.screen.leave{animation:pop-out .28s ease forwards}
@keyframes pop-in{from{opacity:0;transform:translateY(22px) scale(.98)}to{opacity:1;transform:none}}
@keyframes pop-out{to{opacity:0;transform:translateY(-14px) scale(.99)}}

.logo{font-size:60px;font-weight:800;color:var(--brand);letter-spacing:-1px;margin-top:2px}
.title{font-size:32px;font-weight:800;color:var(--ink);margin-bottom:16px;display:flex;gap:8px;align-items:center;justify-content:center}
.tag{font-size:19px;font-weight:600;color:var(--ink)}
.sub{color:var(--ink-soft);max-width:460px;margin:12px auto 0;font-weight:500}
.mini{color:var(--ink-soft);font-size:13px;margin-top:18px;font-weight:600;display:flex;gap:6px;align-items:center;justify-content:center}
.sect{font-size:18px;margin:26px 0 12px;color:var(--ink);align-self:flex-start;display:flex;gap:8px;align-items:center}
.sect .ic{stroke:var(--brand)}

/* buttons */
.cta{font-family:'Baloo 2';font-weight:700;font-size:18px;color:#fff;border:none;cursor:pointer;
  padding:14px 30px;border-radius:36px;margin-top:24px;display:inline-flex;gap:9px;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));box-shadow:var(--shadow);
  transition:transform .18s cubic-bezier(.2,.9,.3,1.4),box-shadow .2s,background .2s;position:relative;overflow:hidden}
.cta .ic{stroke:#fff}
.cta:hover:not(:disabled){transform:translateY(-2px) scale(1.03)}
.cta:active:not(:disabled){transform:scale(.97)}
.cta.big{font-size:20px;padding:16px 40px}
.cta:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.25)}
.cta.ghost{background:#fff;color:var(--brand);border:1.5px solid var(--brand-soft);box-shadow:var(--shadow-sm)}
.cta.ghost .ic{stroke:var(--brand)}
.cta.ghost:hover:not(:disabled){background:var(--brand-soft)}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.5);transform:scale(0);animation:rip .6s ease-out;pointer-events:none}
@keyframes rip{to{transform:scale(4);opacity:0}}
.rowbtns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.linklike{background:none;border:none;color:var(--brand);font-family:'Quicksand';font-weight:700;
  font-size:14px;cursor:pointer;margin-top:12px;text-decoration:underline dotted;transition:.2s}
.linklike:hover{color:var(--ink)}

/* mascot */
.mascot{animation:bob 3.2s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.body{fill:var(--brand-2)}
.shadow{fill:rgba(108,92,231,.14)}
.eye{fill:#2f2a4d}.spark{fill:#fff}.cheek{fill:#f4a08f;opacity:.6}
.mouth{fill:none;stroke:#2f2a4d;stroke-width:3.6;stroke-linecap:round}
.wave{fill:none;stroke:var(--brand);stroke-width:3.6;stroke-linecap:round;opacity:.7}
.eyes{transform-origin:center;animation:blink 4.2s infinite}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
.mascot.listening{animation:bob 1s ease-in-out infinite}

/* learn */
.steps3{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-bottom:6px}
.stepcard{background:var(--card);border-radius:var(--r);padding:22px 18px;width:178px;box-shadow:var(--shadow-sm);
  border:1px solid var(--line);transition:.25s}
.stepcard:hover{transform:translateY(-5px)}
.stepcard .ico{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:16px;
  background:var(--brand-soft);margin-bottom:8px}
.stepcard .ico .ic{width:26px;height:26px;stroke:var(--brand)}
.stepcard h3{font-size:17px;color:var(--ink)}
.stepcard p{font-size:13.5px;color:var(--ink-soft);font-weight:500;margin-top:4px}
.pop{opacity:0;animation:pop .5s cubic-bezier(.2,.9,.3,1.35) forwards;animation-delay:var(--d,0s)}
@keyframes pop{from{opacity:0;transform:scale(.8) translateY(16px)}to{opacity:1;transform:none}}

/* ethics */
.ethics{background:var(--brand-soft);border:1px solid #ded8fb;border-radius:18px;padding:18px 20px;
  max-width:520px;margin:22px auto 0;text-align:left}
.ethics p{font-size:14px;color:#5b5488;font-weight:600}
.ethics .badge{display:inline-flex;gap:6px;align-items:center;background:var(--brand);color:#fff;font-weight:700;
  font-size:12px;padding:4px 12px;border-radius:20px;margin-bottom:8px;font-family:'Baloo 2'}
.ethics .badge .ic{stroke:#fff;fill:#fff}
.agree{display:flex;align-items:center;gap:10px;margin-top:14px;font-weight:700;color:#5b5488;cursor:pointer;font-size:14px}
.agree input{width:19px;height:19px;accent-color:var(--brand);cursor:pointer}

/* record */
.bubble{position:relative;background:#fff;border-radius:20px;padding:20px 24px;box-shadow:var(--shadow-sm);
  max-width:520px;margin:0 auto 8px;border:1px solid var(--line)}
.bubble:after{content:"";position:absolute;bottom:-13px;left:50%;transform:translateX(-50%);border:8px solid transparent;border-top-color:#fff}
.bubble p{font-size:18px;font-weight:600;color:var(--ink)}
.langbar{display:flex;gap:6px;align-items:center;justify-content:center}
.langbar.top{position:fixed;top:16px;right:16px;z-index:30;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:5px 10px;box-shadow:var(--shadow-sm)}
.langbar .ic{stroke:var(--brand)}
.langbar select{font-family:'Quicksand';font-weight:700;font-size:14px;color:var(--ink);background:#fff;
  border:none;border-radius:8px;padding:3px 6px;cursor:pointer;max-width:120px}
.langbar.top select{outline:none}
.passage{line-height:1.75}
.passage[dir=rtl]{direction:rtl}
.recwrap{display:flex;flex-direction:column;align-items:center;gap:13px;margin-top:24px;position:relative}
.rings{position:absolute;top:-4px;width:114px;height:114px;pointer-events:none}
.rings span{position:absolute;inset:0;border-radius:50%;border:3px solid var(--coral);opacity:0}
.recording .rings span{animation:ring 1.8s ease-out infinite}
.recording .rings span:nth-child(2){animation-delay:.6s}.recording .rings span:nth-child(3){animation-delay:1.2s}
@keyframes ring{0%{transform:scale(.6);opacity:.6}100%{transform:scale(1.7);opacity:0}}
.micbtn{width:100px;height:100px;border-radius:50%;border:none;cursor:pointer;color:#fff;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));box-shadow:0 14px 28px -10px rgba(108,92,231,.65);
  display:grid;place-items:center;transition:.2s;z-index:2}
.micbtn .ic{stroke:#fff}
.micbtn:hover{transform:scale(1.05)}
.recording .micbtn{background:linear-gradient(135deg,var(--coral),#f79173);animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
.meter{display:flex;gap:4px;height:34px;align-items:flex-end}
.meter i{width:6px;background:linear-gradient(var(--teal),var(--brand));border-radius:4px;height:6px;transition:height .08s}
.timer{font-weight:700;color:var(--ink-soft);font-size:15px}
.playback{margin-top:14px;width:min(420px,90%)}
.hidden{display:none!important}

/* analyzing */
.eq{display:flex;gap:7px;height:58px;align-items:flex-end;margin:20px 0 4px}
.eq span{width:10px;border-radius:6px;background:linear-gradient(var(--brand),var(--teal));animation:eq 1s ease-in-out infinite}
.eq span:nth-child(2){animation-delay:.1s}.eq span:nth-child(3){animation-delay:.2s}.eq span:nth-child(4){animation-delay:.3s}
.eq span:nth-child(5){animation-delay:.4s}.eq span:nth-child(6){animation-delay:.5s}.eq span:nth-child(7){animation-delay:.6s}
@keyframes eq{0%,100%{height:14px}50%{height:54px}}

/* results */
.gaugewrap{position:relative;width:208px;height:208px;margin:6px auto}
.gauge{transform:rotate(-90deg)}
.g-track{fill:none;stroke:var(--line);stroke-width:17}
.g-fill{fill:none;stroke:var(--teal);stroke-width:17;stroke-linecap:round;
  stroke-dasharray:515;stroke-dashoffset:515;transition:stroke-dashoffset 1.4s cubic-bezier(.2,.8,.2,1),stroke 1s}
.gaugecenter{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.gpct{font-family:'Baloo 2';font-size:46px;font-weight:800;color:var(--ink);line-height:1}
.gpct span{font-size:21px}
.glabel{font-size:9px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.2px;
  max-width:100px;line-height:1.2;text-align:center;margin-top:4px}
.confchip{display:inline-flex;gap:6px;align-items:center;font-weight:700;font-size:12.5px;
  background:#fff;border:1px solid var(--line);border-radius:20px;padding:6px 14px;margin:2px auto 0;box-shadow:var(--shadow-sm)}
.confchip .ic{width:15px;height:15px;stroke:currentColor}
.verdict{font-family:'Baloo 2';font-size:19px;font-weight:700;max-width:480px;margin:10px auto 0}
.narrative{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 18px;
  max-width:540px;margin:14px auto 0;text-align:left;color:#59547e;font-weight:500;font-size:14.5px;
  line-height:1.6;box-shadow:var(--shadow-sm)}
.factors{display:flex;flex-direction:column;gap:11px;width:100%}
.factor{background:#fff;border-radius:16px;padding:12px 15px;box-shadow:var(--shadow-sm);text-align:left;border:1px solid var(--line);
  opacity:0;transform:translateX(-14px);animation:slidein .5s ease forwards;animation-delay:var(--d)}
@keyframes slidein{to{opacity:1;transform:none}}
.factor .frow{display:flex;justify-content:space-between;align-items:center;gap:10px;font-weight:700;font-size:14px}
.factor .fname{display:flex;gap:8px;align-items:center}
.factor .fname .ic{stroke:var(--brand);width:18px;height:18px}
.tag2{display:inline-flex;gap:4px;align-items:center;font-size:11px;font-weight:800;padding:3px 9px;border-radius:13px;white-space:nowrap}
.tag2 .ic{width:12px;height:12px}
.tag2.pd{background:var(--coral-soft);color:#d1543b}.tag2.pd .ic{stroke:#d1543b}
.tag2.hc{background:var(--teal-soft);color:#0e8a7c}.tag2.hc .ic{stroke:#0e8a7c}
.bar{height:9px;border-radius:8px;background:var(--line);margin-top:8px;overflow:hidden}
.bar i{display:block;height:100%;width:0;border-radius:8px;transition:width 1s ease .2s}
.bar i.pd{background:linear-gradient(90deg,#f7a897,var(--coral))}
.bar i.hc{background:linear-gradient(90deg,#7fd9cd,var(--teal))}
.report{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:11px;width:100%}
.stat{background:#fff;border-radius:16px;padding:14px;box-shadow:var(--shadow-sm);text-align:center;border:1px solid var(--line);transition:.2s}
.stat:hover{transform:translateY(-3px)}
.stat .sv{font-family:'Baloo 2';font-size:23px;font-weight:800;color:var(--brand)}
.stat .sl{font-size:12px;color:var(--ink-soft);font-weight:600;margin-top:2px}
.result-ethics{background:var(--brand-soft)}

/* confetti + toast */
.confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.confetti i{position:absolute;width:9px;height:13px;border-radius:3px;top:-20px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(120vh) rotate(680deg);opacity:.85}}
.toast{position:fixed;top:64px;right:16px;left:auto;transform:translateY(-14px);background:var(--ink);
  color:#fff;font-weight:700;padding:12px 18px;border-radius:14px;box-shadow:var(--shadow);opacity:0;transition:.3s;z-index:45;max-width:min(340px,86vw);text-align:left;font-size:14px;line-height:1.4}
.toast.show{opacity:1;transform:translateY(0)}

/* info pages */
.info .doc{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:26px 28px;
  max-width:600px;margin:0 auto;text-align:left;box-shadow:var(--shadow-sm)}
/* methodology uses the full app width (centered) so the flow diagrams breathe */
#methodology .doc{max-width:720px;margin-left:auto;margin-right:auto}
#methodology .arch{gap:6px}
.doc h4{font-size:16px;color:var(--brand);margin:16px 0 6px}
.doc h4:first-child{margin-top:0}
.doc p{color:#59547e;font-weight:500;margin-bottom:8px}
.doc ul{margin:0 0 8px 18px;color:#59547e;font-weight:500}
.doc li{margin-bottom:5px}
.doc .muted{color:var(--ink-soft);font-size:13px}
.doc code{background:var(--brand-soft);padding:1px 6px;border-radius:6px;font-size:13px}
.devcard{display:flex;gap:14px;align-items:center;background:var(--brand-soft);border-radius:16px;padding:16px;margin:6px 0 12px}
.devcard .avatar{width:52px;height:52px;border-radius:50%;background:#fff;display:grid;place-items:center;flex:none}
.devcard .avatar .ic{width:26px;height:26px;stroke:var(--brand)}
.devname{font-family:'Baloo 2';font-weight:800;font-size:18px;color:var(--ink)}
.devrole{font-size:13px;color:var(--ink-soft);font-weight:600}
.ghlink{display:inline-flex;gap:6px;align-items:center;font-weight:700;font-size:13px;margin-top:4px}
.ghlink .ic{stroke:var(--brand);fill:none}
.arch{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;justify-content:center;margin-bottom:14px}
.arch .node{background:var(--brand-soft);border-radius:14px;padding:12px 10px;width:120px;text-align:center;display:flex;flex-direction:column;gap:4px;align-items:center}
.arch .node .ic{width:24px;height:24px;stroke:var(--brand)}
.arch .node span{font-weight:800;font-size:13px;color:var(--ink);font-family:'Baloo 2'}
.arch .node small{font-size:11px;color:var(--ink-soft);font-weight:600;line-height:1.3}
.arch .arrow{display:flex;align-items:center}.arch .arrow .ic{stroke:var(--brand-2)}

/* footer */
.foot{padding:18px 16px 26px;text-align:center}
.footlinks{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-bottom:10px}
.footlinks button,.footlinks a{display:inline-flex;gap:6px;align-items:center;background:#fff;border:1px solid var(--line);
  color:var(--ink-soft);font-family:'Quicksand';font-weight:700;font-size:13px;padding:8px 14px;border-radius:20px;cursor:pointer;transition:.2s;text-decoration:none}
.footlinks button:hover,.footlinks a:hover{color:var(--brand);border-color:var(--brand-soft);background:var(--brand-soft);text-decoration:none}
.footlinks .ic{stroke:currentColor}
.footnote{color:var(--ink-soft);font-size:12px;font-weight:600;opacity:.85}

/* ---- responsive ---- */
@media(max-width:600px){
  #app{padding:66px 15px 24px}
  .homebtn{width:40px;height:40px;top:12px;left:12px}
  .steps{top:17px}
  .logo{font-size:46px}
  .title{font-size:25px}
  .tag{font-size:17px}
  .sub{font-size:14.5px}
  .stepcard{width:100%;max-width:320px;display:flex;align-items:center;gap:14px;text-align:left;padding:16px}
  .stepcard .ico{margin-bottom:0}
  .stepcard h3{font-size:16px}
  .bubble p{font-size:16px}
  .gaugewrap{width:180px;height:180px}
  .gauge{width:180px;height:180px}
  .gpct{font-size:42px}
  .cta{font-size:17px;padding:13px 26px;width:100%;max-width:340px}
  .cta.big{font-size:18px}
  .rowbtns{flex-direction:column;align-items:center;width:100%}
  .report{grid-template-columns:repeat(2,1fr)}
  .arch{flex-direction:column;align-items:center}
  .arch .node{width:100%;max-width:260px;flex-direction:row;justify-content:flex-start;text-align:left;gap:10px}
  .arch .node small{flex:1}
  .arch .arrow{transform:rotate(90deg)}
  .info .doc{padding:20px 18px}
  #methodology .doc{padding:20px 16px}
  .footlinks button,.footlinks a{font-size:12px;padding:7px 11px}
  .tasksum{gap:8px}
  .tasksum .tcard{flex:1 1 28%;min-width:0;padding:11px 8px}
  .tcval{font-size:24px}
  .rec-instructions{font-size:14px}
  .ddkcard{padding:14px}
  .toast{top:58px;right:10px;font-size:13px}
}
@media(max-width:360px){.logo{font-size:40px}.title{font-size:22px}.report{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* multi-passage record UI */
.rec-instructions{max-width:40rem;margin:0 auto 16px;text-align:center;color:var(--ink-soft);font-size:15px;font-weight:600;line-height:1.55}
.takeprog{display:flex;flex-direction:column;align-items:center;gap:8px;margin:12px 0 14px}
.takedots{display:flex;gap:9px}
.takedots i{width:13px;height:13px;border-radius:50%;background:var(--line);border:1px solid #dcd8f3;transition:background .3s,transform .3s,box-shadow .3s}
.takedots i.on{background:var(--teal);border-color:var(--teal);transform:scale(1.18);box-shadow:0 0 0 4px var(--teal-soft)}
.takelabel{font-weight:700;font-size:14px;color:var(--ink)}
/* DDK (pa-ta-ka) articulation test */
.ddkcard{margin:24px auto 6px;max-width:34rem;background:var(--brand-soft);border:1px solid var(--line);border-radius:18px;padding:16px 18px;text-align:center}
.ddkhead{font-weight:800;color:var(--ink);display:flex;gap:8px;align-items:center;justify-content:center;font-size:16px}
.ddkhead .ic{stroke:var(--brand)}
.ddkinstr{color:var(--ink-soft);font-size:14px;font-weight:600;line-height:1.5;margin:8px 0 14px}
.ddkbtn{display:inline-flex;gap:8px;align-items:center;justify-content:center;padding:11px 20px;border-radius:999px;border:none;background:var(--brand);color:#fff;font-weight:700;font-size:15px;cursor:pointer;transition:transform .2s,background .2s}
.ddkbtn:hover{transform:translateY(-2px)}
.ddkbtn .ic{stroke:#fff;width:18px;height:18px}
.ddkbtn.recording{background:var(--coral);animation:ddkpulse 1s ease-in-out infinite}
@keyframes ddkpulse{0%,100%{box-shadow:0 0 0 0 var(--coral-soft)}50%{box-shadow:0 0 0 10px rgba(242,119,95,0)}}
.ddkres{margin-top:12px;font-weight:700;color:var(--teal);font-size:14px}
.stepbadge{display:inline-block;background:var(--teal-soft);color:var(--teal);font-weight:800;font-size:12px;letter-spacing:.4px;padding:6px 14px;border-radius:999px;margin-bottom:14px;text-transform:uppercase}
/* longitudinal history */
.histchart{text-align:center;margin-bottom:16px}
.histlist{display:flex;flex-direction:column;gap:4px;max-width:360px;margin:0 auto}
.histrow{display:flex;justify-content:space-between;align-items:center;padding:9px 13px;border-radius:11px;background:var(--card);border:1px solid var(--line);font-weight:600;color:var(--ink)}
.hmuted{color:var(--ink-soft);font-weight:600;margin-left:6px;font-size:12px}
#ddkResultBox,#vowelResultBox{width:100%}
/* combined 3-step summary on results */
.tasksum{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:8px 0 22px}
.tcard{background:var(--card);border:2px solid var(--line);border-radius:16px;padding:13px 18px;min-width:118px;text-align:center;box-shadow:0 6px 18px rgba(60,54,120,.06)}
.tclabel{font-size:11px;font-weight:800;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.4px}
.tcval{font-size:30px;font-weight:800;color:var(--ink);margin:3px 0 1px;line-height:1}
.tcval small{font-size:14px;font-weight:700;color:var(--ink-soft)}
.tcsub{font-size:11px;font-weight:600;color:var(--ink-soft)}
/* methodology flow diagrams */
.flowd{margin:14px 0}
.flowdown{text-align:center;color:var(--brand-2);font-size:20px;font-weight:800;margin:0 0 4px}
