/* ═══════════════════════════════════════════════════════════════════════════
   The résumé block, the live GTM engine and the persona chat.
   Uses the page's own tokens (--ink, --bone, --accent, --serif, --sans) so it
   reads as the same site, not a widget bolted on.
   ═══════════════════════════════════════════════════════════════════════════ */

/* `hidden` must always win. Without this, any element given a `display` below
   (the chat panel is `display:flex`) ignores the attribute and shows anyway. */
[hidden]{display:none !important;}

/* ── RÉSUMÉ ──────────────────────────────────────────────────────────────── */
.resume{padding-bottom:clamp(3rem,6vw,5rem);}
.rz-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,4vw,3.5rem);align-items:start;}
@media (max-width:920px){
  .rz-grid{grid-template-columns:1fr;}
  /* on a phone the four numbers lead; the long history follows */
  .rz-grid > div{order:-1;}
}

.rz-xp{list-style:none;border-left:1px solid var(--line);}
.rz-job{position:relative;padding:0 0 2rem 1.6rem;}
.rz-job:last-child{padding-bottom:0;}
.rz-job::before{content:'';position:absolute;left:-5px;top:.45rem;width:9px;height:9px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);}
.rz-when{font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);}
.rz-job h3{font-family:var(--serif);font-weight:500;font-size:1.22rem;margin:.3rem 0 .15rem;}
.rz-where{font-size:.84rem;color:var(--dim);margin-bottom:.7rem;}
.rz-job ul{list-style:none;display:grid;gap:.5rem;}
.rz-job li{position:relative;padding-left:1rem;font-size:.86rem;color:#c9c9c4;line-height:1.6;}
.rz-job li::before{content:'';position:absolute;left:0;top:.62rem;width:5px;height:1px;background:var(--accent);}
.rz-job li b{color:var(--bone);font-weight:500;}

.rz-nums{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;}
.rz-num{border:1px solid var(--line);border-radius:14px;background:var(--ink2);padding:1.15rem 1.15rem 1.05rem;}
.rz-num .v{font-family:var(--serif);font-size:clamp(1.5rem,2.6vw,1.95rem);color:var(--accent);line-height:1.1;}
.rz-num .k{font-size:.76rem;color:var(--dim);margin-top:.4rem;line-height:1.5;}
.rz-num .k b{color:var(--bone);font-weight:500;}
.rz-src{font-size:.72rem;color:var(--dim);margin:.85rem 0 1.8rem;line-height:1.6;}
.rz-src b{color:var(--accent);font-weight:400;}

.rz-block{border-top:1px solid var(--line);padding-top:1.2rem;margin-top:1.2rem;}
.rz-block h4{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);font-weight:500;margin-bottom:.75rem;}
.rz-certs{list-style:none;display:grid;gap:.42rem;}
.rz-certs li{font-size:.84rem;color:#c9c9c4;padding-left:1.15rem;position:relative;line-height:1.5;}
.rz-certs li::before{content:'✓';position:absolute;left:0;color:var(--accent);font-size:.74rem;top:.1rem;}
.rz-chips{display:flex;flex-wrap:wrap;gap:.4rem;}
.rz-chips span{font-size:.72rem;color:var(--dim);border:1px solid var(--line);padding:.3rem .65rem;border-radius:6px;}
.rz-edu{font-size:.84rem;color:#c9c9c4;line-height:1.6;}

.rz-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.4rem;margin-top:2.4rem;
  padding-top:1.8rem;border-top:1px solid var(--line);}
.rz-listen{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;}
.rz-listen span{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);}
.rz-listen audio{height:36px;max-width:100%;color-scheme:dark;}

/* ── LAB: the live engine ────────────────────────────────────────────────── */
.lab{padding-bottom:clamp(3.5rem,7vw,6rem);}
.lab-shell{max-width:820px;}

/* the writing area and its toolbar share one bordered box */
.pbox{border:1px solid rgb(var(--accent-rgb) / .32);border-radius:16px;background:var(--ink2);
  transition:border-color .3s,box-shadow .3s;overflow:hidden;}
.pbox:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);}
.pbox textarea{display:block;width:100%;min-height:150px;resize:vertical;border:0;outline:0;background:transparent;
  color:var(--bone);font:inherit;font-size:1rem;line-height:1.65;padding:1.15rem 1.25rem .6rem;}
