/* Adaptive questionnaire + living brief. Tokens come from styles.css. */
.start{padding-top:96px}
.q-shell{display:grid;grid-template-columns:1.35fr 1fr;background:var(--white);border:1px solid var(--line);align-items:start}
.q-main{padding:38px 46px 34px;min-width:0}
#q-app{scroll-margin-top:110px}
.q-top{display:flex;justify-content:space-between;align-items:baseline;gap:20px}
.q-top .small-label{color:var(--muted)}
.q-count{font-size:11px;color:var(--muted)}
#q-title{font-size:clamp(26px,2.4vw,34px);line-height:1.15;letter-spacing:-.02em;max-width:22ch}
#q-title:focus{outline:none}
/* Word masks for the rising title; padding keeps descenders inside the mask. */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.14em;margin-bottom:-.14em}
.w>span{display:inline-block}

/* The trail: progress as a winding path, one marker per section. */
.trail{position:relative;height:66px;margin:12px 0 22px}
.trail-svg{position:absolute;left:0;top:0;overflow:visible}
.trail-base{fill:none;stroke:var(--line);stroke-width:1.5;stroke-dasharray:2 5;stroke-linecap:round}
.trail-ink{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round}
.trail-node,.trail-node-exit{position:absolute;left:0;top:0;width:0;height:0}
.trail-dot{position:absolute;width:12px;height:12px;left:-6px;top:-6px;border-radius:50%;background:var(--white);border:1.5px solid var(--line);transition:background var(--base),border-color var(--base)}
.trail-node.is-done .trail-dot{background:var(--ink);border-color:var(--ink)}
.trail-node.is-current .trail-dot{border-color:var(--ink)}
.trail-node.is-new .trail-dot:after{content:'';position:absolute;inset:-6px;border-radius:50%;border:1.5px solid var(--ink);animation:trail-ping 1.2s var(--ease) forwards}
@keyframes trail-ping{from{transform:scale(.6);opacity:1}to{transform:scale(2.2);opacity:0}}
.trail-label{position:absolute;top:20px;left:0;transform:translateX(-50%);white-space:nowrap;font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);transition:opacity var(--base),color var(--base)}
.trail-node.is-first .trail-label{transform:translateX(-8px)}
.trail-node.is-last .trail-label{transform:translateX(calc(-100% + 8px))}
.trail-node.is-current .trail-label{color:var(--ink)}
.trail-node.has-tag .trail-label{opacity:0}
.trail-walker{position:absolute;left:0;top:0;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:var(--lime);border:2px solid var(--ink);box-shadow:0 0 0 5px #dce9a566;z-index:2;pointer-events:none}
.trail-tag{position:absolute;top:36px;transform:translateX(-50%);z-index:3;white-space:nowrap;background:var(--lime);color:var(--ink);border-radius:100px;padding:5px 12px;font-size:10px;line-height:1.3;box-shadow:0 8px 20px #182e271f;display:flex;gap:6px;align-items:baseline}
.trail-tag b{font-weight:700}
.trail-tag span{opacity:.7}
.trail-sun{position:absolute;left:-15px;top:-21px;width:30px;height:15px;border-radius:30px 30px 0 0;background:var(--lime);border:1.5px solid var(--ink);border-bottom:0;transform-origin:50% 100%;z-index:1}
.trail[data-complete=true] .trail-walker{opacity:0;transition:opacity var(--base) .7s}
.trail[data-complete=true] .trail-node.is-last .trail-dot{background:var(--lime);border-color:var(--ink)}
.q-shell{scroll-margin-top:96px}
.q-hint{font-size:13px;color:var(--muted);margin-top:12px}
.q-options{margin-top:26px;border-top:1px solid var(--line)}
.q-opt{display:flex;align-items:center;gap:16px;width:100%;min-height:56px;padding:14px 16px;background:none;border-bottom:1px solid var(--line);text-align:left;font-size:14px;line-height:1.45;border-radius:0;transition:background var(--fast);position:relative;isolation:isolate}
.q-opt:hover{background:var(--paper)}
/* Selection sweeps in from the left. */
.q-opt:before{content:'';position:absolute;inset:0;background:var(--sage);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease);z-index:-1}
.q-opt[aria-pressed=true]{font-weight:600}
.q-opt[aria-pressed=true]:before{transform:scaleX(1)}
.q-flyer{position:fixed;z-index:1000;pointer-events:none;margin:-6px 0 0 -12px;padding:6px 12px;border-radius:100px;background:var(--sage);color:var(--ink);font:600 14px/1.45 'Manrope',sans-serif;white-space:nowrap;box-shadow:0 12px 30px #182e2733;will-change:transform}
.q-mark{width:18px;height:18px;flex-shrink:0;border:1.5px solid var(--ink);border-radius:50%;display:grid;place-items:center;transition:background var(--fast)}
.is-multi .q-mark{border-radius:3px}
.q-opt[aria-pressed=true] .q-mark{background:var(--ink)}
.q-opt[aria-pressed=true] .q-mark:after{content:'';width:6px;height:6px;border-radius:50%;background:var(--lime)}
.is-multi .q-opt[aria-pressed=true] .q-mark:after{width:8px;height:4px;border-radius:0;background:none;border:solid var(--lime);border-width:0 0 2px 2px;transform:translateY(-1px) rotate(-45deg)}
.q-fields{margin-top:26px;display:grid;gap:18px}
.q-field{display:grid;gap:7px;font-size:12px;font-weight:600;min-width:0}
.q-field input,.q-field select,.q-field textarea{font:400 15px/1.5 'Manrope',sans-serif;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:12px 14px;width:100%;min-height:48px}
.q-field textarea{resize:vertical;min-height:110px}
.q-field input:focus,.q-field select:focus,.q-field textarea:focus{outline:2px solid var(--ink);outline-offset:1px}
.q-field-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.q-note{font-size:11px;color:var(--muted);line-height:1.6}
.q-consent{display:flex;gap:12px;align-items:flex-start;font-size:13px;line-height:1.55;padding:14px 16px;background:var(--paper);border:1px solid var(--line);border-radius:4px;cursor:pointer}
.q-consent input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--ink);flex-shrink:0}
.q-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.q-status{min-height:22px;margin-top:18px;font-size:13px;color:var(--muted)}
.q-status[role=alert]{color:#8C3524;background:#F6E4DE;padding:12px 14px;border-radius:4px}
.inline-link{background:none;padding:0;min-height:0;font-weight:700;text-decoration:underline;display:inline;border-radius:0;color:inherit}
.q-nav{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:10px}
.q-nav-right{display:flex;align-items:center;gap:18px;margin-left:auto}
.q-nav .button:disabled{opacity:.35;cursor:not-allowed;transform:none;box-shadow:none}
.q-back{background:none;padding:10px 0;min-height:44px;font-size:12px;font-weight:600;color:var(--muted);border-radius:0;gap:8px}
.q-back:hover{color:var(--ink)}
.q-noscript{font-size:15px}
.q-noscript a{text-decoration:underline}
.q-done h3{font-size:clamp(26px,2.4vw,34px);line-height:1.15;margin:14px 0 16px;max-width:20ch}
.q-done p{font-size:14px;color:var(--muted);max-width:46ch;margin-bottom:22px}
.q-done:focus{outline:none}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* The living brief: mirrors the dark price panel in the consultation section. */
.q-brief{margin:18px;background:var(--ink);color:var(--paper);padding:30px 30px 24px;position:sticky;top:96px;max-height:calc(100vh - 120px);overflow:auto}
.brief-toggle{display:none}
.brief-head{display:flex;justify-content:space-between;align-items:center;gap:14px;padding-bottom:18px;border-bottom:1px solid #f6f5ef33}
.brief-head .small-label,.brief-toggle .small-label{color:var(--lime);font-size:9px}
.brief-live{font-size:10px;opacity:.75;display:inline-flex;align-items:center;gap:7px}
.brief-live .status-dot{color:var(--lime)}
.brief-empty{font-size:13px;opacity:.7;padding:22px 0}
.brief-consult{padding:20px 0;border-bottom:1px solid #f6f5ef33;display:grid;gap:4px}
.brief-consult .small-label{font-size:8px;opacity:.7}
.brief-consult strong{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;font-size:22px;line-height:1.2}
.brief-consult span:last-child{font-size:11px;opacity:.8}
.brief-sec{padding:16px 0;border-bottom:1px solid #f6f5ef22}
.brief-sec h4{margin:0 0 8px;font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--lime)}
.brief-sec ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.brief-sec li{font-size:13px;line-height:1.5;padding-left:16px;position:relative}
.brief-sec li:before{content:'';position:absolute;left:0;top:.62em;width:6px;height:1px;background:currentColor;opacity:.6}
.brief-sec li.is-ready:before{content:'✓';background:none;top:0;width:auto;height:auto;color:var(--lime);opacity:1;font-size:11px}
.brief-sec.is-warn li:last-child{color:#F2C9B8;font-weight:600}
.roll{display:block;overflow:hidden}
.roll>*{display:block}
.brief-score{display:flex;align-items:center;gap:14px}
.brief-score ul{flex:1}
.brief-ring-wrap{position:relative;width:56px;height:56px;flex-shrink:0}
.brief-ring{width:56px;height:56px;transform:rotate(-90deg)}
.ring-track{fill:none;stroke:#f6f5ef26;stroke-width:4}
.ring-arc{fill:none;stroke:var(--lime);stroke-width:4;stroke-linecap:round}
.ring-num{position:absolute;inset:0;display:grid;place-items:center;font:400 19px/1 'Libre Caslon Display',Georgia,serif}
.q-brief{position:sticky}
.brief-seal{position:absolute;top:14px;right:14px;width:78px;height:78px;border-radius:50%;background:var(--ink);border:1.5px solid var(--lime);color:var(--lime);display:grid;place-content:center;text-align:center;transform:rotate(-8deg);z-index:2;box-shadow:0 0 0 5px var(--ink),0 0 0 6px #dce9a566}
.brief-seal strong{font:400 21px/1 'Libre Caslon Display',Georgia,serif}
.brief-seal span{font-size:7px;font-weight:700;letter-spacing:.16em;margin-top:5px}
.q-brief.is-sealed .brief-live{visibility:hidden}
.brief-bars{display:grid;gap:10px;margin-top:12px}
.brief-bar{display:grid;grid-template-columns:1fr auto;gap:5px 10px;font-size:11px}
.brief-pct{opacity:.75;font-variant-numeric:tabular-nums}
.brief-track{grid-column:1/-1;height:4px;background:#f6f5ef26;position:relative}
.brief-track i{position:absolute;inset:0 auto 0 0;background:var(--lime)}
.brief-foot{font-size:10px;opacity:.6;margin-top:16px;line-height:1.6}

@media(max-width:1150px){.q-main{padding:30px}.q-brief{margin:14px;padding:26px}}
@media(max-width:900px){
  .q-shell{grid-template-columns:1fr}
  .q-brief{order:-1;position:static;max-height:none;margin:12px 12px 0;padding:0}
  .brief-toggle{display:flex;align-items:center;gap:14px;width:100%;min-height:56px;padding:14px 20px;background:none;color:var(--paper);border-radius:0;text-align:left}
  .brief-count{font-size:12px;opacity:.85;margin-left:auto}
  .brief-chevron{width:9px;height:9px;border:solid var(--lime);border-width:0 1.5px 1.5px 0;transform:rotate(45deg) translateY(-2px);transition:transform var(--base)}
  .brief-toggle[aria-expanded=true] .brief-chevron{transform:rotate(-135deg)}
  .brief-head{display:none}
  .q-brief:not(.is-open) .brief-body,.q-brief:not(.is-open) .brief-foot{display:none}
  .brief-body,.brief-foot{padding:0 20px}
  .brief-foot{padding-bottom:18px}
}
@media(max-width:650px){
  .start{padding-top:64px}
  .q-main{padding:26px 20px 24px}
  .q-field-pair{grid-template-columns:1fr}
  .q-opt{padding:13px 12px;font-size:13.5px}
  .q-nav{flex-wrap:wrap}
  .trail-label{opacity:0}
  .trail-node.is-current .trail-label{opacity:1}
  .trail-node.is-current.has-tag .trail-label{opacity:0}
  .brief-seal{width:52px;height:52px;top:2px;right:44px}
  .brief-seal strong{font-size:15px}
  .brief-seal span{display:none}
  .q-brief.is-sealed .brief-count{visibility:hidden}
}

/* Print the brief on its own. */
@media print{
  .print-brief body *{visibility:hidden}
  .print-brief .q-brief,.print-brief .q-brief *{visibility:visible}
  .print-brief .q-brief{position:absolute;inset:0 auto auto 0;width:100%;margin:0;background:#fff;color:#111;max-height:none;overflow:visible}
  .print-brief .brief-toggle,.print-brief .brief-live{display:none}
  .print-brief .brief-sec h4,.print-brief .brief-head .small-label{color:#233D35}
  .print-brief .brief-body,.print-brief .brief-foot{display:block!important}
  .print-brief .brief-track{background:#ddd}.print-brief .brief-track i{background:#233D35}
}