.pbox textarea::placeholder{color:#70706b;}
.pbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem .85rem .7rem 1.1rem;
  border-top:1px solid var(--line);}
.ptoggle{display:inline-flex;align-items:center;gap:.6rem;cursor:pointer;font-size:.78rem;color:var(--dim);user-select:none;}
.ptoggle input{position:absolute;opacity:0;pointer-events:none;}
.ptoggle i{position:relative;width:34px;height:20px;border-radius:20px;background:#2a2a2a;transition:background .25s;flex:none;}
.ptoggle i::after{content:'';position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;
  background:var(--bone);transition:transform .25s cubic-bezier(.22,1,.36,1);}
.ptoggle input:checked + i{background:var(--accent);}
.ptoggle input:checked + i::after{transform:translateX(14px);background:var(--ink);}
.ptoggle input:focus-visible + i{outline:2px solid var(--accent);outline-offset:3px;}
.ptoggle input:checked ~ b{color:var(--accent);}
.ptoggle b{font-weight:400;transition:color .25s;}
.pmeta{display:flex;align-items:center;gap:.7rem;font-size:.72rem;color:#7a7a75;font-variant-numeric:tabular-nums;}
.pclear{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--dim);
  cursor:pointer;font-size:.8rem;line-height:1;transition:.2s;}
.pclear:hover{color:var(--bone);border-color:rgba(244,244,240,.3);}

/* one big button under the box */
.pgo{display:block;width:100%;margin-top:.9rem;padding:1.05rem 1.4rem;border:0;border-radius:14px;cursor:pointer;
  background:var(--accent);color:var(--ink);font:inherit;font-weight:600;font-size:1rem;letter-spacing:.01em;
  transition:background .25s,transform .25s,opacity .25s;}
.pgo:hover:not(:disabled){background:var(--accent-hi);transform:translateY(-1px);}
.pgo:disabled{opacity:.55;cursor:progress;}

.ptry{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin-top:.95rem;font-size:.74rem;color:#7a7a75;}
.ptry button{font:inherit;font-size:.74rem;color:var(--dim);background:transparent;border:1px solid var(--line);
  border-radius:100px;padding:.36rem .8rem;cursor:pointer;transition:.2s;}
.ptry button:hover{color:var(--accent);border-color:rgb(var(--accent-rgb) / .45);}

.lab-msg{margin-top:1rem;font-size:.86rem;color:#e9a3a3;}

/* the result */
.pout{margin-top:1.8rem;border:1px solid var(--line);border-radius:16px;background:var(--ink2);overflow:hidden;}
.pout-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  padding:.8rem 1rem .8rem 1.25rem;border-bottom:1px solid var(--line);}
.pout-status{display:flex;align-items:center;gap:.55rem;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);}
.pout-status i{width:7px;height:7px;border-radius:50%;background:var(--accent);}
.pout.busy .pout-status i{animation:pulse 1s ease-in-out infinite;}
@keyframes pulse{50%{opacity:.25;}}
.pout-actions{display:flex;gap:.4rem;}
.pout-actions button{font:inherit;font-size:.74rem;color:var(--bone);background:transparent;border:1px solid var(--line);
  border-radius:8px;padding:.42rem .8rem;cursor:pointer;transition:.2s;}
.pout-actions button:hover:not(:disabled){border-color:var(--accent);color:var(--accent);}
.pout-actions button:disabled{opacity:.4;cursor:default;}

.md{padding:1.4rem 1.5rem 1.6rem;font-size:.92rem;line-height:1.72;color:#d6d6d1;}
.md h3{font-family:var(--serif);font-weight:500;font-size:1.28rem;color:var(--bone);margin:1.7rem 0 .6rem;
  padding-top:1.3rem;border-top:1px solid var(--line);}
.md h3:first-child{margin-top:0;padding-top:0;border-top:0;}
.md h4{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:500;margin:1.1rem 0 .4rem;}
.md p{margin:.55rem 0;}
.md strong{color:var(--bone);font-weight:500;}
.md em{font-style:italic;color:var(--bone);}
.md ul,.md ol{margin:.5rem 0 .5rem 1.15rem;display:grid;gap:.3rem;}
.md li.sub{margin-left:1.1rem;list-style:circle;color:#bcbcb7;}
.md code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.84em;background:rgba(255,255,255,.06);padding:.1em .35em;border-radius:4px;}
.md blockquote{border-left:2px solid var(--accent);padding-left:.9rem;margin:.7rem 0;color:var(--bone);font-style:italic;}
.md hr{border:0;border-top:1px solid var(--line);margin:1.2rem 0;}
.md-table{overflow-x:auto;margin:.8rem 0;}
.md table{border-collapse:collapse;width:100%;font-size:.84rem;min-width:420px;}
.md th,.md td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--line);vertical-align:top;}
.md th{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:500;}
.pout.busy .md > :last-child::after{content:'▍';color:var(--accent);animation:pulse .9s steps(2) infinite;margin-left:.1em;}

.pout-foot{border-top:1px solid var(--line);padding:1.1rem 1.25rem 1.25rem;}
.pout-foot .q{font-size:.86rem;color:var(--bone);margin-bottom:.65rem;}
.plead{display:flex;gap:.5rem;flex-wrap:wrap;}
.plead input{flex:1 1 220px;min-width:0;background:var(--ink);border:1px solid var(--line);border-radius:10px;
  color:var(--bone);font:inherit;font-size:.9rem;padding:.7rem .9rem;outline:0;transition:border-color .2s;}
.plead input:focus{border-color:var(--accent);}
.plead button{font:inherit;font-size:.86rem;font-weight:500;background:transparent;color:var(--accent);
  border:1px solid var(--accent);border-radius:10px;padding:.7rem 1.2rem;cursor:pointer;transition:.2s;}
.plead button:hover:not(:disabled){background:var(--accent);color:var(--ink);}
.plead button:disabled{opacity:.5;}
.pout-foot .n{font-size:.72rem;color:#7a7a75;margin-top:.6rem;line-height:1.55;}
.lab-fine{font-size:.74rem;color:#7a7a75;margin-top:1.1rem;line-height:1.6;max-width:62ch;}

/* ── CHAT ────────────────────────────────────────────────────────────────── */
.cw-fab{position:fixed;right:clamp(.9rem,2.5vw,1.6rem);bottom:clamp(.9rem,2.5vw,1.6rem);z-index:80;
  display:inline-flex;align-items:center;gap:.6rem;border:1px solid rgb(var(--accent-rgb) / .5);cursor:pointer;
  background:rgba(19,19,19,.92);backdrop-filter:blur(10px);color:var(--bone);font:inherit;font-size:.82rem;
  padding:.5rem 1rem .5rem .5rem;border-radius:100px;box-shadow:0 14px 40px -12px rgba(0,0,0,.8);
  transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s;}
.cw-fab:hover{transform:translateY(-2px);border-color:var(--accent);}
.cw-av{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;
  background:var(--accent);color:var(--ink);font-family:var(--serif);font-weight:500;font-size:.82rem;}
.cw-fab .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:none;}

.cw-panel{position:fixed;right:clamp(.9rem,2.5vw,1.6rem);bottom:clamp(.9rem,2.5vw,1.6rem);z-index:81;
  width:min(390px,calc(100vw - 1.8rem));height:min(600px,calc(100svh - 1.8rem));
  display:flex;flex-direction:column;border:1px solid rgb(var(--accent-rgb) / .38);border-radius:18px;overflow:hidden;
  background:#0f0f0f;box-shadow:0 30px 90px -20px rgba(0,0,0,.9);}
.cw-head{display:flex;align-items:center;gap:.7rem;padding:.8rem .8rem .8rem 1rem;border-bottom:1px solid var(--line);}
.cw-head .t{flex:1;min-width:0;}
.cw-head .t b{display:block;font-family:var(--serif);font-weight:500;font-size:.98rem;}
.cw-head .t span{display:block;font-size:.68rem;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cw-ic{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--dim);
  cursor:pointer;display:grid;place-items:center;font-size:.86rem;transition:.2s;}
.cw-ic:hover{color:var(--bone);border-color:rgba(244,244,240,.3);}
.cw-ic[aria-pressed="true"]{color:var(--ink);background:var(--accent);border-color:var(--accent);}

.cw-log{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.65rem;scroll-behavior:smooth;}
.cw-m{max-width:86%;padding:.65rem .85rem;border-radius:14px;font-size:.88rem;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;}
.cw-m.a{align-self:flex-start;background:var(--ink2);border:1px solid var(--line);border-bottom-left-radius:4px;color:#deded9;}
.cw-m.u{align-self:flex-end;background:var(--accent);color:var(--ink);border-bottom-right-radius:4px;}
.cw-m.a.wait::after{content:'● ● ●';letter-spacing:.2em;font-size:.6rem;color:var(--dim);animation:pulse 1s infinite;}
.cw-sugg{display:flex;flex-wrap:wrap;gap:.4rem;padding:0 1rem .7rem;}
.cw-sugg button{font:inherit;font-size:.74rem;color:var(--dim);background:transparent;border:1px solid var(--line);
  border-radius:100px;padding:.38rem .75rem;cursor:pointer;transition:.2s;}
.cw-sugg button:hover{color:var(--accent);border-color:rgb(var(--accent-rgb) / .45);}

.cw-form{display:flex;align-items:center;gap:.45rem;padding:.7rem;border-top:1px solid var(--line);}
.cw-form input{flex:1;min-width:0;background:var(--ink2);border:1px solid var(--line);border-radius:100px;color:var(--bone);
  font:inherit;font-size:.9rem;padding:.65rem 1rem;outline:0;transition:border-color .2s;}
.cw-form input:focus{border-color:var(--accent);}
.cw-send{flex:none;width:38px;height:38px;border-radius:50%;border:0;background:var(--accent);color:var(--ink);
  cursor:pointer;font-size:1rem;display:grid;place-items:center;transition:.2s;}
.cw-send:disabled{opacity:.45;cursor:default;}
.cw-mic{flex:none;}
.cw-mic.live{color:var(--ink);background:#e9645f;border-color:#e9645f;animation:pulse 1.1s infinite;}
.cw-note{font-size:.64rem;color:#6e6e69;text-align:center;padding:0 .8rem .55rem;}

@media (max-width:520px){
  .cw-fab .lbl{display:none;}
  .cw-fab{padding:.4rem;}
  .cw-panel{right:.5rem;left:.5rem;bottom:.5rem;width:auto;height:min(78svh,600px);}
}

/* ── print: the plan only, on white ──────────────────────────────────────── */
#printRoot{display:none;}
@media print{
  html.printing body{background:#fff !important;}
  html.printing body > *:not(#printRoot){display:none !important;}
  html.printing #printRoot{display:block;color:#111;font-family:Georgia,'Times New Roman',serif;padding:0;}
  #printRoot .pr-top{border-bottom:2px solid #111;padding-bottom:10px;margin-bottom:18px;}
  #printRoot .pr-top b{font-size:20px;}
  #printRoot .pr-top span{display:block;font:12px Arial,sans-serif;color:#555;margin-top:4px;}
  #printRoot .md{padding:0;color:#111;font:13px/1.6 Arial,sans-serif;}
  #printRoot .md h3{color:#111;border-top:1px solid #bbb;font-size:17px;break-after:avoid;}
  #printRoot .md h4{color:#444;}
  #printRoot .md strong,#printRoot .md em,#printRoot .md blockquote{color:#111;}
  #printRoot .md th{color:#111;}
  #printRoot .md th,#printRoot .md td{border-bottom:1px solid #ccc;}
  #printRoot .md code{background:#eee;}
  #printRoot .pr-foot{margin-top:22px;padding-top:10px;border-top:1px solid #bbb;font:11px Arial,sans-serif;color:#555;}
}

@media (prefers-reduced-motion:reduce){
  .pout.busy .pout-status i,.cw-m.a.wait::after,.cw-mic.live{animation:none;}
}

/* ── nav on a phone ───────────────────────────────────────────────────────
   Four section links plus the brand and the CTA do not fit under ~760px and
   push the whole page sideways. The page is one scroll, so the links can go;
   the brand and the contact button stay. */
/* `nav .nav-links`, not `.nav-links`: this sheet loads before the page's inline
   <style>, so an equal-specificity rule here would lose to it. */
@media (max-width:760px){
  nav .nav-links{display:none;}
}

.hero .hero-cta{margin-top:2rem;}
.hero .hero-meta{margin-top:2.2rem;}
