/* ============================================================================
   VeritaHire — shared app stylesheet · "Electric Editorial" design system.
   Warm paper/ink base, ONE acid-lime accent, Bricolage display + Inter + Plex Mono.
   Class names are PRESERVED from the legacy sheet so existing markup restyles in place.
   Single source of truth for the app views (jobs feed, job detail, profile, develop,
   manage*, saved, roadmap, forms). Matches the landing (index.php). Bump ?v= to bust cache.
   ============================================================================ */
@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;500;600;700&display=swap');

* { box-sizing: border-box; }
:root{
  /* VeritaHire design system — UNIFIED from the landing (index.php). Rob 2026-07-13: one stylesheet, no inline CSS.
     Old token NAMES kept as aliases so every legacy component rule + migrated page block recolors automatically. */
  --paper:#F5F7FB; --paper-2:#FFFFFF; --paper2:#FFFFFF;
  --ink:#0A1020; --ink-soft:#1c2438; --muted:#5A6478;
  --blue:#2E56FF; --blue-d:#1B3ED6; --live:#12B76A; --gold:#FFC24B; --band:#0B1020;
  --f-disp:"Bricolage Grotesque",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-body:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --ease:cubic-bezier(.22,.61,.36,1);
  --r:10px; --r-lg:14px; --r-sm:8px;
  --shadow:0 8px 20px -10px rgba(10,16,32,.22); --shadow-lg:0 16px 34px -20px rgba(10,16,32,.42);
  /* aliases (old names -> new palette): the accent moves from blue-grey "lime" to the electric blue family */
  --disp:var(--f-disp); --body:var(--f-body); --mono:var(--f-mono);
  --line:#E4E9F2; --hair:rgba(10,16,32,.12); --hair-2:rgba(10,16,32,.06);
  --lime:#DCE6FF; --lime-hi:#C7D6FF; --lime-deep:#1B3ED6;
  --accent:var(--blue); --ink2:var(--ink-soft); --dim:var(--muted); --bg:var(--paper);
  --maxw:1180px; --gut:clamp(1.1rem,4vw,3rem); --hairInv:rgba(255,255,255,.14);  /* landing wrap + dark-band hairline */
}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--f-body); font-size:16px; line-height:1.5;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
::selection{background:var(--lime);color:var(--ink)}
a{ color:inherit; text-decoration:none; }
h1,h2,h3,h4{font-family:var(--f-disp);letter-spacing:-.025em;line-height:1.02}
h1{margin:0 0 .2em;font-size:1.5rem;font-weight:800;} h2{margin:0 0 .5em;font-size:1.08rem;font-weight:800;}
h2 small,.sub small{font-weight:400;color:var(--muted);font-family:var(--f-body);}

/* editorial mono caption — reusable */
.cap{font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}

/* ===== sticky top bar ===== */
.bar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--hair);}
.bar-in{max-width:760px;margin:auto;display:flex;align-items:center;gap:12px;padding:11px 16px;flex-wrap:wrap;}
.logo{font-family:var(--f-disp);font-weight:800;letter-spacing:-.03em;color:var(--ink);font-size:1.25rem;}
.logo .hire,.logo b.hire,.vhnav__logo .hire,.vhfoot__logo .hire{color:var(--blue);background:none;padding:0;box-shadow:none}
.csel{font:inherit;font-family:var(--f-mono);font-size:.82rem;font-weight:500;border:1.5px solid var(--ink);border-radius:var(--r);padding:6px 9px;background:var(--paper-2);}
.counts{margin-left:auto;color:var(--muted);font-size:.84rem;font-family:var(--f-mono);}
.counts b{color:var(--ink);}
.barlink{color:var(--muted);font-family:var(--f-mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;border-bottom:2px solid transparent;}
.barlink:hover{color:var(--ink);border-color:var(--lime-deep);}

/* ===== controls / filter chips ===== */
.controls{max-width:760px;margin:16px auto 4px;padding:0 14px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center;}
.chips{display:flex;flex-wrap:wrap;gap:7px;}
.fchip{font:inherit;font-family:var(--f-mono);font-size:.74rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;border:1.5px solid var(--hair);background:var(--paper-2);color:var(--muted);padding:6px 12px;border-radius:var(--r);cursor:pointer;transition:border-color .15s var(--ease),background .15s var(--ease);}
.fchip:hover{border-color:var(--ink);color:var(--ink);}
.fchip.on{background:var(--lime);color:var(--ink);border-color:var(--ink);}
.ctl-right{display:flex;gap:10px;align-items:center;font-size:.82rem;color:var(--muted);font-family:var(--f-mono);}
.ctl-right select{font:inherit;border:1.5px solid var(--ink);border-radius:var(--r);padding:5px 7px;background:var(--paper-2);}
.ghost{font:inherit;font-family:var(--f-mono);font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;border:1.5px solid var(--hair);background:var(--paper-2);color:var(--muted);padding:6px 11px;border-radius:var(--r);cursor:pointer;}
.ghost.on,.ghost:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);}

/* ===== list + job cards ===== */
.list{max-width:760px;margin:0 auto;padding:8px 14px 48px;}
.card{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);margin:12px 0;overflow:hidden;transition:box-shadow .22s var(--ease),transform .22s var(--ease),border-color .22s var(--ease);}
.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px);border-color:var(--ink);}
.card.is-applied{opacity:.62;border-left:4px solid var(--lime-deep);}
.card-main{display:block;padding:15px 17px 9px;}
.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;}
.co{font-weight:600;color:var(--ink-soft);font-size:.82rem;font-family:var(--f-mono);letter-spacing:.02em;}
.title{font-family:var(--f-disp);font-size:1.16rem;font-weight:700;letter-spacing:-.02em;line-height:1.08;margin:5px 0 6px;}
.note-line{font-size:.86rem;color:var(--ink-soft);font-style:italic;margin:0 0 7px;}
.meta{display:flex;flex-wrap:wrap;gap:7px 12px;font-size:.78rem;color:var(--muted);align-items:center;font-family:var(--f-mono);}
.verified{color:var(--lime-deep);font-weight:600;}

/* fit-ceiling badges → the honesty signal (lime = strong, hollow = reach, faint = stretch) */
.ceilbadge{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:var(--r);white-space:nowrap;box-shadow:0 0 0 1px var(--ink) inset;}
.cb1{background:var(--lime);color:var(--ink);} .cb2{background:transparent;color:var(--ink);} .cb3{background:transparent;color:var(--muted);box-shadow:0 0 0 1px var(--hair) inset;}

/* tags — uniform editorial chips; pay + fit signals carry the lime */
.tag{background:var(--paper);color:var(--ink-soft);padding:2px 9px;border-radius:var(--r);font-family:var(--f-mono);font-size:.68rem;letter-spacing:.03em;box-shadow:0 0 0 1px var(--hair) inset;}
.tag.pay{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;font-weight:600;}
.tk-tech,.tk-design,.tk-sales,.tk-finance,.tk-marketing,.tk-client,.tk-ops{background:var(--paper);color:var(--ink-soft);box-shadow:0 0 0 1px var(--hair) inset;}
.tag.fresh{background:var(--ink);color:var(--paper);font-weight:600;box-shadow:none;}
.tag.dist{background:var(--paper);color:var(--ink-soft);box-shadow:0 0 0 1px var(--hair) inset;}
.tag.emp{background:var(--paper);color:var(--ink-soft);box-shadow:0 0 0 1px var(--hair) inset;}
.tag.posted{background:transparent;color:var(--muted);box-shadow:0 0 0 1px var(--hair-2) inset;}
.tag.fixable{background:transparent;color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;}

/* card actions */
.card-actions{display:flex;gap:8px;padding:9px 13px;border-top:1px solid var(--hair);background:color-mix(in srgb,var(--ink) 3%,transparent);}
.act{font:inherit;font-family:var(--f-mono);font-size:.74rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;border:1.5px solid var(--hair);background:var(--paper-2);color:var(--ink);padding:7px 13px;border-radius:var(--r);cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease);}
.act:hover{border-color:var(--ink);}
.act.apply{margin-right:auto;border-color:var(--ink);background:var(--lime);color:var(--ink);}
.act.apply:hover{background:var(--lime-hi);}
.is-applied .applied-btn{background:var(--lime-deep);color:var(--ink);border-color:var(--ink);}
.empty{color:var(--muted);text-align:center;padding:44px 20px;font-family:var(--f-mono);}
.foot{color:var(--muted);font-size:.72rem;text-align:center;padding:24px;max-width:760px;margin:auto;font-family:var(--f-mono);letter-spacing:.03em;}

/* ===== job detail page ===== */
.wrap{max-width:740px;margin:auto;padding:18px 14px 50px;}
.back{display:inline-block;margin-bottom:10px;color:var(--ink);font-family:var(--f-mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;border-bottom:2px solid var(--lime-deep);}
.job-head,.panel{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);}
.job-head{padding:18px 20px;}
.panel{padding:16px 18px;margin:12px auto;}
.panel.note{background:var(--paper);color:var(--ink-soft);border:1px dashed var(--ink);}
.apply-btn{display:inline-flex;align-items:center;gap:.6rem;margin-top:12px;background:var(--blue);color:#fff;border:1.5px solid var(--blue);padding:12px 22px;border-radius:var(--r);font-weight:700;box-shadow:0 8px 20px -8px rgba(46,86,255,.6);transition:transform .18s var(--ease),background .2s var(--ease);}
.apply-btn:hover{background:var(--blue-d);transform:translateY(-2px);}
.apply-btn.small{padding:9px 15px;font-size:.9rem;white-space:nowrap;}
.lbl{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:12px 0 5px;}
textarea{width:100%;border:1.5px solid var(--ink);border-radius:var(--r);padding:11px;font:14px/1.55 var(--f-body);resize:vertical;background:var(--paper-2);color:var(--ink);}
.copy{margin-top:8px;background:var(--ink);color:var(--paper);border:0;padding:9px 17px;border-radius:var(--r);font-family:var(--f-mono);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;}
.copy:hover{background:var(--ink-soft);}
.bar2{height:9px;background:var(--hair-2);border-radius:var(--r);overflow:hidden;margin:4px 0 6px;}
.bar2 span{display:block;height:100%;background:var(--lime-deep);}
.desc{font-size:.92rem;color:var(--ink-soft);line-height:1.6;}
.desc .jd-h{font-family:var(--f-disp);font-weight:700;color:var(--ink);margin:14px 0 4px;font-size:1rem}
.desc .jd-ul{margin:4px 0 10px;padding-left:20px} .desc .jd-ul li{margin:3px 0}
.desc p{margin:7px 0}
.chip{display:inline-block;padding:4px 10px;border-radius:var(--r);font-family:var(--f-mono);font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;font-weight:500;box-shadow:0 0 0 1px var(--ink) inset;}
.v-apply{background:var(--lime);color:var(--ink);} .v-stretch{background:transparent;color:var(--ink);} .v-skip{background:transparent;color:var(--muted);box-shadow:0 0 0 1px var(--hair) inset;}
.chip.gap{background:transparent;color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;}
.chip.ghost{background:var(--paper-2);box-shadow:0 0 0 1px var(--hair) inset;color:var(--ink);cursor:pointer;}
.chip.ghost:hover{background:var(--lime);box-shadow:0 0 0 1px var(--ink) inset;}
/* multi-select filter popovers on search.php (Rob 2026-07-21): native <details>, no JS framework */
.p-search .dd{position:relative;cursor:pointer;}
.p-search .dd>summary{list-style:none;outline:none;}
.p-search .dd>summary::-webkit-details-marker{display:none;}
.p-search .dd>summary::after{content:" \25BE";opacity:.55;}
.p-search .dd[open]>summary::after{content:" \25B4";}
.p-search .dd .ddmenu{position:absolute;z-index:40;top:calc(100% + 5px);left:0;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r);padding:6px;box-shadow:0 8px 26px rgba(10,16,32,.14);display:flex;flex-direction:column;gap:1px;min-width:210px;max-height:340px;overflow-y:auto;}
.p-search .dd .ddmenu.ddwide{min-width:236px;}
.p-search .dd .ddmenu label{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;white-space:nowrap;text-transform:none;letter-spacing:0;font-size:.82rem;font-family:var(--f-body);font-weight:500;color:var(--ink);cursor:pointer;}
.p-search .dd .ddmenu label:hover{background:var(--paper);}
.p-search .dd .ddmenu input{margin:0;flex:none;}
.career-box{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.career-box .big{font-family:var(--f-disp);font-size:1.1rem;font-weight:800;}
.rs{margin:.4em 0;padding-left:1.2em;} .rs li{margin:.4em 0;}
.tag.build.design,.tag.build.code{background:var(--paper);color:var(--ink-soft);box-shadow:0 0 0 1px var(--hair) inset;}

/* ===== landing / people picker (internal) ===== */
.landing{max-width:680px;margin:auto;padding:32px 18px 50px;}
.landing h1{font-family:var(--f-disp);font-size:2rem;font-weight:800;letter-spacing:-.03em;}
.landing .sub{color:var(--ink-soft);font-size:1.02rem;margin:.4em 0 1.6em;}
.people{display:grid;gap:12px;}
.person{display:block;background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:18px 20px;transition:box-shadow .22s var(--ease),transform .22s var(--ease),border-color .22s var(--ease);}
.person:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px);border-color:var(--ink);}
.pname{font-family:var(--f-disp);font-size:1.3rem;font-weight:800;letter-spacing:-.02em;}
.pgoal{color:var(--muted);font-size:.9rem;margin:.3em 0 .8em;font-family:var(--f-mono);}
.pfoot{display:flex;justify-content:space-between;align-items:center;gap:10px;}
.pcount{font-size:.9rem;color:var(--lime-deep);font-weight:600;} .pcount b{font-size:1.05rem;color:var(--ink);}
.pcount.pending{color:var(--muted);font-weight:500;font-style:italic;}
.pgo{color:var(--ink);font-weight:700;font-size:.82rem;font-family:var(--f-mono);letter-spacing:.06em;text-transform:uppercase;}
.note-foot{text-align:center;color:var(--muted);font-size:.85rem;margin-top:1.6em;font-family:var(--f-mono);}

@media(max-width:560px){
  .controls{flex-direction:column;align-items:stretch;}
  .ctl-right{justify-content:space-between;}
  .title{font-size:1.08rem;}
  .bar-in{flex-wrap:nowrap;gap:8px;padding:10px 12px;}
  .bar-in .counts,.bar-in .barlink{display:none;}
  .acct{margin-left:auto;}
  .acctmenu{min-width:200px;max-width:calc(100vw - 20px);right:0;}
  .logo{font-size:1.08rem;white-space:nowrap;}
}

/* ===== paths / expandable career pills ===== */
.paths{max-width:760px;margin:16px auto 0;padding:0 14px;}
.paths>summary{cursor:pointer;font-family:var(--f-mono);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;padding:10px 0;}
.psum{color:var(--ink-soft);font-size:.92rem;margin:.2em 0 .4em;}
.phint{color:var(--muted);font-size:.78rem;margin:0 0 .6em;}
.ppills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px;align-items:flex-start;}
.ppill{border:1.5px solid var(--hair);border-radius:var(--r);background:var(--paper-2);overflow:hidden;}
.ppill[open]{flex:1 1 100%;border-color:var(--ink);}
.ppill>summary{cursor:pointer;list-style:none;padding:7px 13px;font-family:var(--f-mono);font-size:.78rem;white-space:nowrap;display:flex;align-items:center;gap:7px;}
.ppill>summary::-webkit-details-marker{display:none;}
.ppill[open]>summary{white-space:normal;flex-wrap:wrap;border-bottom:1px solid var(--hair);background:var(--paper);}
.ppill>summary::before{content:"▸";color:var(--lime-deep);font-size:.7rem;}
.ppill[open]>summary::before{content:"▾";}
.pp-n{background:var(--ink);color:var(--paper);font-weight:700;font-size:.72rem;width:19px;height:19px;border-radius:var(--r);display:inline-flex;align-items:center;justify-content:center;flex:none;font-family:var(--f-mono);}
.pp-tgt{color:var(--ink);font-size:.82rem;font-weight:700;margin:0 0 .4em;font-family:var(--f-disp);}
.pp-body{padding:12px 14px;}
.pceil{background:var(--lime);color:var(--ink);font-weight:600;padding:2px 7px;border-radius:var(--r);font-family:var(--f-mono);font-size:.68rem;box-shadow:0 0 0 1px var(--ink) inset;}
.pwhy{font-size:.84rem;color:var(--muted);margin:.1em 0 .4em;}
.proles{font-size:.8rem;color:var(--ink-soft);margin:.15em 0;font-family:var(--f-mono);}

/* ===== forms ===== */
.pform{display:grid;gap:14px;background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:20px;}
.pform label{display:grid;gap:6px;font-weight:600;font-size:.82rem;font-family:var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);}
.pform label small{font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0;font-family:var(--f-body);}
.pform input,.pform textarea{font:inherit;font-family:var(--f-body);border:1.5px solid var(--ink);border-radius:var(--r);padding:11px;background:var(--paper-2);color:var(--ink);}
.pform input:focus-visible,.pform textarea:focus-visible,textarea:focus-visible{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,86,255,.18);}
.pform button{justify-self:start;background:var(--blue);color:#fff;border:1.5px solid var(--blue);padding:11px 24px;border-radius:var(--r);font-weight:700;cursor:pointer;box-shadow:0 8px 20px -8px rgba(46,86,255,.55);transition:transform .18s var(--ease),background .2s var(--ease);}
.pform button:hover{background:var(--blue-d);transform:translateY(-2px);}
.okmsg{background:var(--lime);color:var(--ink);padding:11px 15px;border-radius:var(--r);font-weight:600;box-shadow:0 0 0 1px var(--ink) inset;}
.errmsg{background:#fdecec;color:#9b1c1c;padding:11px 15px;border-radius:var(--r);font-weight:600;box-shadow:0 0 0 1px #e7a9a9 inset;}
.plink{color:var(--ink);font-weight:600;font-size:.85rem;border-bottom:2px solid var(--lime-deep);}

/* generic button (index component vocabulary — reusable on any page) */
.btn{font:inherit;font-weight:700;color:#fff;background:var(--blue);border:1.5px solid var(--blue);border-radius:var(--r);padding:11px 18px;cursor:pointer;display:inline-flex;align-items:center;gap:.6rem;box-shadow:0 8px 20px -8px rgba(46,86,255,.55);transition:transform .18s var(--ease),background .2s var(--ease);}
.btn:hover{background:var(--blue-d);transform:translateY(-2px);}
.btn--outline{background:var(--paper-2);color:var(--ink);border-color:var(--ink);box-shadow:none;} .btn--outline:hover{background:var(--ink);color:#fff;}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--line);box-shadow:none;} .btn--ghost:hover{border-color:var(--ink);background:transparent;color:var(--ink);}
.chip--strong{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;}
.chip--reach{background:transparent;color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;}

/* ===== dual-score read model (v5) ===== */
.scorewrap{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.sc{font-family:var(--f-mono);font-size:.68rem;color:var(--ink-soft);background:var(--paper);border-radius:var(--r);padding:3px 8px;white-space:nowrap;box-shadow:0 0 0 1px var(--hair) inset;}
.sc b{color:var(--ink);font-size:.78rem;}
.sc-q b{color:var(--lime-deep);} .sc-s b{color:var(--ink);}
.vbadge{font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:var(--r);box-shadow:0 0 0 1px var(--ink) inset;}
.vb-ready{background:var(--lime);color:var(--ink);} .vb-stretch{background:transparent;color:var(--ink);}

/* ===== roadmap / develop ===== */
.roadmap{max-width:1040px;margin:16px auto 0;padding:16px 18px;background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:var(--r);position:relative;overflow:hidden;}
.roadmap::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 92% 0%,color-mix(in srgb,var(--lime) 20%,transparent),transparent 60%);pointer-events:none;}
.roadmap>*{position:relative;z-index:1;}
.roadmap h2{margin:0 0 2px;font-size:1.1rem;color:var(--paper);font-family:var(--f-disp);}
.roadmap .sub{margin:.2em 0 .7em;font-size:.84rem;color:#C9CCBF;}
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:9px;}
.rcard{background:color-mix(in srgb,var(--paper) 8%,transparent);border:1px solid var(--hair-2);border-radius:var(--r);padding:10px 12px;}
.rskill{font-family:var(--f-disp);font-weight:700;color:var(--ink);font-size:.92rem;display:flex;justify-content:space-between;gap:6px;align-items:baseline;}
.runlock{font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink);background:var(--lime);border-radius:var(--r);padding:2px 8px;white-space:nowrap;}
.rfix{font-size:.78rem;color:#C9CCBF;margin-top:3px;}
.rfix i{color:var(--lime);font-style:normal;}
.rhave{margin-top:8px;}
.rhave button{font:inherit;font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);background:var(--lime);border:1.5px solid var(--lime);border-radius:var(--r);padding:6px 12px;cursor:pointer;width:100%;}
.rhave button:hover{background:var(--lime-hi);}
.rhave button:disabled{opacity:.55;cursor:default;}
.flash{max-width:1040px;margin:12px auto 0;padding:11px 16px;background:var(--blue);border:1.5px solid var(--blue);border-radius:var(--r);color:#fff;font-size:.9rem;font-weight:600;}

/* availability / disclose / profile bits */
.availset{border:1.5px solid var(--hair);border-radius:var(--r);padding:11px 14px;margin:0;}
.availset legend{font-weight:700;font-size:.8rem;padding:0 6px;font-family:var(--f-mono);letter-spacing:.06em;text-transform:uppercase;}
/* the explainer inside the legend reads as a sentence — normal case/body font, own line (the all-caps
   mono wrap made the whole fieldset look broken on phones, Rob 2026-07-23) */
.availset legend small{display:block;font-family:var(--f-body);font-weight:400;font-size:.86rem;letter-spacing:0;text-transform:none;color:var(--muted);margin-top:2px}
.availset .radio{display:flex;gap:10px;align-items:center;margin:8px 0;cursor:pointer;font-weight:400;text-transform:none;letter-spacing:0;font-family:var(--f-body);}
.availset .radio input{flex:none;width:18px;height:18px;margin:0;accent-color:var(--lime-deep);}
.availset .radio span{flex:1;text-align:left;font-size:.98rem}
.availset .radio small{color:var(--muted);display:block;}
.disclose{margin-top:14px;padding:13px 15px;background:var(--paper);border:1px dashed var(--ink);border-radius:var(--r);}
.discform{display:flex;gap:8px;align-items:flex-start;margin-top:6px;flex-wrap:wrap;}
.discform textarea{flex:1;min-width:260px;padding:9px 11px;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;background:var(--paper-2);}
ul.tips{margin:.3em 0 0;padding-left:1.1em;} ul.tips li{margin:.25em 0;color:var(--ink-soft);font-size:.92rem;}
.profilebar{max-width:1040px;margin:12px auto 0;display:flex;gap:16px;flex-wrap:wrap;font-family:var(--f-mono);font-size:.74rem;letter-spacing:.05em;text-transform:uppercase;}
.profilebar a{color:var(--ink);text-decoration:none;font-weight:600;border-bottom:2px solid transparent;}
.profilebar a:hover{border-color:var(--lime-deep);}
.pdel{margin-top:8px;} .pdel button{font:inherit;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;color:#9b1c1c;background:none;border:1.5px solid #e7a9a9;border-radius:var(--r);padding:4px 10px;cursor:pointer;}
.paddform{display:flex;gap:8px;margin:8px auto 0;max-width:1040px;padding:0 14px;}
.paddform input{flex:1;font:inherit;font-size:.85rem;border:1.5px solid var(--ink);border-radius:var(--r);padding:8px 11px;background:var(--paper-2);}
.paddform button{font:inherit;font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:var(--blue);border:1.5px solid var(--blue);border-radius:var(--r);padding:8px 14px;cursor:pointer;white-space:nowrap;}

/* ===== shared account avatar + dropdown (used by _acctbar.php) ===== */
.acct{position:relative;display:flex;align-items:center}
.avatar{width:38px;height:38px;border-radius:var(--r);border:1.5px solid var(--ink);cursor:pointer;font-family:var(--f-disp);font-weight:800;font-size:15px;color:var(--paper);background:var(--ink);display:flex;align-items:center;justify-content:center;line-height:1}
.avatar:hover{background:var(--ink-soft)}
.acctmenu{position:absolute;right:0;top:48px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);min-width:236px;padding:6px;z-index:60}
.acctmenu[hidden]{display:none}
.acctname{font-family:var(--f-disp);font-weight:800;font-size:14px;padding:9px 12px 6px;color:var(--ink)}
.acctmenu a{display:block;text-decoration:none;color:var(--ink-soft);font-size:14px;padding:9px 12px;border-radius:var(--r)}
.acctmenu a:hover{background:var(--paper)}
.acctmenu a.cur{color:var(--ink);font-weight:700}
.acctdiv{height:1px;background:var(--hair);margin:6px 4px}
.acctlabel{font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:6px 12px 2px}

/* ---- tab-based candidate feed (Rob 2026-07-07): New / Internships / Verified open ---- */
.feedtabs{display:flex;gap:6px;margin:4px 0 10px;border-bottom:1.5px solid var(--hair);flex-wrap:wrap}
.feedctl{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:2px 0 12px}
.feedctl .fc{display:flex;align-items:center;gap:6px;font-size:.68rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.feedctl .fc select{font-family:inherit;font-size:.85rem;font-weight:600;color:var(--ink);background:var(--paper);border:1.5px solid var(--hair);border-radius:var(--r);padding:5px 8px;text-transform:none;letter-spacing:0;cursor:pointer}
.feedctl .fc select:focus{outline:none;border-color:var(--blue)}
.feedtab{font:inherit;font-family:var(--f-mono);font-size:.8rem;font-weight:600;letter-spacing:.04em;
  padding:9px 13px;background:transparent;border:none;border-bottom:2.5px solid transparent;
  color:var(--muted);cursor:pointer;margin-bottom:-1.5px}
.feedtab:hover{color:var(--ink)}
.feedtab.on{color:var(--ink);border-bottom-color:var(--ink)}
.feedtab .tabn{display:inline-block;min-width:1.5em;text-align:center;font-size:.72rem;font-weight:700;
  background:var(--paper-2);border:1px solid var(--hair);border-radius:9px;padding:1px 6px;margin-left:5px;
  color:var(--muted)}
.feedtab.on .tabn{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* ---- mobile maximized (Rob 2026-07-07: early-career users live on phones) ---- */
/* tabs: ONE row always — horizontally swipeable, never wrapped (wrapping split the underline into two
   broken rows on a 390px screen) */
.feedtabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.feedtabs::-webkit-scrollbar{display:none}
.feedtab{white-space:nowrap;flex:0 0 auto;min-height:44px}
@media (max-width:520px){
  /* all three tabs VISIBLE side-by-side on a phone (Rob 7/7: they flowed off screen): emoji + the
     " open" tail hide, padding tightens, and each tab flexes to an equal share of the full width */
  .feedtab .tico,.feedtab .tlong{display:none}
  .feedtab{flex:1 1 0;padding:11px 4px;font-size:.74rem;text-align:center;display:flex;align-items:center;justify-content:center;gap:4px}
  .feedtab .tabn{font-size:.66rem;padding:1px 5px;margin-left:0}
  .card-main{padding:12px 13px 7px}
  .jf-title{font-size:1.02rem;line-height:1.25}
  .jf-facts,.jf-meta{font-size:.74rem}
  .haves .chip{padding:3px 7px;font-size:.68rem}
}

/* ---- job card v2 (Rob 2026-07-07: aesthetically better, mobile-first) --------------------------
   Soft-consumer geometry on the paper/ink brand: 12px radius, quiet hairline, pay-forward facts,
   ONE fit pill (replaces the You-qualify + fitbox chip soup), prose "You match:" line, footer with
   thumb-size actions + a pill Apply CTA. */
.card.jobcard{border-radius:12px;border:1px solid var(--hair-2);box-shadow:0 1px 4px rgba(14,16,11,.05)}
.card.jobcard:hover{box-shadow:0 3px 10px rgba(14,16,11,.09)}
.jobcard .card-main{padding:14px 16px 11px}
/* wrap-friendly: the chip group drops to its own line rather than squeezing the company name to "COUNTY O…" */
.jc-row1{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 10px;margin-bottom:3px}
.jc-co{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:12ch}
.jc-chips{display:flex;gap:6px;flex:none;margin-left:auto}
.jc-new{display:inline-block;font-size:.6rem;font-weight:700;letter-spacing:.1em;background:var(--lime,#d8e84c);color:var(--ink);border-radius:999px;padding:2px 7px;margin-left:6px;vertical-align:1px}
/* "for you" badges (2026-07-24): ONE accent pill max per card — solid blue = top quarter, quiet outline
   = above-median, no badge = baseline qualified match */
.jc-fit{font-family:var(--f-mono);font-size:.64rem;font-weight:700;letter-spacing:.07em;border-radius:999px;padding:3px 10px;white-space:nowrap;flex:none}
.jc-fit.top{background:var(--blue);color:#fff}
.jc-fit.strong{background:none;box-shadow:0 0 0 1.5px var(--line,#d8dce6) inset;color:var(--muted)}
.jc-chips{display:flex;gap:5px;align-items:center;flex:none}
.jc-lvl{font-family:var(--f-mono);font-size:.6rem;font-weight:700;letter-spacing:.04em;border-radius:999px;padding:3px 9px;white-space:nowrap;flex:none}
.jc-lvl.lvl-at{color:var(--lime-deep);background:rgba(60,140,60,.13)}
.jc-lvl.lvl-up{color:#8a5500;background:rgba(210,140,0,.15)}
.jc-lvl.lvl-dn{color:var(--muted);background:rgba(14,16,11,.06)}
.jc-ttl{font-size:1.1rem;font-weight:700;line-height:1.28;margin:0 0 3px}
.jc-pay{font-size:.95rem;font-weight:700;margin:0 0 7px}
.jc-pay small{font-family:var(--f-mono);font-weight:400;color:var(--muted);font-size:.72rem;margin-left:6px;letter-spacing:.01em}
.jc-pay small:only-child,.jc-pay small:first-child{margin-left:0}
.jc-match{color:var(--muted);font-size:.83rem;line-height:1.5;margin:0 0 2px}
.jc-match b{color:var(--ink);font-weight:600}
.jc-plus{color:var(--muted)}
.jc-note{color:var(--ink-soft);font-size:.82rem;line-height:1.45;margin:4px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.jc-morelocs{font-family:var(--f-mono);font-size:.7rem;color:var(--muted);margin-top:5px}
.jc-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;border-top:1px solid var(--hair-2);padding:8px 12px}
.jc-when{font-family:var(--f-mono);font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jc-acts{display:flex;gap:7px;align-items:center;flex:none}
.jc-acts .act{font:inherit;font-size:.95rem;background:var(--paper-2);border:1px solid var(--hair);border-radius:999px;min-width:42px;height:42px;padding:0 10px;cursor:pointer;transition:background .15s,border-color .15s}
.jc-acts .save-btn{font-family:var(--f-mono);font-size:.7rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
.jc-go{display:inline-flex;align-items:center;font-family:inherit;font-size:.84rem;font-weight:700;background:var(--ink);color:var(--paper);border-radius:999px;padding:0 17px;height:42px;text-decoration:none;white-space:nowrap}
.jc-go:hover{opacity:.88}
.jobcard.is-applied{opacity:.62}
@media (max-width:420px){
  /* the posted date is core to apply-early — NEVER hidden; it just gets compact and truncates first */
  .jc-when{font-size:.62rem;flex:0 1 auto}
  .jc-foot{padding:8px 10px}
  .jc-acts{gap:5px}
  .jc-acts .act{min-width:40px;height:40px}
  .jc-go{height:40px;padding:0 13px;font-size:.8rem}
}

/* ==================== SHARED CHROME — nav.php (.vhnav) + footer.php (.vhfoot). GLOBAL: included by ~24/22 pages ==================== */
.vhnav{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top,0px)}   /* safe-area: in the installed (standalone) PWA the sticky nav slid under the phone status bar — top of the nav/badge looked cut off (Rob 2026-07-23). 0 in normal browsers. */
.vhnav__in{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;gap:14px;height:60px;padding:0 clamp(1.1rem,4vw,3rem)}
.vhnav__logo{font-family:var(--f-disp);font-weight:800;letter-spacing:-.03em;font-size:1.28rem;line-height:1;color:var(--ink);display:inline-flex;align-items:baseline;text-decoration:none}
.vhnav__mid{color:var(--muted);font-family:var(--f-mono);font-size:.8rem;letter-spacing:.02em}
.vhnav__rt{margin-left:auto;display:flex;align-items:center;gap:1rem}
.vhnav__link{font-family:var(--f-mono);font-size:.74rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;padding:0 2px;min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}
.vhnav__link:hover{color:var(--ink);border-color:var(--blue)}
.vhnav__badge{display:inline-flex;align-items:center;gap:.5em;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-d);background:rgba(46,86,255,.09);padding:.4em .8em;border-radius:100px}
.vhnav__badge .dot{width:7px;height:7px;border-radius:50%;background:var(--live)}
@media(max-width:560px){.vhnav__mid{display:none}.vhnav__in{gap:10px;height:56px}.vhnav__logo{font-size:1.12rem}}
.vhfoot{border-top:1px solid var(--line);padding:2rem clamp(1.15rem,5vw,4rem);margin-top:2.5rem}
.vhfoot__in{max-width:var(--maxw);margin:0 auto;display:flex;flex-wrap:wrap;gap:12px 22px;justify-content:space-between;align-items:center}
.vhfoot__logo{font-family:var(--f-disp);font-weight:800;letter-spacing:-.03em;font-size:1.06rem;line-height:1;color:var(--ink);display:inline-flex;align-items:baseline;text-decoration:none}
.vhfoot__nav{display:flex;flex-wrap:wrap;gap:.4em 1.1em}
.vhfoot__nav a{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent}
.vhfoot__nav a:hover{color:var(--ink);border-color:var(--blue)}
.vhfoot__meta{width:100%;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.03em;color:var(--muted);display:flex;flex-wrap:wrap;gap:.35em 1.1em}

/* ==================== AUTO PAGE-SCOPED SECTIONS — migrated from inline <style> (migrate_css.py) ==================== */

/* ---- p-404  (404.php) ---- */
body.p-404 .err{max-width:640px;margin:0 auto;padding:clamp(3rem,10vw,6rem) clamp(1.15rem,5vw,2rem);text-align:center}
body.p-404 .err .code{font-family:var(--f-mono);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
body.p-404 .err h1{font-family:var(--f-disp);font-size:clamp(2rem,8vw,3.2rem);font-weight:800;letter-spacing:-.03em;margin:.4rem 0 .6rem;color:var(--ink)}
body.p-404 .err p{color:var(--ink-soft);line-height:1.6;margin:0 0 1.6rem}
body.p-404 .err a.btn{display:inline-block;background:var(--blue);color:#fff;text-decoration:none;padding:11px 24px;border:1.5px solid var(--blue);font-weight:600;font-family:var(--f-mono);font-size:.8rem;letter-spacing:.04em;text-transform:uppercase}
body.p-404 .err a.btn:hover{background:var(--blue-d)}


/* ---- p-500  (500.php) ---- */
body.p-500 :root{--paper:#ECEDE4;--ink:#0E100B;--muted:#565A4C;--accent:#9DB4C6}
body.p-500 *{box-sizing:border-box}
body.p-500{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
body.p-500 .wrap{max-width:640px;margin:0 auto;padding:clamp(3rem,10vw,6rem) 1.15rem;text-align:center}
body.p-500 .logo{font-weight:800;letter-spacing:-.03em;font-size:1.1rem;margin-bottom:2rem}
body.p-500 .logo .hire{color:var(--blue);background:none;padding:0;box-shadow:none}
body.p-500 .code{font-family:ui-monospace,"IBM Plex Mono",monospace;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
body.p-500 h1{font-size:clamp(2rem,8vw,3rem);font-weight:800;letter-spacing:-.03em;margin:.4rem 0 .6rem}
body.p-500 p{color:#3a3d33;line-height:1.6;margin:0 0 1.6rem}
body.p-500 a.btn{display:inline-block;background:var(--accent);color:var(--ink);text-decoration:none;padding:11px 24px;border:1.5px solid var(--ink);font-weight:600;font-family:ui-monospace,monospace;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase}


/* ---- p-slotsrendertest  (_slots_rendertest.php) ---- */
body.p-slotsrendertest .qpill{font-size:.78rem;font-weight:700;color:#fff;background:var(--blue);border:1.5px solid var(--blue);border-radius:var(--r);padding:3px 11px;white-space:nowrap}
body.p-slotsrendertest .desrow{display:flex;align-items:center;gap:7px;margin:7px 0 8px}
body.p-slotsrendertest .deslabel{font-size:.64rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:800}
body.p-slotsrendertest .pips{display:inline-flex;gap:3px}
body.p-slotsrendertest .pips i{width:8px;height:8px;border-radius:50%;background:var(--hair);display:inline-block}
body.p-slotsrendertest .pips i.on{background:var(--lime-deep)}
body.p-slotsrendertest .desword{font-size:.78rem;font-weight:700;color:var(--ink-soft);white-space:nowrap}
body.p-slotsrendertest .haves{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px}
body.p-slotsrendertest .haves-lbl{font-size:.82rem;color:var(--muted);font-weight:600}
body.p-slotsrendertest .chip.have{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
body.p-slotsrendertest .chip.more{background:var(--paper);color:var(--muted);font-weight:600}
body.p-slotsrendertest .tag.more-loc{background:var(--paper);color:var(--ink-soft);font-weight:600;cursor:help}
body.p-slotsrendertest .rail{background:var(--paper-2);border:1.5px solid var(--ink);border-radius:var(--r);padding:10px 10px 4px;margin:0 0 14px}
body.p-slotsrendertest .railhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:2px 4px 8px}
body.p-slotsrendertest .railtitle{font-weight:800;color:var(--ink);font-size:1.02rem}
body.p-slotsrendertest .railsub{font-size:.78rem;color:var(--muted)}
body.p-slotsrendertest .railcard{border-color:var(--ink)}
body.p-slotsrendertest .railbadge{display:inline-block;margin:4px 0 2px;font-size:.82rem;font-weight:700;color:var(--ink);background:var(--lime);border-radius:var(--r);padding:3px 9px}
body.p-slotsrendertest .mainhead{display:flex;align-items:baseline;gap:8px;margin:2px 2px 10px}
body.p-slotsrendertest .maintitle{font-weight:800;color:var(--ink);font-size:1rem}
body.p-slotsrendertest .mainsub{font-size:.78rem;color:var(--muted)}
body.p-slotsrendertest .railempty{color:var(--muted);font-size:.9rem;background:var(--paper);border:1px solid var(--hair);border-radius:var(--r);padding:10px 12px;margin:0 0 12px}
body.p-slotsrendertest .whatis{font-size:.83rem;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:5px 9px;margin:5px 0 2px;line-height:1.35}
body.p-slotsrendertest .firstrun{max-width:560px;margin:16px auto;background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:20px 22px}
body.p-slotsrendertest .fr-h{font-size:1.25rem;font-weight:800;margin:0 0 4px}
body.p-slotsrendertest .fr-sub{color:var(--muted);margin:0 0 14px;font-size:.95rem}
body.p-slotsrendertest .fr-steps{list-style:none;margin:0;padding:0}
body.p-slotsrendertest .fr-steps li{display:flex;align-items:center;gap:10px;padding:7px 0;color:var(--muted);font-size:.98rem}
body.p-slotsrendertest .fr-steps li.done{color:var(--lime-deep)}
body.p-slotsrendertest .fr-steps li.doing{color:var(--ink);font-weight:600}
body.p-slotsrendertest .fr-ic{display:inline-flex;width:22px;justify-content:center}
body.p-slotsrendertest .fr-foot{color:var(--muted);font-size:.85rem;margin:14px 0 0}
body.p-slotsrendertest .like-btn.on{background:var(--lime);border-color:var(--ink)}
body.p-slotsrendertest .dislike-btn.on{background:#fdecea;border-color:#b3261e}
body.p-slotsrendertest .save-btn.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
body.p-slotsrendertest .undo-strip{display:flex;align-items:center;gap:10px;padding:14px 16px;color:var(--muted);font-size:.92rem}
body.p-slotsrendertest .undo-strip .undo-btn{background:var(--ink);color:var(--paper);border:0;border-radius:var(--r);padding:6px 16px;font-weight:600;cursor:pointer}
body.p-slotsrendertest .card.jobcard{padding:0;overflow:hidden}
body.p-slotsrendertest .jobcard .jf-head{display:flex;align-items:flex-start;gap:10px;padding:13px 16px 4px}
body.p-slotsrendertest .jf-head-txt{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
body.p-slotsrendertest .jf-co{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.03em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.p-slotsrendertest .jf-title{font-family:var(--f-disp);font-size:1.08rem;font-weight:700;letter-spacing:-.02em;line-height:1.16;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
body.p-slotsrendertest .jf-pay{flex:0 1 auto;max-width:42%;font-family:var(--f-body);font-weight:700;font-size:.82rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}
body.p-slotsrendertest .jf-body{padding:6px 16px 13px}
body.p-slotsrendertest .jf-fit{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
body.p-slotsrendertest .fitbox{position:relative;display:inline-flex;align-items:center;height:22px;min-width:92px;padding:0 10px;background:var(--paper);box-shadow:0 0 0 1px var(--ink) inset;overflow:hidden}
body.p-slotsrendertest .fitfill{position:absolute;left:0;top:0;bottom:0;background:var(--lime)}
body.p-slotsrendertest .fitlbl{position:relative;z-index:1;font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink);white-space:nowrap}
body.p-slotsrendertest .jf-facts{display:flex;flex-wrap:wrap;gap:3px 14px;font-family:var(--f-mono);font-size:.8rem;color:var(--muted);margin-bottom:13px}
body.p-slotsrendertest .jf-facts b{color:var(--ink);font-family:var(--f-body);font-weight:700;font-size:.92rem}
body.p-slotsrendertest .jobcard .card-main{display:block;color:inherit;text-decoration:none}
body.p-slotsrendertest .jf-meta{display:flex;align-items:center;gap:10px;margin-top:9px}
body.p-slotsrendertest .jf-added{font-family:var(--f-mono);font-size:.72rem;color:var(--muted);letter-spacing:.02em;white-space:nowrap}
body.p-slotsrendertest .jf-go{margin-left:auto;flex:none;font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.03em;color:var(--lime-deep);border-bottom:1.5px solid transparent;white-space:nowrap}
body.p-slotsrendertest .jobcard .card-main:hover .jf-go{border-color:var(--lime-deep)}
body.p-slotsrendertest .jf-actions{display:flex;gap:8px;padding:9px 13px;border-top:1px solid var(--hair);background:color-mix(in srgb,var(--ink) 3%,transparent)}
body.p-slotsrendertest .jf-actions .act{flex:1;text-align:center}


/* ---- p-admin  (admin.php) ---- */
body.p-admin{padding:20px}
body.p-admin .wrap{max-width:960px;margin:0 auto}
body.p-admin h1{font-size:1.35rem;margin:26px 0 3px;font-family:var(--f-disp);font-weight:800;letter-spacing:-.02em}
body.p-admin h1:first-of-type{margin-top:8px}
body.p-admin .sub{color:var(--muted);font-size:.88rem;margin:0 0 14px}
body.p-admin .logout{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:2px solid transparent}
body.p-admin .logout:hover{color:var(--ink);border-color:var(--lime-deep)}
body.p-admin .flash{background:var(--lime);color:var(--ink);padding:11px 14px;box-shadow:0 0 0 1px var(--ink) inset;margin:0 0 18px;font-size:.92rem}
body.p-admin .tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:6px 0 8px}
body.p-admin .tile{background:var(--paper-2);border:1.5px solid var(--ink);padding:13px 15px;box-shadow:var(--shadow-lg)}
body.p-admin .tile .n{font-family:var(--f-disp);font-weight:800;font-size:1.7rem;line-height:1;letter-spacing:-.02em}
body.p-admin .tile .l{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:5px}
body.p-admin .tile.warn{box-shadow:var(--shadow-lg)}
body.p-admin .tile.warn .n{color:#9b1c1c}
body.p-admin .row{background:var(--paper-2);border:1px solid var(--hair);padding:12px 15px;margin:0 0 8px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
body.p-admin .row:hover{border-color:var(--ink)}
body.p-admin .row > div:first-child{flex:1 1 220px;min-width:0}
body.p-admin .row .acts{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap}
body.p-admin .who{font-family:var(--f-disp);font-weight:800;letter-spacing:-.01em;overflow-wrap:anywhere}
body.p-admin .meta{color:var(--muted);font-size:.82rem;font-family:var(--f-mono);margin-top:2px;overflow-wrap:anywhere}
@media(max-width:560px){.row .acts{width:100%}.row .acts form{flex:1}.row .acts button,.row .view{width:100%;text-align:center}}
body.p-admin .pill{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;padding:2px 9px;font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
body.p-admin .pill.mut{background:transparent;color:var(--muted);box-shadow:0 0 0 1px var(--hair) inset}
body.p-admin .pill.bad{background:#fde8e8;color:#9b1c1c;box-shadow:0 0 0 1px #e7a9a9 inset}
body.p-admin .view{white-space:nowrap;font-weight:600;color:#fff;background:var(--blue);border:1.5px solid var(--blue);padding:8px 15px;text-decoration:none;font-size:.88rem}
body.p-admin .view:hover{background:var(--blue-d)}
body.p-admin .btn-appr{cursor:pointer;font:inherit;font-weight:600;color:#fff;background:var(--blue);border:1.5px solid var(--blue);padding:8px 14px}
body.p-admin .btn-dec{cursor:pointer;font:inherit;background:transparent;border:1.5px solid var(--hair);color:var(--muted);padding:8px 12px}
body.p-admin table.grid{width:100%;border-collapse:collapse;font-size:.86rem;background:var(--paper-2);border:1px solid var(--hair)}
body.p-admin table.grid th{font-family:var(--f-mono);font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:left;padding:8px 12px;border-bottom:1.5px solid var(--ink)}
body.p-admin table.grid td{padding:8px 12px;border-bottom:1px dashed var(--hair)}
body.p-admin table.grid tr:last-child td{border-bottom:0}
body.p-admin .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
body.p-admin .dot.ok{background:#3f9142}
body.p-admin .dot.stale{background:#c98a1a}
body.p-admin .dot.bad{background:#c0392b}
body.p-admin .funnel{font-family:var(--f-mono);font-size:.78rem;color:var(--muted)}
body.p-admin .foot-note{color:var(--muted);font-size:.78rem;margin:6px 0 30px}


/* ---- p-apply  (apply.php) ---- */
body.p-apply html, body.p-apply{margin:0}
body.p-apply{font-family:var(--f-body);font-size:16px;line-height:1.55;color:var(--ink);background:var(--paper)}
body.p-apply .wrap{max-width:620px;margin:0 auto;padding:24px 18px 56px}
body.p-apply .card{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:26px;margin:0}
body.p-apply h1{font-family:var(--f-disp);font-weight:800;letter-spacing:-.025em;font-size:1.5rem;margin:0 0 4px}
body.p-apply .org{color:var(--muted);margin:0 0 16px;font-family:var(--f-mono);font-size:.86rem}
body.p-apply .chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}
body.p-apply .chip{display:inline-block;background:var(--paper);color:var(--ink-soft);border-radius:var(--r);padding:4px 10px;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;font-weight:500;box-shadow:0 0 0 1px var(--hair) inset}
body.p-apply label.fld{display:block;margin:0 0 16px}
body.p-apply .fld .lab{display:block;font-family:var(--f-mono);font-weight:600;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
body.p-apply .fld .req{color:var(--lime-deep)}
body.p-apply input[type=text], body.p-apply input[type=email], body.p-apply input[type=tel], body.p-apply input[type=file]{width:100%;padding:11px 12px;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;font-family:var(--f-body);background:var(--paper-2);color:var(--ink)}
body.p-apply input[type=number]{border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;font-family:var(--f-body);background:var(--paper-2);color:var(--ink);padding:11px 12px}
body.p-apply input[type=file]{padding:9px 12px}
body.p-apply input:focus-visible{outline:none;box-shadow:var(--shadow-lg)}
body.p-apply .gate{border:1px solid var(--hair);border-radius:var(--r);padding:14px 16px;margin:0 0 14px;background:var(--paper)}
body.p-apply .gate .q{font-weight:600;margin:0 0 8px}
/* Screening Yes/No as >=44px tappable pills (WCAG 2.5.5 touch target) with a clear selected state. */
body.p-apply .yn{display:flex;gap:12px}
body.p-apply .yn label{display:flex;align-items:center;justify-content:center;gap:8px;font-weight:500;cursor:pointer;min-height:44px;padding:8px 18px;border:1px solid var(--line);border-radius:var(--r);flex:1}
body.p-apply .yn label:has(input:checked){border-color:var(--lime-deep);box-shadow:inset 0 0 0 1px var(--lime-deep)}
body.p-apply .yn input{accent-color:var(--lime-deep);width:18px;height:18px}
body.p-apply #bg-years{min-height:44px;padding:8px 10px;box-sizing:border-box}  /* WCAG 2.5.5 touch target */
body.p-apply .section{margin:24px 0 8px;font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
body.p-apply .notice{background:var(--paper);border:1px dashed var(--ink);border-radius:var(--r);padding:14px 16px;font-size:.88rem;color:var(--ink-soft);line-height:1.5}
body.p-apply .notice strong{color:var(--ink)}
body.p-apply .optin{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--hair);border-radius:var(--r);padding:14px 16px;margin:12px 0 4px}
body.p-apply .optin input{margin-top:3px;width:18px;height:18px;flex:0 0 auto;accent-color:var(--lime-deep)}
/* The opt-in text wrapper reuses class="copy" which also styles the "Copy link" button (dark navy/mono/uppercase).
   Reset it here so the consent text is normal readable dark-on-light on the apply form (fixes the WCAG contrast +
   the out-of-place dark box on the conversion page). */
body.p-apply .optin .copy{background:none;color:var(--ink);border:0;border-radius:0;padding:0;margin:0;font-family:inherit;font-size:.9rem;letter-spacing:normal;text-transform:none;cursor:default;line-height:1.5}
body.p-apply .optin .copy .o-lead{font-weight:600;display:block}
body.p-apply .optin .copy .o-sub{color:var(--muted);font-size:.84rem;margin-top:3px;display:block}
body.p-apply .btn{display:block;width:100%;margin-top:22px;padding:14px;background:var(--blue);color:#fff;border:1.5px solid var(--blue);
   border-radius:var(--r);font:inherit;font-weight:700;font-size:1.02rem;cursor:pointer;transition:background .2s var(--ease)}
body.p-apply .btn:hover{background:var(--blue-d)}
body.p-apply .btn:disabled{opacity:.55;cursor:default}
body.p-apply .foot{color:var(--muted);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.03em;margin-top:20px;text-align:center}
body.p-apply .err{display:none;background:#fdecec;border:1px solid #e7a9a9;color:#9b1c1c;border-radius:var(--r);padding:10px 12px;margin:0 0 14px;font-size:.9rem;font-weight:600}
body.p-apply .bg-hint{color:var(--muted);font-size:.85rem;line-height:1.45;margin:0 0 14px}
body.p-apply .bg-row{display:flex;align-items:center;gap:9px;margin:0 0 14px;font-weight:500;cursor:pointer}
body.p-apply .bg-row input{width:19px;height:19px;flex:0 0 auto;accent-color:var(--lime-deep)}
body.p-apply .bg-sub{font-family:var(--f-mono);font-size:.72rem;font-weight:600;color:var(--muted);margin:14px 0 8px;text-transform:uppercase;letter-spacing:.06em}
body.p-apply .hint2{font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted)}
body.p-apply .chipedit{display:flex;flex-wrap:wrap;gap:8px}
body.p-apply .chipedit .c{display:inline-flex;align-items:center;gap:7px;background:var(--paper);color:var(--ink-soft);border-radius:var(--r);padding:5px 8px 5px 12px;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.03em;text-transform:uppercase;font-weight:500;box-shadow:0 0 0 1px var(--hair) inset}
body.p-apply .chipedit .c b{cursor:pointer;font-weight:700;opacity:.6;font-size:1rem;line-height:1}
body.p-apply .chipadd{display:flex;gap:8px;margin-top:10px}
body.p-apply .chipadd input{flex:1}
body.p-apply .chipadd button{border:1.5px solid var(--hair);background:var(--paper-2);color:var(--ink);border-radius:var(--r);padding:0 16px;font:inherit;font-family:var(--f-mono);font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;font-weight:500;cursor:pointer}
body.p-apply .chipadd button:hover{border-color:var(--ink)}


/* ---- p-develop  (develop.php) ---- */
body.p-develop .floatbar{position:sticky;top:52px;z-index:15;display:flex;align-items:center;justify-content:space-between;
  background:var(--paper);padding:9px 4px;margin:0 0 12px;border-bottom:1px solid var(--hair)}
body.p-develop .floatbar .back{font-weight:600;text-decoration:none}
body.p-develop .dev-wrap{max-width:760px;margin:0 auto;padding:0 16px}
body.p-develop .dev-card{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:18px 18px;margin:0 0 14px}
body.p-develop .dev-unfix{color:var(--muted);font-size:.95rem;line-height:1.55}
body.p-develop .empty{color:var(--muted);text-align:center;padding:40px 0}
body.p-develop .rcourses{margin-top:8px;font-size:.85rem}
body.p-develop .rcourses summary{cursor:pointer;color:var(--ink);font-weight:600;list-style:none}
body.p-develop .rcourses summary::-webkit-details-marker{display:none}
body.p-develop .rcourses ul{margin:8px 0 0;padding-left:18px}
body.p-develop .rcourses li{margin:4px 0}
body.p-develop .rcourses a{color:var(--ink)}
body.p-develop .rcourses .cprov{color:var(--muted);font-size:.8rem;margin-left:4px}


/* ---- p-faq  (faq.php) ---- */
body.p-faq .wrap{max-width:680px;margin:0 auto;padding:26px 18px 60px}
body.p-faq h1{font-family:var(--f-disp);font-weight:800;letter-spacing:-.02em;font-size:1.7rem;margin:.3rem 0 .2rem}
body.p-faq h2{font-family:var(--f-disp);font-weight:700;letter-spacing:-.02em;font-size:1.12rem;margin:1.9rem 0 .4rem;padding-top:.9rem;border-top:1.5px solid var(--ink)}
body.p-faq h3{font-size:.98rem;font-weight:650;margin:1.1rem 0 .25rem}
body.p-faq p, body.p-faq li{line-height:1.6}
body.p-faq .mut{color:var(--muted)}
body.p-faq .card{background:var(--paper-2);border:1.5px solid var(--ink);padding:15px 17px;margin:.9rem 0;box-shadow:var(--shadow-lg)}
body.p-faq .mono{font-family:var(--f-mono);font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
body.p-faq ul{padding-left:1.2rem}


/* ---- p-footer  (footer.php) ---- */
body.p-footer .vhfoot{border-top:1px solid var(--ink,#0E100B);padding:2rem clamp(1.15rem,5vw,4rem);margin-top:2.5rem}
body.p-footer .vhfoot__in{max-width:1240px;margin:0 auto;display:flex;flex-wrap:wrap;gap:12px 22px;justify-content:space-between;align-items:center}
body.p-footer .vhfoot__logo{font-family:var(--f-disp,"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif);font-weight:800;letter-spacing:-.03em;font-size:1.06rem;line-height:1;color:var(--ink,#0E100B);display:inline-flex;align-items:baseline;text-decoration:none}
body.p-footer .vhfoot__logo .hire{color:var(--blue);background:none;padding:0;box-shadow:none}
body.p-footer .vhfoot__nav{display:flex;flex-wrap:wrap;gap:.4em 1.1em}
body.p-footer .vhfoot__nav a{font-family:var(--f-mono,ui-monospace,monospace);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#565A4C);text-decoration:none;border-bottom:2px solid transparent}
body.p-footer .vhfoot__nav a:hover{color:var(--ink,#0E100B);border-color:var(--lime-deep,#3E5A6E)}
body.p-footer .vhfoot__meta{width:100%;font-family:var(--f-mono,ui-monospace,monospace);font-size:.72rem;letter-spacing:.03em;color:var(--muted,#565A4C);display:flex;flex-wrap:wrap;gap:.35em 1.1em}


/* ---- p-index  (index.php) ---- */
body.p-index :root{--paper:#F5F7FB; --paper2:#FFFFFF; --ink:#0A1020; --ink2:#1c2438; --dim:#5A6478;
    --blue:#2E56FF; --blue-d:#1B3ED6; --live:#12B76A; --line:#E4E9F2; --hairInv:rgba(255,255,255,.14);
    --band:#0B1020; --gold:#FFC24B;
    --disp:"Bricolage Grotesque",system-ui,sans-serif; --body:"Inter",system-ui,sans-serif; --mono:"IBM Plex Mono",ui-monospace,monospace;
    --maxw:1180px; --gut:clamp(1.1rem,4vw,3rem);}
body.p-index *{box-sizing:border-box}
body.p-index html{-webkit-text-size-adjust:100%}
body.p-index{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);line-height:1.55;-webkit-font-smoothing:antialiased}
body.p-index a{color:inherit;text-decoration:none}
body.p-index img, body.p-index svg{display:block;max-width:100%}
body.p-index h1, body.p-index h2, body.p-index h3, body.p-index p{margin:0}
body.p-index button{font:inherit}
body.p-index .wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gut)}
body.p-index .mono{font-family:var(--mono);letter-spacing:.02em}
body.p-index .tnum{font-variant-numeric:tabular-nums}
body.p-index .btn{display:inline-flex;align-items:center;gap:.55rem;font-weight:700;font-size:1rem;padding:.9rem 1.4rem;border-radius:10px;border:1.5px solid var(--ink);cursor:pointer;transition:transform .15s,box-shadow .15s,background .15s}
body.p-index .btn:hover{transform:translateY(-2px)}
body.p-index .btn:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
body.p-index .btn-blue{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 8px 20px -8px rgba(46,86,255,.6)}
body.p-index .btn-ink{background:var(--ink);border-color:var(--ink);color:#fff}
body.p-index nav{position:sticky;top:0;z-index:20;background:rgba(245,247,251,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
body.p-index nav .in{display:flex;align-items:center;justify-content:space-between;height:62px}
body.p-index .logo{font-family:var(--disp);font-weight:800;font-size:1.35rem;letter-spacing:-.03em}
body.p-index .logo span{color:var(--blue)}
body.p-index .navr{display:flex;align-items:center;gap:1.1rem}
body.p-index .navr a.txt{font-weight:600;font-size:.95rem;color:var(--ink2);min-height:44px;display:inline-flex;align-items:center;padding:0 6px}
body.p-index .navr .login{font-weight:600;font-size:.92rem;color:var(--ink2);min-height:44px;display:inline-flex;align-items:center;padding:0 6px}
body.p-index .navr .login:hover{color:var(--blue)}
body.p-index .navr .btn{padding:.55rem .95rem;font-size:.9rem}
body.p-index .navr a, body.p-index .logo{white-space:nowrap}
/* MOBILE nav (Rob 2026-07-19: the bar clipped + every item wrapped on phones). NOTE: these MUST be scoped to
   body.p-index — a bare `.navr a.txt` loses on specificity to the base `body.p-index .navr a.txt`, so the old
   rule never hid anything. */
@media(max-width:600px){
  body.p-index .navr a.txt{display:none}                 /* "Find a job" — redundant with Log in on a phone */
  body.p-index nav .in{height:56px}
  body.p-index .logo{font-size:1.15rem}
  body.p-index .navr{gap:.55rem}
  body.p-index .navr .login{font-size:.88rem;padding:0 4px}
  body.p-index .navr .btn{padding:.5rem .8rem;font-size:.85rem}
}
@media(max-width:400px){
  body.p-index .navr .nf{display:none}                   /* "Post a job — free" -> "Post a job" */
  body.p-index .navr .btn{padding:.48rem .7rem;font-size:.82rem}
}
body.p-index .banner{padding:clamp(2.4rem,6vw,4.5rem) 0 clamp(2rem,5vw,3.4rem);text-align:center;position:relative;overflow:hidden}
body.p-index .banner::before{content:"";position:absolute;inset:0;background:radial-gradient(70% 55% at 50% -10%,rgba(46,86,255,.10),transparent 70%);pointer-events:none}
body.p-index .eyb{display:inline-flex;align-items:center;gap:.5em;font-family:var(--mono);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-d);background:rgba(46,86,255,.09);padding:.45em .9em;border-radius:100px}
body.p-index .eyb .d{width:7px;height:7px;border-radius:50%;background:var(--live)}
/* SEARCH-FIRST hero (Rob 2026-07-23): the headline was eating the whole viewport before the search
   appeared. Headline compact, the search is the hero; stats shrink to a supporting strip. */
body.p-index .banner h1{font-family:var(--disp);font-weight:800;font-size:clamp(1.75rem,4.2vw,2.9rem);line-height:1.04;letter-spacing:-.03em;margin:.8rem auto 0;max-width:24ch;text-wrap:balance}
body.p-index .banner h1 .n{color:var(--blue)}
body.p-index .banner .lead{color:var(--dim);font-size:clamp(.95rem,1.6vw,1.08rem);max-width:56ch;margin:.9rem auto 0;line-height:1.5}
body.p-index .banner .lead b{color:var(--ink)}
/* MOTTO-20260729 (Rob: "make it more prominent") — the brand line, promoted from the footer to the
   fork, where the page splits into its two audiences. Display face, sized between the lead and the h1. */
body.p-index .banner .motto{font-family:var(--f-disp);font-weight:800;letter-spacing:-.02em;
  font-size:clamp(1.15rem,2.6vw,1.5rem);color:var(--ink);margin:1.8rem auto .2rem;text-wrap:balance}
body.p-index .banner .motto .n{color:var(--blue,#2447f0)}
body.p-index .statrow{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 1.6rem;margin:1.1rem auto 0;font-family:var(--mono)}
body.p-index .statrow .s{display:flex;flex-direction:row;align-items:baseline;gap:.45em}
body.p-index .statrow .s b{font-family:var(--disp);font-weight:800;font-size:clamp(1.05rem,2vw,1.35rem);line-height:1;letter-spacing:-.02em}
body.p-index .statrow .s span{font-size:.72rem;color:var(--dim);letter-spacing:.04em}
/* homepage search — the SAME .sfield component search.php uses (one look, no cheap flat box) */
body.p-index .hsearch{max-width:600px;margin:1.3rem auto 0;text-align:left}
body.p-index .sfield{display:flex;align-items:center;gap:10px;background:#fff;border:1.5px solid var(--line,#d8dce6);border-radius:var(--r,10px);padding:.78rem .9rem;margin-bottom:9px;transition:border-color .15s,box-shadow .15s}
body.p-index .sfield:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,86,255,.15)}
body.p-index .sfield .ic{flex:none;color:var(--dim)}
body.p-index .sfield input{flex:1;min-width:0;border:0;outline:0;background:none;font:inherit;font-size:1rem;color:var(--ink)}
body.p-index .sfield input::placeholder{color:var(--dim)}
body.p-index .hsearch .hgo{width:100%;border:0;background:var(--blue);color:#fff;font:inherit;font-weight:700;font-size:1.02rem;padding:.85rem;border-radius:var(--r,10px);cursor:pointer;white-space:nowrap}
body.p-index .hsearch .hgo:hover{background:var(--blue-d)}
@media(min-width:640px){
  body.p-index .hsearch{display:grid;grid-template-columns:1.3fr 1fr auto;gap:9px;align-items:stretch}
  body.p-index .hsearch .sfield{margin-bottom:0}
  body.p-index .hsearch .hgo{width:auto;padding:.85rem 1.5rem}
}
body.p-index .statrow .s.live b{color:var(--live)}
body.p-index .fork{display:grid;grid-template-columns:1fr;gap:.9rem;max-width:640px;margin:2.2rem auto 0}
@media(min-width:560px){.fork{grid-template-columns:1fr 1fr}}
body.p-index .fcard{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:.5rem;background:var(--paper2);border:1.5px solid var(--line);border-radius:16px;padding:1.3rem 1.35rem;transition:transform .18s,box-shadow .18s,border-color .18s}
body.p-index .fcard:hover{transform:translateY(-3px);box-shadow:0 16px 34px -20px rgba(10,16,32,.45);border-color:var(--ink)}
body.p-index .fcard .ic{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;color:#fff}
body.p-index .fcard.seek .ic{background:var(--blue)}
body.p-index .fcard.hire .ic{color:var(--blue);background:none;padding:0;box-shadow:none}
body.p-index .fcard b{font-family:var(--disp);font-weight:800;font-size:1.22rem;letter-spacing:-.02em}
body.p-index .fcard span{color:var(--dim);font-size:.92rem}
body.p-index .fcard .go{margin-top:.3rem;font-weight:700;color:var(--blue-d);font-size:.95rem}
body.p-index .fcard.hire .go{color:var(--blue);background:none;padding:0;box-shadow:none}
body.p-index .sec{padding:clamp(2.8rem,7vw,5rem) 0}
body.p-index .sec-h{font-family:var(--disp);font-weight:800;font-size:clamp(1.9rem,4.6vw,3rem);letter-spacing:-.03em;line-height:1;text-wrap:balance}
body.p-index .sec-sub{color:var(--dim);font-size:1.1rem;margin-top:.7rem;max-width:52ch}
body.p-index .klabel{font-family:var(--mono);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--blue-d)}
body.p-index .seek-sec{background:var(--paper2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
body.p-index .sbar{display:flex;gap:0;margin-top:1.5rem;max-width:600px;border:1.6px solid var(--ink);border-radius:12px;overflow:hidden;background:#fff}
body.p-index .sbar input{flex:1;border:0;padding:1rem 1.1rem;font:inherit;font-size:1.05rem;outline:none;background:#fff;color:var(--ink)}
body.p-index .sbar button{border:0;background:var(--blue);color:#fff;font-weight:700;padding:0 1.5rem;cursor:pointer}
body.p-index .roles{display:grid;grid-template-columns:1fr;gap:.7rem;margin-top:2rem}
@media(min-width:720px){.roles{grid-template-columns:1fr 1fr}}
body.p-index .role{display:flex;justify-content:space-between;gap:1rem;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:.9rem 1.1rem}
body.p-index .role .t{font-weight:700;letter-spacing:-.01em;line-height:1.15}
body.p-index .role .c{font-family:var(--mono);font-size:.78rem;color:var(--dim);margin-top:2px}
body.p-index .role .p{font-family:var(--mono);font-weight:600;font-size:.85rem;color:var(--blue-d);white-space:nowrap;text-align:right}
body.p-index .role .fr{font-family:var(--mono);font-size:.68rem;color:var(--live);text-align:right;margin-top:2px}
body.p-index .brands{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}
body.p-index .brand{font-family:var(--disp);font-weight:700;font-size:1rem;letter-spacing:-.01em;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:.32em .7em}
body.p-index .brand.more{background:var(--blue);color:#fff;border-color:var(--blue);font-family:var(--mono);font-weight:600;font-size:.8rem}
body.p-index .emp{background:var(--band);color:#EAF0FB;position:relative;overflow:hidden}
body.p-index .emp::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 60% at 88% -5%,rgba(46,86,255,.20),transparent 60%);pointer-events:none}
body.p-index .emp .wrap{position:relative}
body.p-index .emp .klabel{color:#7FA0FF}
body.p-index .emp .sec-h{color:#fff}
body.p-index .emp .sec-h em{font-style:normal;color:var(--gold)}
body.p-index .emp .sec-sub{color:#9FAAC2}
body.p-index .egrid{display:grid;grid-template-columns:1fr;gap:2rem;margin-top:2rem;align-items:start}
@media(min-width:840px){.egrid{grid-template-columns:1.05fr .95fr;gap:3rem}}
body.p-index .evals{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.8rem}
body.p-index .evals li{background:rgba(255,255,255,.04);border:1px solid var(--hairInv);border-left:3px solid var(--blue);border-radius:10px;padding:.9rem 1.05rem;color:#9FAAC2;font-size:.98rem;line-height:1.4}
body.p-index .evals li b{color:#fff}
body.p-index .cmp{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
body.p-index .cmp .col{border:1px solid var(--hairInv);border-radius:12px;padding:1rem 1.05rem;display:flex;flex-direction:column;gap:.5rem;font-size:.9rem}
body.p-index .cmp .col .h{font-family:var(--mono);font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;padding-bottom:.5rem;border-bottom:1px solid var(--hairInv);color:#8A94AC}
body.p-index .cmp .col span{color:#8A94AC}
body.p-index .cmp .new{border-color:var(--blue);background:rgba(46,86,255,.08)}
body.p-index .cmp .new .h{color:#9FB6FF}
body.p-index .cmp .new span{color:#EAF0FB}
body.p-index .emp .cta{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-top:1.8rem}
body.p-index .emp .cta .note{color:#9FAAC2;font-family:var(--mono);font-size:.8rem}
body.p-index footer{padding:2.4rem 0;border-top:1px solid var(--line);color:var(--dim);font-family:var(--mono);font-size:.78rem}
body.p-index footer .in{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;justify-content:space-between;align-items:center}
@media (prefers-reduced-motion:reduce){
body.p-index *{transition:none!important}}


/* ---- p-j  (j.php) ---- */
.pj{max-width:720px;margin:0 auto;padding:0 14px 40px}
.pjtop{max-width:720px;margin:0 auto;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.pjtop .pjlogo{font-weight:800;font-size:1.05rem;color:var(--ink);text-decoration:none;letter-spacing:-.01em}
.pjtop .pjlogo span{color:var(--blue)}
.pjtop .pjnav{display:flex;align-items:center;gap:14px}
.pjtop .pjback{font-family:var(--f-mono);font-size:.74rem;color:var(--muted);text-decoration:none}
.pjtop .pjback:hover{color:var(--blue)}
.pjtop .pjlogin{font-family:var(--f-mono);font-size:.74rem;font-weight:700;color:#fff;background:var(--blue);padding:6px 13px;border-radius:6px;text-decoration:none;white-space:nowrap}
.pjtop .pjlogin:hover{opacity:.9}
.pj h1{font-size:1.35rem;line-height:1.3;margin:18px 0 4px}
.pj .co{font-family:var(--f-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.pj .facts{font-size:.95rem;font-weight:700;margin:8px 0 2px}
.pj .facts small{font-family:var(--f-mono);font-weight:400;color:var(--muted);margin-left:8px}
.pj .verified{font-family:var(--f-mono);font-size:.7rem;color:var(--muted);margin:2px 0 14px}
.pj .cta{display:inline-flex;align-items:center;font-weight:700;background:var(--ink);color:var(--paper);border-radius:999px;padding:0 18px;height:44px;text-decoration:none;margin:20px 8px 18px 0}
.pj .cta2{display:inline-flex;align-items:center;font-weight:700;background:var(--lime);color:var(--ink);border-radius:999px;padding:0 18px;height:44px;text-decoration:none;margin:0 0 18px}
.pj .desc{font-size:.92rem;line-height:1.65}
.pj .desc p{margin:0 0 .7em}
.pj .desc ul{margin:.2em 0 .9em;padding-left:1.2em}
.pj .desc li{margin:.15em 0;line-height:1.55}
.pj .jsec{border-top:1px solid var(--hair);margin-top:16px;padding-top:12px}
.pj .jsec h3{font-family:var(--f-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-weight:600}
.pj .jsec h3 small{text-transform:none;letter-spacing:0}
.pj .jsec .req{font-size:.92rem;line-height:1.6;margin:3px 0}
.pj .lvlbadge{display:table;font-family:var(--f-mono);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:5px 13px;margin:0 0 14px}
.pj .lvlbadge.lvl-entry{background:var(--lime);color:var(--ink)}
.pj .lvlbadge.lvl-jr{background:var(--paper-2);color:var(--blue);box-shadow:0 0 0 1px var(--blue) inset}
.pj .lvlbadge.lvl-mid{background:var(--paper-2);color:var(--ink);box-shadow:0 0 0 1px var(--hair) inset}
.pj .lvlbadge.lvl-sr{background:var(--paper-2);color:var(--muted);box-shadow:0 0 0 1px var(--hair) inset}
/* candidate job.php reusing the .pj/.jsec look (Rob 2026-07-19): the fit row + apply row + full-width kit textareas */
.pj .fitline{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:2px 0 14px}
.pj .applyrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0 6px}
.pj .job-head{margin-bottom:6px}
.pj .jsec textarea{width:100%;box-sizing:border-box;font-family:var(--f-mono);font-size:.8rem;line-height:1.5;border:1px solid var(--hair);border-radius:10px;padding:10px}
.pj .jsec .lbl{font-size:.86rem;font-weight:600;color:var(--ink-soft);margin:10px 0 4px}
.pj .jsec .sub{font-size:.86rem;color:var(--muted)}
/* merged "what this role involves" skill pills (_skillconfirm.php) — tick-to-confirm; green = held */
.pj .scintro{font-size:.84rem;color:var(--muted);margin:0 0 10px;line-height:1.5}
.pj .scintro .scg{color:#0a7d3c;font-weight:700}
.pj .scpills{display:flex;flex-wrap:wrap;gap:7px;margin:4px 0}
.pj .scpill{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--hair);border-radius:999px;padding:5px 12px;font-size:.85rem;background:var(--paper);color:var(--ink-soft)}
.pj .scpill[role=button]{cursor:pointer}
.pj .scpill[role=button]:hover{border-color:var(--blue)}
.pj .scpill .scbx{width:15px;height:15px;border:1.5px solid #9aa1ad;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:#fff;line-height:1;flex:none}
.pj .scpill.on{border-color:#0a7d3c;background:#e7f6ec;color:#0a7d3c;font-weight:600}
.pj .scpill.on .scbx{background:#0a7d3c;border-color:#0a7d3c}
.pj .scpill.on .scbx::after{content:"✓"}
.pj .scpill.grant{border-color:#b8860b;background:#fbf3df;color:#8a6400}
.pj .scpill.grant .scbx{border-color:#b8860b}
.pj .scpill.weak{opacity:.72}
.pj .scpill.busy{opacity:.5}
.pj .scpill small{color:var(--muted);font-weight:400}
.pj .schl{font-size:.86rem;margin-top:10px;color:var(--ink-soft)} .pj .schl b{color:#0a7d3c}


/* ---- p-job  (job.php) ---- */
body.p-job .floatbar{position:sticky;top:52px;z-index:15;display:flex;align-items:center;gap:12px;justify-content:space-between;
  background:var(--paper);padding:9px 4px;margin:0 0 10px;border-bottom:1px solid var(--hair)}
body.p-job .floatbar .back{font-weight:600;text-decoration:none}
body.p-job .savebtn{background:var(--paper-2);border:1.5px solid var(--ink);border-radius:var(--r);padding:7px 16px;font:inherit;font-weight:600;cursor:pointer;color:var(--ink)}
/* Share button (Rob 2026-07-21) — j.php (public) + job.php (candidate); copies the public /j/ link / native share sheet */
body.p-j .jshare,body.p-job .jshare{display:inline-flex;align-items:center;gap:.4rem;margin:10px 0 12px;font:inherit;font-size:.85rem;font-weight:600;color:var(--blue-d);background:rgba(46,86,255,.07);border:1.5px solid var(--blue);border-radius:100px;padding:.4rem .95rem;cursor:pointer;-webkit-appearance:none;line-height:1.1}
body.p-j .jshare:hover,body.p-job .jshare:hover{background:rgba(46,86,255,.12)}
body.p-j .jshare.ok,body.p-job .jshare.ok{color:var(--live);border-color:var(--live);background:rgba(18,183,106,.08)}
body.p-job .floatbar .fbar-actions{display:inline-flex;align-items:center;gap:8px}
body.p-job .floatbar .jshare{margin:0}
/* Candidate app BOTTOM NAV (Rob 2026-07-22) — fixed, thumb-reachable, phone-first; centered on desktop */
/* 2026-07-25: was set by an inline <script> in _bottomnav.php on 9 pages purely to add this class.
   :has() targets the bar itself, so the script is gone. Legacy class selector kept one release. */
body.has-botnav,body:has(nav.botnav){padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
.botnav{position:fixed;bottom:0;left:0;right:0;z-index:60;display:flex;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.botnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:60px;font-size:11px;font-weight:600;color:var(--muted);text-decoration:none;-webkit-tap-highlight-color:transparent}
.botnav a.on{color:var(--blue)}
.botnav a:active{background:rgba(46,86,255,.05)}
.botnav svg{width:23px;height:23px}
@media(min-width:720px){.botnav{max-width:460px;left:50%;right:auto;transform:translateX(-50%);border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0;box-shadow:0 -4px 20px rgba(11,16,32,.06)}}
body.p-job .savebtn.on{background:var(--lime);color:var(--ink);border-color:var(--ink)}
body.p-job .qpill{font-size:.8rem;font-weight:700;color:#fff;background:var(--blue);border:1.5px solid var(--blue);border-radius:var(--r);padding:3px 12px;white-space:nowrap}
body.p-job .qpill.stretch{color:var(--ink);background:transparent;border-color:var(--ink)}
body.p-job .scoreline{font-size:.86rem;color:var(--muted);margin:.35em 0 .3em}
body.p-job .scoreline b{color:var(--ink)}
body.p-job .desrow{display:flex;align-items:center;gap:8px;margin:2px 0 8px;max-width:520px}
body.p-job .deslabel{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:800}
body.p-job .pips{display:inline-flex;gap:3px}
body.p-job .pips i{width:9px;height:9px;border-radius:50%;background:var(--hair);display:inline-block}
body.p-job .pips i.on{background:var(--lime-deep)}
body.p-job .desword{font-size:.82rem;font-weight:700;color:var(--ink-soft);white-space:nowrap}
body.p-job .haves{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 6px}
body.p-job .haves-lbl{font-size:.84rem;color:var(--muted);font-weight:600}
body.p-job .chip.have{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
body.p-job .kithint{margin:0 0 10px;font-size:.9rem;color:var(--lime-deep);font-weight:600}


/* ---- p-jobs  (jobs.php) ---- */
body.p-jobs .qpill{font-size:.78rem;font-weight:700;color:#fff;background:var(--blue);border:1.5px solid var(--blue);border-radius:var(--r);padding:3px 11px;white-space:nowrap}
body.p-jobs .desrow{display:flex;align-items:center;gap:7px;margin:7px 0 8px}
body.p-jobs .deslabel{font-size:.64rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:800}
body.p-jobs .pips{display:inline-flex;gap:3px}
body.p-jobs .pips i{width:8px;height:8px;border-radius:50%;background:var(--hair);display:inline-block}
body.p-jobs .pips i.on{background:var(--lime-deep)}
body.p-jobs .desword{font-size:.78rem;font-weight:700;color:var(--ink-soft);white-space:nowrap}
body.p-jobs .haves{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px}
body.p-jobs .haves-lbl{font-size:.82rem;color:var(--muted);font-weight:600}
body.p-jobs .chip.have{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
body.p-jobs .chip.more{background:var(--paper);color:var(--muted);font-weight:600}
body.p-jobs .tag.more-loc{background:var(--paper);color:var(--ink-soft);font-weight:600;cursor:help}
body.p-jobs .rail{background:var(--paper-2);border:1.5px solid var(--ink);border-radius:var(--r);padding:10px 10px 4px;margin:0 0 14px}
body.p-jobs .railhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:2px 4px 8px}
body.p-jobs .railtitle{font-weight:800;color:var(--ink);font-size:1.02rem}
body.p-jobs .railsub{font-size:.78rem;color:var(--muted)}
body.p-jobs .railcard{border-color:var(--ink)}
body.p-jobs .railbadge{display:inline-block;margin:4px 0 2px;font-size:.82rem;font-weight:700;color:var(--ink);background:var(--lime);border-radius:var(--r);padding:3px 9px}
body.p-jobs .mainhead{display:flex;align-items:baseline;gap:8px;margin:2px 2px 10px}
body.p-jobs .maintitle{font-weight:800;color:var(--ink);font-size:1rem}
body.p-jobs .mainsub{font-size:.78rem;color:var(--muted)}
body.p-jobs .railempty{color:var(--muted);font-size:.9rem;background:var(--paper);border:1px solid var(--hair);border-radius:var(--r);padding:10px 12px;margin:0 0 12px}
body.p-jobs .whatis{font-size:.83rem;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:5px 9px;margin:5px 0 2px;line-height:1.35}
body.p-jobs .firstrun{max-width:560px;margin:16px auto;background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:20px 22px}
body.p-jobs .fr-h{font-size:1.25rem;font-weight:800;margin:0 0 4px}
body.p-jobs .fr-sub{color:var(--muted);margin:0 0 14px;font-size:.95rem}
body.p-jobs .fr-steps{list-style:none;margin:0;padding:0}
body.p-jobs .fr-steps li{display:flex;align-items:center;gap:10px;padding:7px 0;color:var(--muted);font-size:.98rem}
body.p-jobs .fr-steps li.done{color:var(--lime-deep)}
body.p-jobs .fr-steps li.doing{color:var(--ink);font-weight:600}
body.p-jobs .fr-ic{display:inline-flex;width:22px;justify-content:center}
body.p-jobs .fr-foot{color:var(--muted);font-size:.85rem;margin:14px 0 0}
body.p-jobs .like-btn.on{background:var(--lime);border-color:var(--ink)}
body.p-jobs .dislike-btn.on{background:#fdecea;border-color:#b3261e}
body.p-jobs .save-btn.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
body.p-jobs .undo-strip{display:flex;align-items:center;gap:10px;padding:14px 16px;color:var(--muted);font-size:.92rem}
body.p-jobs .undo-strip .undo-btn{background:var(--ink);color:var(--paper);border:0;border-radius:var(--r);padding:6px 16px;font-weight:600;cursor:pointer}
body.p-jobs .card.jobcard{padding:0;overflow:hidden}
body.p-jobs .jobcard .jf-head{display:flex;align-items:flex-start;gap:10px;padding:13px 16px 4px}
body.p-jobs .jf-head-txt{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
body.p-jobs .jf-co{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.03em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.p-jobs .jf-title{font-family:var(--f-disp);font-size:1.08rem;font-weight:700;letter-spacing:-.02em;line-height:1.16;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
body.p-jobs .jf-pay{flex:0 1 auto;max-width:42%;font-family:var(--f-body);font-weight:700;font-size:.82rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}
body.p-jobs .jf-body{padding:6px 16px 13px}
body.p-jobs .jf-fit{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
body.p-jobs .fitbox{position:relative;display:inline-flex;align-items:center;height:22px;min-width:92px;padding:0 10px;background:var(--paper);box-shadow:0 0 0 1px var(--ink) inset;overflow:hidden}
body.p-jobs .fitfill{position:absolute;left:0;top:0;bottom:0;background:var(--lime)}
body.p-jobs .fitlbl{position:relative;z-index:1;font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink);white-space:nowrap}
body.p-jobs .jf-facts{display:flex;flex-wrap:wrap;gap:3px 14px;font-family:var(--f-mono);font-size:.8rem;color:var(--muted);margin-bottom:13px}
body.p-jobs .jf-facts b{color:var(--ink);font-family:var(--f-body);font-weight:700;font-size:.92rem}
body.p-jobs .jobcard .card-main{display:block;color:inherit;text-decoration:none}
body.p-jobs .jf-meta{display:flex;align-items:center;gap:10px;margin-top:9px}
body.p-jobs .jf-added{font-family:var(--f-mono);font-size:.72rem;color:var(--muted);letter-spacing:.02em;white-space:nowrap}
body.p-jobs .jf-go{margin-left:auto;flex:none;font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.03em;color:var(--lime-deep);border-bottom:1.5px solid transparent;white-space:nowrap}
body.p-jobs .jobcard .card-main:hover .jf-go{border-color:var(--lime-deep)}
body.p-jobs .jf-actions{display:flex;gap:8px;padding:9px 13px;border-top:1px solid var(--hair);background:color-mix(in srgb,var(--ink) 3%,transparent)}
body.p-jobs .jf-actions .act{flex:1;text-align:center}


/* ---- p-join  (join.php) ---- */
body.p-join .wrap{max-width:560px;margin:0 auto;padding:22px 16px 50px}
body.p-join .hero{text-align:center;margin:8px 0 18px}
body.p-join .hero h1{font-family:var(--f-disp);font-size:1.8rem;font-weight:800;letter-spacing:-.03em;margin:0 0 6px}
body.p-join .hero p{color:var(--ink-soft);margin:0}
body.p-join .card{background:var(--paper-2);border:1.5px solid var(--ink);border-radius:var(--r);padding:20px;box-shadow:var(--shadow-lg)}
body.p-join label{display:block;font-family:var(--f-mono);font-weight:500;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 5px}
body.p-join input[type=text], body.p-join input[type=email], body.p-join input[type=tel], body.p-join input[type=file]{width:100%;padding:11px 12px;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;background:var(--paper-2);color:var(--ink)}
body.p-join .pills{display:flex;flex-wrap:wrap;gap:8px}
body.p-join .pills label{display:flex;align-items:center;gap:6px;margin:0;padding:8px 12px;border:1.5px solid var(--hair);text-transform:none;font-family:var(--f-body);font-size:.9rem;letter-spacing:0;color:var(--ink);cursor:pointer}
body.p-join .consent{display:flex;gap:9px;align-items:flex-start;margin:14px 0 0;font-size:.85rem;color:var(--ink)}
body.p-join .consent input{margin-top:3px}
body.p-join .consent .mut{color:var(--muted)}
body.p-join .btn{margin-top:18px;width:100%;background:var(--blue);color:#fff;border:1.5px solid var(--blue);border-radius:var(--r);padding:13px;font-size:1rem;font-weight:600;cursor:pointer}
body.p-join .err{background:#fdecec;color:#9b1c1c;padding:10px 12px;margin:0 0 12px;font-size:.9rem;box-shadow:0 0 0 1px #e7a9a9 inset}
body.p-join .foot{color:var(--muted);font-size:.82rem;text-align:center;margin-top:14px}


/* ---- p-landing  (landing.php) ---- */
body.p-landing .ld{max-width:760px;margin:0 auto;padding:0 14px 40px}
body.p-landing .ld h1{font-size:1.35rem;margin:18px 0 4px}
body.p-landing .ld .sub{color:var(--muted);font-size:.88rem;margin:0 0 16px;line-height:1.6}
body.p-landing .ld .row{display:block;padding:12px 0;border-bottom:1px solid var(--hair-2);text-decoration:none;color:inherit}
body.p-landing .ld .row b{display:block;font-size:.98rem}
body.p-landing .ld .row .m{font-family:var(--f-mono);font-size:.72rem;color:var(--muted)}
body.p-landing .ld .sibs{margin-top:20px;font-size:.82rem;line-height:2}


/* ---- p-login  (login.php) ---- */
body.p-login *{box-sizing:border-box}
/* display:block, NOT flex — nav.php is a body child too; flex-centering rowed the nav next to the card
   and shoved both half off a phone screen (Rob 2026-07-23 "login formatting is a mess") */
body.p-login{margin:0;font-family:var(--f-body);font-size:16px;line-height:1.5;color:var(--ink);background:var(--paper);min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body.p-login ::selection{background:var(--lime);color:var(--ink)}
body.p-login .card{width:min(400px,calc(100% - 32px));background:var(--paper-2);border:1.5px solid var(--ink);border-radius:var(--r);padding:28px 24px;margin:7vh auto 40px;box-shadow:var(--shadow-lg);overflow:visible;transition:none}
body.p-login .card:hover{box-shadow:var(--shadow-lg);transform:none;border-color:var(--ink)}
body.p-login .logo{display:block;font-family:var(--f-disp);font-weight:800;font-size:1.5rem;letter-spacing:-.03em;line-height:1;text-align:center;margin:0 0 4px}
body.p-login .logo b{font-weight:800;color:var(--ink)}
body.p-login .logo i{font-style:normal;color:var(--blue)}
body.p-login h1{font-family:var(--f-disp);font-weight:700;font-size:1.5rem;letter-spacing:-.01em;margin:18px 0 4px}
body.p-login p.sub{color:var(--muted);font-size:.92rem;margin:0 0 18px}
body.p-login label{display:block;font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
body.p-login input{width:100%;font:inherit;font-family:var(--f-body);font-size:1.05rem;padding:12px 14px;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper-2);color:var(--ink);outline:none}
body.p-login input:focus-visible{outline:none;box-shadow:var(--shadow-lg)}
body.p-login input.code{letter-spacing:.35em;text-align:center;font-weight:700;font-family:var(--f-mono)}
body.p-login button{width:100%;margin-top:16px;font:inherit;font-weight:600;color:#fff;background:var(--blue);border:1.5px solid var(--blue);border-radius:var(--r);padding:13px;cursor:pointer;transition:background .2s var(--ease)}
body.p-login button:hover{background:var(--blue-d)}
body.p-login .err{background:var(--paper);border:1.5px solid var(--ink);color:var(--ink);font-family:var(--f-mono);font-size:.76rem;letter-spacing:.04em;border-radius:var(--r);padding:10px 12px;margin:0 0 14px}
body.p-login .hint{color:var(--muted);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;margin:16px 0 0;text-align:center}
body.p-login a{color:var(--lime-deep)}


/* ---- settings plan card (candidate billing) — RESTORED 2026-07-24 after a style.css collision
   (server-claude added these in parallel; my uploads stomped them — mea culpa, laptop-claude) ---- */
body.p-settings .plan-line{font-size:.96rem;margin:.2rem 0 .55rem}
body.p-settings .plan-line .was{text-decoration:line-through;color:var(--muted);font-weight:400}
body.p-settings .flash-add{background:var(--lime);border:1.5px solid var(--ink);border-radius:var(--r);padding:.55rem .75rem;font-size:.88rem;margin:0 0 .6rem}
body.p-settings .plan-meter{height:10px;background:var(--paper);border:1.5px solid var(--ink);border-radius:100px;overflow:hidden;margin:.4rem 0}
body.p-settings .plan-meter i{display:block;height:100%;background:var(--blue)}
body.p-settings .plan-usage{color:var(--muted);font-size:.88rem;margin:.25rem 0 .7rem}
body.p-settings .plan-acts{display:flex;gap:.55rem;flex-wrap:wrap;margin:.45rem 0 .55rem}
body.p-settings .btn-plan{display:inline-block;padding:.7rem 1.15rem;border:1.5px solid var(--ink);border-radius:100px;text-decoration:none;color:var(--ink);background:var(--paper-2);font-weight:600;font-size:.92rem;box-shadow:var(--shadow-lg);cursor:pointer}
body.p-settings .btn-plan.main{background:var(--blue);border-color:var(--blue);color:#fff}
body.p-settings .btn-plan:hover{transform:translateY(-1px)}
body.p-settings .plan-note{color:var(--muted);font-size:.8rem;margin:.35rem 0 0}
/* ---- p-manage-help  (manage-help.php) ---- */
body.p-manage-help :root{--paper:#ECEDE4;--paper-2:#F7F8F1;--ink:#0E100B;--muted:#565A4C;--lime:#9DB4C6;--hair:#C9CBBD}
body.p-manage-help{font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.6;color:var(--ink);margin:0;background:var(--paper)}
body.p-manage-help .wrap{max-width:680px;margin:0 auto;padding:28px 18px 60px}
body.p-manage-help h1{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;letter-spacing:-.02em;font-size:1.7rem;margin:.4rem 0 .2rem}
body.p-manage-help h2{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;letter-spacing:-.02em;font-size:1.15rem;margin:2rem 0 .5rem;padding-top:1rem;border-top:1.5px solid var(--ink)}
body.p-manage-help p, body.p-manage-help li{color:var(--ink)}
body.p-manage-help .mut{color:var(--muted)}
body.p-manage-help .card{background:var(--paper-2);border:1.5px solid var(--ink);padding:16px 18px;margin:1rem 0;box-shadow:var(--shadow-lg)}
body.p-manage-help .mono{font-family:"IBM Plex Mono",monospace;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
body.p-manage-help table{border-collapse:collapse;width:100%;font-size:.92rem}
body.p-manage-help td{padding:6px 8px;border-bottom:1px dashed var(--hair);vertical-align:top}
body.p-manage-help td:first-child{font-weight:600;white-space:nowrap}
body.p-manage-help ul{padding-left:1.2rem}
body.p-manage-help b{font-weight:650}
body.p-manage-help .badge{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:.66rem;font-weight:600;padding:2px 8px;letter-spacing:.06em;text-transform:uppercase;background:var(--lime);box-shadow:0 0 0 1px var(--ink) inset}


/* ---- p-manage  (manage.php) ---- */
body.p-manage.center{background:var(--paper);color:var(--ink);margin:0;padding:2rem 1rem;display:flex;min-height:100vh;align-items:center;justify-content:center}   /* CENTERED CARD VIEWS ONLY (token bootstrap/expired/error). This selector used to be bare body.p-manage — the flex-centering leaked into the whole dashboard during the stylesheet consolidation and wrecked mobile (Rob 2026-07-23). */
body.p-manage .box{max-width:420px;text-align:center}
body.p-manage .brand{font-family:var(--f-disp);font-weight:800;font-size:18px;margin-bottom:1.5rem}
body.p-manage .brand span{background:var(--lime);color:var(--ink);padding:.04em .26em;box-shadow:0 0 0 1px var(--ink) inset}
body.p-manage p{color:var(--muted);line-height:1.5}
body.p-manage.center{background:var(--paper);color:var(--ink);margin:0;padding:2rem 1rem;display:flex;min-height:100vh;align-items:center;justify-content:center}   /* CENTERED CARD VIEWS ONLY (token bootstrap/expired/error). This selector used to be bare body.p-manage — the flex-centering leaked into the whole dashboard during the stylesheet consolidation and wrecked mobile (Rob 2026-07-23). */
body.p-manage .box{max-width:440px;text-align:center;background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:2rem 1.6rem}
body.p-manage .brand{font-family:var(--f-disp);font-weight:800;font-size:18px;margin-bottom:1.2rem}
body.p-manage .brand span{background:var(--lime);color:var(--ink);padding:.04em .26em;box-shadow:0 0 0 1px var(--ink) inset}
body.p-manage.center .dot{width:54px;height:54px;border-radius:var(--r);background:var(--lime);color:var(--ink);font-size:26px;line-height:54px;margin:0 auto 1rem;display:block;box-shadow:0 0 0 1px var(--ink) inset}   /* card views only — bare body.p-manage .dot out-ranked .vhnav__badge .dot and blew the nav badge's 7px status dot up to a 54px tile (Rob's iPhone screenshot, 2026-07-23) */
body.p-manage h1{font-family:var(--f-disp);font-weight:800;font-size:1.25rem;margin:0 0 .6rem}
body.p-manage p{color:var(--muted);line-height:1.55;margin:.5rem 0}
body.p-manage *{box-sizing:border-box}
body.p-manage{overflow-x:clip;max-width:100vw}   /* horizontal-overflow guard (Rob's 2026-07-24 screenshot: a rogue wide element stretched the layout viewport — nav badge, 4th stat + FAB clipped off-screen) */
body.p-manage{font-family:var(--f-body);margin:0;background:var(--paper);color:var(--ink);padding-bottom:4.5rem}
body.p-manage .topbar{background:var(--paper-2);border-bottom:1px solid var(--hair);padding:.85rem 1.25rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}
body.p-manage .topbar .co{font-family:var(--f-disp);font-weight:800;letter-spacing:-.02em;font-size:1.05rem;line-height:1.2}
body.p-manage .topbar .brand{background:var(--lime);color:var(--ink);font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.04em;padding:.2em .5em;box-shadow:0 0 0 1px var(--ink) inset}
body.p-manage .wrap{max-width:680px;margin:0 auto;padding:1.1rem}
body.p-manage .tabs{display:flex;gap:.5rem;background:var(--paper);border:1px solid var(--hair);border-radius:var(--r);padding:.3rem;margin-bottom:1.1rem}
body.p-manage .tabs button{flex:1;border:0;background:transparent;padding:.6rem;border-radius:var(--r);font:inherit;font-family:var(--f-mono);font-weight:500;font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);cursor:pointer}
body.p-manage .tabs button.active{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
body.p-manage .tab{display:none}
body.p-manage .tab.active{display:block}
body.p-manage .card{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:1rem 1.15rem;margin-bottom:.85rem}
body.p-manage .job-h{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}
body.p-manage .job-h h3{font-family:var(--f-disp);font-weight:700;letter-spacing:-.02em;margin:0 0 .25rem;font-size:1.02rem;line-height:1.3}
body.p-manage .meta{color:var(--muted);font-family:var(--f-mono);font-size:.78rem;line-height:1.5}
body.p-manage .badge{display:inline-block;font-family:var(--f-mono);font-size:.66rem;font-weight:600;padding:3px 9px;border-radius:var(--r);letter-spacing:.06em;text-transform:uppercase}
body.p-manage .b-live{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
body.p-manage .b-closed{background:transparent;color:var(--muted);box-shadow:0 0 0 1px var(--hair) inset}
body.p-manage .b-pass{background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
body.p-manage .b-fail{background:transparent;color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset}
body.p-manage .b-none{background:transparent;color:var(--ink-soft);box-shadow:0 0 0 1px var(--hair) inset}
body.p-manage .actions{margin-top:.7rem;display:flex;gap:.5rem;flex-wrap:wrap}
body.p-manage .actions button, body.p-manage .actions a{font:inherit;font-family:var(--f-mono);font-size:.74rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;padding:.45rem .8rem;border-radius:var(--r);border:1.5px solid var(--hair);background:var(--paper-2);color:var(--ink);cursor:pointer;text-decoration:none;transition:border-color .15s var(--ease)}
body.p-manage .actions button:hover, body.p-manage .actions a:hover{border-color:var(--ink)}
body.p-manage .actions button.danger{color:#9b1c1c;border-color:#e7a9a9}
body.p-manage .section-h{font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:1.4rem 0 .7rem}
body.p-manage .empty{background:var(--paper-2);border:1px dashed var(--ink);border-radius:var(--r);padding:1.4rem;text-align:center;color:var(--muted);font-family:var(--f-mono);font-size:.86rem}
body.p-manage .app-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}
body.p-manage .app-row .who{font-weight:600;font-size:.98rem}
body.p-manage .app-row .contact{color:var(--ink-soft);font-size:.84rem;line-height:1.5;margin-top:.15rem;word-break:break-word}
body.p-manage .app-row .contact a{border-bottom:2px solid var(--lime-deep)}
body.p-manage .app-row .for{color:var(--muted);font-family:var(--f-mono);font-size:.74rem;margin-top:.25rem}
body.p-manage .fab{position:fixed;bottom:1.1rem;right:1.1rem;background:var(--blue);color:#fff;border:1.5px solid var(--blue);border-radius:var(--r);padding:.85rem 1.3rem;font-weight:700;font-size:.95rem;box-shadow:var(--shadow-lg);cursor:pointer;z-index:30;transition:background .2s var(--ease)}
body.p-manage .fab:hover{background:var(--blue-d)}
body.p-manage .fwd-yes{color:var(--lime-deep);font-family:var(--f-mono);font-size:.74rem;font-weight:600}
body.p-manage .fwd-no{color:var(--muted);font-family:var(--f-mono);font-size:.74rem;font-weight:600}
body.p-manage .gate-why{color:var(--muted);font-family:var(--f-mono);font-size:.72rem;line-height:1.6;margin-top:.45rem;padding-top:.45rem;border-top:1px dashed var(--hair)}
body.p-manage .gate-why em{font-style:normal;color:var(--ink)}
body.p-manage .gb-stat{flex-basis:100%;color:var(--muted);font-family:var(--f-mono);font-size:.7rem;margin:.15rem 0 .1rem}
body.p-manage .pulse{color:var(--muted);font-family:var(--f-mono);font-size:.72rem;line-height:1.6;margin-top:.55rem;padding-top:.5rem;border-top:1px dashed var(--hair)}
body.p-manage .pulse:empty{display:none}
body.p-manage .appfilters{display:flex;flex-wrap:wrap;gap:6px;margin:.2rem 0 1rem;align-items:center}
body.p-manage .appfilters .af{border:1.5px solid var(--hair);background:transparent;padding:.35rem .7rem;font:inherit;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);cursor:pointer;border-radius:var(--r)}
body.p-manage .appfilters .af.on{border-color:var(--ink);background:var(--lime);color:var(--ink)}
body.p-manage .appfilters select{border:1.5px solid var(--hair);background:transparent;font-family:var(--f-mono);font-size:.72rem;padding:.35rem;color:var(--muted);border-radius:var(--r)}
body.p-manage .helprow{text-align:right;margin:.4rem 0 .2rem}
body.p-manage .helprow a{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.04em;color:var(--muted);text-decoration:underline}
body.p-manage .vbadge{display:inline-block;margin-left:6px;font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:1px 7px;background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;cursor:help;vertical-align:middle}
body.p-manage .sheet-bg{position:fixed;inset:0;background:rgba(14,16,11,.5);z-index:40;display:none}
body.p-manage .sheet-bg.open{display:block}
body.p-manage .sheet{position:fixed;left:0;right:0;bottom:0;max-height:92vh;max-height:92svh;overflow:auto;background:var(--paper-2);border-top:1.5px solid var(--ink);border-radius:var(--r);z-index:50;transform:translateY(100%);transition:transform .2s;padding:1.2rem 1.2rem 2rem}
body.p-manage .sheet.open{transform:translateY(0)}
body.p-manage .sheet h2{font-family:var(--f-disp);font-weight:800;letter-spacing:-.025em;margin:.2rem 0 1rem;font-size:1.2rem}
body.p-manage .sheet label{display:block;font-family:var(--f-mono);font-weight:600;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:.9rem 0 .35rem}
body.p-manage .sheet input, body.p-manage .sheet textarea, body.p-manage .sheet select{width:100%;padding:.65rem .7rem;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;font-family:var(--f-body);background:var(--paper-2);color:var(--ink)}
body.p-manage .sheet input:focus-visible, body.p-manage .sheet textarea:focus-visible, body.p-manage .sheet select:focus-visible{outline:none;box-shadow:var(--shadow-lg)}
body.p-manage .sheet textarea{min-height:120px;resize:vertical}
body.p-manage .sheet .row{display:flex;gap:.6rem}
body.p-manage .sheet .row>div{flex:1}
body.p-manage .sheet .go{margin-top:1.1rem;width:100%;background:var(--blue);color:#fff;border:1.5px solid var(--blue);border-radius:var(--r);padding:.85rem;font-size:1rem;font-weight:700;cursor:pointer;transition:background .2s var(--ease)}
body.p-manage .sheet .go:hover{background:var(--blue-d)}
body.p-manage .sheet .cancel{margin-top:.6rem;width:100%;background:var(--paper);color:var(--ink-soft);border:1.5px solid var(--hair);border-radius:var(--r);padding:.7rem;font-weight:600;cursor:pointer}
body.p-manage .sheet .cancel:hover{border-color:var(--ink)}
body.p-manage .sheet .hint{color:var(--muted);font-size:.76rem;margin-top:.3rem;text-transform:none;letter-spacing:0;font-family:var(--f-body);font-weight:400}
body.p-manage .sheet .ghost{float:right;background:var(--paper);color:var(--ink);border:1.5px solid var(--hair);border-radius:var(--r);padding:5px 10px;font-family:var(--f-mono);font-size:.7rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;margin-top:-2px}
body.p-manage .sheet .ghost:hover{border-color:var(--ink)}
body.p-manage .note{background:var(--paper);border:1px dashed var(--ink);border-radius:var(--r);padding:.55rem .75rem;color:var(--ink-soft);font-size:.78rem;margin-bottom:.9rem}
body.p-manage #postmsg{font-size:.86rem;margin-top:.6rem}
body.p-manage #embed-code{background:var(--ink);color:var(--paper);border-radius:var(--r);padding:.85rem;font-family:var(--f-mono);font-size:.78rem;line-height:1.5;white-space:pre-wrap;word-break:break-all;overflow-x:auto;margin:0}
body.p-manage .summary{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem;margin-bottom:1.1rem}
body.p-manage .summary .stat{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:.7rem .55rem;text-align:center}
body.p-manage .summary .stat .n{font-family:var(--f-disp);font-size:1.45rem;font-weight:800;line-height:1.1;color:var(--ink)}
body.p-manage .summary .stat .l{font-family:var(--f-mono);font-size:.62rem;font-weight:500;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-top:.2rem;line-height:1.25}
body.p-manage .summary .stat.fwd .n{color:var(--lime-deep)}
body.p-manage .summary .stat.out .n{color:var(--ink)}
/* WIZARD (P3, Rob-endorsed): 4 one-viewport steps + preview; dots; sticky-ish footer nav */
body.p-manage .wstep{display:none}
body.p-manage .wstep.on{display:block}
body.p-manage .wdots{display:flex;justify-content:center;gap:.45rem;margin:.15rem 0 .55rem}
body.p-manage .wdots .d{width:9px;height:9px;border-radius:50%;background:var(--hair)}
body.p-manage .wdots .d.on{background:var(--ink)}
/* floating pill nav (Rob 2026-07-24): just the buttons, bottom-right, content visible around them */
body.p-manage .wfab{position:sticky;bottom:.6rem;z-index:6;display:flex;flex-wrap:wrap;row-gap:.45rem;justify-content:flex-end;gap:.5rem;margin:1rem 0 0;pointer-events:none}   /* wrap, never clip left (Rob: Back pill truncated on step 4) */
body.p-manage .wfab button{white-space:nowrap}
body.p-manage .wfab button{pointer-events:auto;flex:0 0 auto;width:auto;margin:0;border-radius:100px;box-shadow:var(--shadow-lg)}
body.p-manage .sheet .wfab .go{width:auto;flex:0 0 auto;margin:0;padding:.7rem 1.4rem;border-radius:100px}
body.p-manage .sheet .wfab .cancel{width:auto;flex:0 0 auto;margin:0;padding:.7rem 1rem;border-radius:100px;background:var(--paper-2)}
body.p-manage .wnav2{margin-top:.5rem}
body.p-manage #post-completeness{margin:.1rem 0 .3rem}
body.p-manage #sheet h2{margin:.35rem 0 .2rem}   /* was clipping under the sticky top bar (Rob 2026-07-24) */
body.p-manage .wlink{background:none;border:0;color:var(--muted);font-family:var(--f-mono);font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;text-decoration:underline;padding:2px 4px}
/* auto-questions folder (P2-1) */
body.p-manage .autoq{border:1.5px dashed var(--hair);border-radius:var(--r);padding:.45rem .65rem;margin:0 0 .6rem;background:var(--paper)}
body.p-manage .autoq summary{cursor:pointer;font-family:var(--f-mono);font-size:.76rem;letter-spacing:.04em;color:var(--ink);list-style:revert}
/* generated JD sections inside the composer (P2-1): visibly auto, visibly inert */
body.p-manage #jd-gen{margin-top:.5rem;border-top:1px dashed var(--hair);padding-top:.45rem}
body.p-manage .jdg-h{font-family:var(--f-disp);font-weight:800;font-size:.95rem;margin:.5rem 0 .15rem}
body.p-manage .jdg-tag{font-family:var(--f-mono);font-weight:500;font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;background:var(--lime);color:var(--ink);border-radius:6px;padding:1px 6px;box-shadow:0 0 0 1px var(--ink) inset;vertical-align:1px}
body.p-manage .jdg-l{font-size:.9rem;line-height:1.45;color:var(--ink-soft);padding-left:.2rem}
/* distribution receipt (P2-4) */
body.p-manage .receipt{background:var(--lime);border:1.5px solid var(--ink);border-radius:var(--r);padding:.8rem .95rem;margin:0 0 1rem;font-size:.9rem;line-height:1.5}
body.p-manage .receipt .rrow{margin-top:.35rem}
body.p-manage .receipt a{color:var(--ink);font-weight:600;text-decoration:underline}
body.p-manage .summary .stat{cursor:pointer}
/* P1-6 TWO-TIER HIERARCHY (UX panel): four numbered section landmarks in the display font; mono-caps
   stays ONLY on sub-labels. The cheapest change that shrinks perceived sheet length. */
body.p-manage .sheet label.sec{display:flex;align-items:center;gap:.5rem;font-family:var(--f-disp);font-weight:800;font-size:1.05rem;letter-spacing:-.015em;text-transform:none;color:var(--ink);margin:1.5rem 0 .55rem}
body.p-manage .sheet label.sec .hint{font-family:var(--f-body);font-weight:400;font-size:.78rem;letter-spacing:0;text-transform:none}
body.p-manage .sheet .secn{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--paper-2);font-family:var(--f-mono);font-size:.72rem;font-weight:600;line-height:22px;text-align:center}
/* P1-4 MOBILE MECHANICS (UX panel): iOS auto-zooms any focused control under 16px — force 16px inside
   the sheet and buy density back with padding, not font size. Tap targets ≥42px. Sticky sheet header. */
body.p-manage .sheet input, body.p-manage .sheet textarea, body.p-manage .sheet select{font-size:16px}
body.p-manage .sheet input[type=checkbox]{font-size:inherit}
body.p-manage .sheet .chips2 label, body.p-manage .sheet .req-chips label.req-chip{min-height:42px;padding:.5rem .85rem}
body.p-manage .jdr button.jdr-x{padding:.5rem .65rem;font-size:1rem}
body.p-manage .sheet{padding-bottom:calc(2rem + env(safe-area-inset-bottom))}
/* FLEX-COLUMN SHEET (Rob 2026-07-24: sticky inside the transformed sheet = WebKit clipping bug — header
   is now a STATIC bar, only the body scrolls; nothing can slide under or clip, by construction) */
body.p-manage #sheet{display:flex;flex-direction:column;padding:0;overflow:hidden}
body.p-manage #sheet .sheet-body{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:.5rem 1.2rem calc(2rem + env(safe-area-inset-bottom))}
body.p-manage .sh-top{position:relative;flex:0 0 auto;z-index:6;display:flex;align-items:center;justify-content:center;background:var(--paper-2);margin:0;padding:.65rem 2.6rem;border-bottom:1px solid var(--hair)}
body.p-manage .sh-top .sh-title{font-family:var(--f-disp);font-weight:800;font-size:1.02rem;letter-spacing:-.015em}   /* the title LIVES in the sticky bar — nothing meaningful can scroll under it (Rob 2026-07-24) */
body.p-manage .sh-top .sh-close{position:absolute;right:.3rem;top:.12rem;width:42px;height:42px;border:0;background:none;font-size:1.5rem;line-height:1;color:var(--muted);cursor:pointer}
body.p-manage .summary.has5{grid-template-columns:repeat(auto-fit,minmax(64px,1fr))}   /* Drafts box joins the strip (Rob 2026-07-24) */
body.p-manage .summary #draftstat{border-style:dashed}
@media(max-width:430px){.summary .stat .n{font-size:1.2rem}.summary .stat .l{font-size:.58rem}}
body.p-manage .job-counts{display:flex;gap:1rem;margin-top:.55rem;flex-wrap:wrap}
body.p-manage .job-counts span{font-family:var(--f-mono);font-size:.74rem;color:var(--muted)}
body.p-manage .job-counts span b{color:var(--ink);font-weight:700}
body.p-manage .pf label{display:block;font-family:var(--f-mono);font-weight:600;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:.9rem 0 .35rem}
body.p-manage .pf input, body.p-manage .pf textarea{width:100%;padding:.65rem .7rem;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;font-family:var(--f-body);background:var(--paper-2);color:var(--ink)}
body.p-manage .pf input:focus-visible, body.p-manage .pf textarea:focus-visible{outline:none;box-shadow:var(--shadow-lg)}
body.p-manage .pf textarea{min-height:90px;resize:vertical}
body.p-manage .pf .hint{color:var(--muted);font-size:.76rem;margin-top:.3rem;text-transform:none;letter-spacing:0;font-family:var(--f-body);font-weight:400}
body.p-manage .pf .go{margin-top:1.1rem;width:100%;background:var(--blue);color:#fff;border:1.5px solid var(--blue);border-radius:var(--r);padding:.85rem;font-size:1rem;font-weight:700;cursor:pointer;transition:background .2s var(--ease)}
body.p-manage .pf .go:hover{background:var(--blue-d)}
body.p-manage #profilemsg{font-size:.86rem;margin-top:.7rem}
body.p-manage .gb-intro{background:var(--paper);border:1px solid var(--hair);border-radius:var(--r);padding:.6rem .75rem;color:var(--ink-soft);font-size:.78rem;line-height:1.45;margin:.4rem 0 .7rem}
body.p-manage .gb-presets{display:flex;flex-wrap:wrap;gap:.4rem;margin:.2rem 0 .7rem}
body.p-manage .gb-presets button{font:inherit;font-family:var(--f-mono);font-size:.72rem;font-weight:500;letter-spacing:.03em;padding:.35rem .65rem;border-radius:var(--r);border:1.5px dashed var(--hair);background:var(--paper-2);color:var(--ink);cursor:pointer}
body.p-manage .gb-presets button:hover{border-color:var(--ink)}
body.p-manage .gb-row{display:flex;gap:.45rem;align-items:flex-start;margin-bottom:.5rem}
body.p-manage .gb-row input.gb-q, body.p-manage .gb-row textarea.gb-q{flex:1;padding:.55rem .6rem;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;font-size:.9rem;background:var(--paper-2);color:var(--ink)}
body.p-manage .gb-row textarea.gb-q{resize:none;overflow:hidden;line-height:1.35}   /* auto-grows via JS — full-sentence questions were cut off in the one-line input (Rob 2026-07-23) */
/* JD ROW COMPOSER (Rob 2026-07-23) — the draft as keep/edit/delete rows */
body.p-manage #jd-rows{border:1.5px solid var(--ink);border-radius:var(--r);padding:.5rem .65rem;background:var(--paper-2)}
body.p-manage .jdr{display:flex;gap:.4rem;align-items:flex-start;padding:.12rem 0}
body.p-manage .jdr textarea.jdr-t{flex:1;border:0;border-bottom:1px dashed var(--hair);background:transparent;font:inherit;font-size:.9rem;line-height:1.4;padding:.15rem .2rem;resize:none;overflow:hidden;color:var(--ink)}   /* always-visible dashed underline = "this line is editable" (Rob 2026-07-24) */
body.p-manage .jdr textarea.jdr-t:focus{outline:none;border-bottom:1px dashed var(--ink);background:var(--paper)}
body.p-manage .jdr.head textarea.jdr-t{font-weight:800;font-family:var(--f-disp);font-size:.98rem;margin-top:.4rem}
body.p-manage .jdr .jdr-b{color:var(--muted);padding-top:.3rem;flex:0 0 auto}
body.p-manage .jdr button{flex:0 0 auto;border:1px solid var(--hair);background:var(--paper);border-radius:6px;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.03em;padding:.22rem .45rem;color:var(--muted);cursor:pointer;margin-top:.18rem}
body.p-manage .jdr button.jdr-x{color:#9b1c1c;font-size:.8rem;line-height:1}
body.p-manage .jdr button.on{background:var(--lime);color:var(--ink);border-color:var(--ink)}
body.p-manage .jd-tools{display:flex;gap:.5rem;margin:.35rem 0 0}
/* P1-1 prefill pipeline: announce strip, change pulse, tap-to-accept suggestion pills */
body.p-manage #pf-strip{background:var(--lime);border:1.5px solid var(--ink);border-radius:var(--r);padding:.55rem .75rem;margin:.4rem 0 .7rem;font-size:.84rem;line-height:1.45;color:var(--ink)}
body.p-manage #pf-strip a{color:var(--ink);font-weight:600}
body.p-manage #pf-strip a.pf-x{float:right;text-decoration:none;font-size:1.05rem;line-height:1;margin-left:.5rem;font-weight:400}
body.p-manage .pf-spin{display:inline-block;width:.85rem;height:.85rem;border:2px solid var(--ink);border-right-color:transparent;border-radius:50%;vertical-align:-2px;margin-right:.35rem;animation:pfspin .7s linear infinite}
@keyframes pfspin{to{transform:rotate(360deg)}}
@keyframes pfpulse{0%{box-shadow:0 0 0 0 rgba(46,86,255,.55)}100%{box-shadow:0 0 0 9px rgba(46,86,255,0)}}
body.p-manage .pf-pulse{animation:pfpulse 1s ease-out 2;border-radius:var(--r)}
body.p-manage .sugg-pill{display:inline-block;margin:.25rem 0 .15rem 88px;border:1.5px dashed var(--ink);background:var(--paper);border-radius:100px;padding:.32rem .75rem;font:inherit;font-size:.8rem;color:var(--ink);cursor:pointer}
body.p-manage .sugg-pill:hover{background:var(--lime)}
body.p-manage .req-addrow{display:flex;gap:.4rem;margin:.45rem 0 0}
body.p-manage .req-addrow input{flex:1;font:inherit;font-size:.86rem;padding:.45rem .65rem;border:1.5px solid var(--hair);border-radius:100px;background:var(--paper);min-height:0}
/* SPECIFICITY REPAIRS (Rob's jd1-3 screenshots 2026-07-24): the sheet's generic input{width:100%} was
   inflating checkboxes into giant pills, and textarea{min-height:120px} made every composer row a cavern. */
body.p-manage .sheet input[type=checkbox]{width:1.1rem;height:1.1rem;min-height:0;padding:0;border:0;flex:0 0 auto;accent-color:var(--lime-deep)}
body.p-manage .sheet .jdr textarea.jdr-t, body.p-manage .sheet .gb-row textarea.gb-q{min-height:0}
body.p-manage .sheet .chips2 label, body.p-manage .sheet .req-chips label.req-chip{display:inline-flex;align-items:center;gap:.4rem;border:1.5px solid var(--hair);border-radius:100px;padding:.32rem .7rem;margin:0;font-family:var(--f-body);font-size:.84rem;font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink);cursor:pointer;background:var(--paper)}
body.p-manage .sheet .chips2 label:has(input:checked), body.p-manage .sheet .req-chips label.req-chip:has(input:checked){border-color:var(--ink);background:var(--lime)}
/* WHAT-THE-JOB-NEEDS (Rob 2026-07-23 requirements-first): fields build the JD + the questions */
body.p-manage .needsbox{border:1.5px solid var(--ink);border-radius:var(--r);padding:.7rem .75rem;background:var(--paper-2)}
body.p-manage .need-row{display:flex;align-items:center;gap:.5rem;margin:.25rem 0;flex-wrap:wrap}
body.p-manage .need-l{font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex:0 0 88px}
body.p-manage .need-m{font-size:.86rem;color:var(--muted)}
body.p-manage .need-row select, body.p-manage .need-row input{font:inherit;font-size:.88rem;padding:.45rem .55rem;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper);color:var(--ink)}
body.p-manage .need-row input#rq-as{flex:1;min-width:140px}
body.p-manage .need-row input.w-yr2{width:64px}
/* Experience segmented control (P1-3) */
body.p-manage .seg{display:inline-flex;border:1.5px solid var(--ink);border-radius:100px;overflow:hidden;background:var(--paper)}
body.p-manage .seg button{font:inherit;font-size:.84rem;padding:.42rem .8rem;border:0;background:transparent;color:var(--muted);cursor:pointer;border-right:1px solid var(--hair)}
body.p-manage .seg button:last-child{border-right:0}
body.p-manage .seg button.on{background:var(--lime);color:var(--ink);font-weight:600}
body.p-manage #rq-as-row input{flex:1;min-width:150px}
body.p-manage .need-l2{font-family:var(--f-mono);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:.7rem 0 .3rem}
body.p-manage .chips2{display:flex;flex-wrap:wrap;gap:.35rem}
body.p-manage .chips2 label{display:inline-flex;align-items:center;gap:.35rem;border:1.5px solid var(--hair);border-radius:100px;padding:.3rem .65rem;font-size:.82rem;cursor:pointer;background:var(--paper)}
body.p-manage .chips2 label:has(input:checked){border-color:var(--ink);background:var(--lime)}
body.p-manage .chips2 input{accent-color:var(--lime-deep)}
body.p-manage .gb-auto{align-self:center;font-family:var(--f-mono);font-size:.6rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:var(--lime);color:var(--ink);border-radius:6px;padding:2px 6px;box-shadow:0 0 0 1px var(--ink) inset;margin-right:.35rem;flex:0 0 auto}
/* AUTO question rows read as FIXED statements (Rob 2026-07-24): no edit box, no dropdown, no × —
   they exist exactly while their checkbox above is checked. */
body.p-manage .gb-wrap[data-auto] .gb-row{align-items:center}
body.p-manage .gb-wrap[data-auto] textarea.gb-q{border:0;background:transparent;padding:.2rem .1rem;font-size:.88rem;pointer-events:none}
body.p-manage .gb-wrap[data-auto] select.gb-f, body.p-manage .gb-wrap[data-auto] button.gb-x{display:none}
body.p-manage .gb-row select.gb-f{flex:0 0 auto;width:auto;max-width:46%;padding:.55rem .5rem;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;font-size:.82rem;background:var(--paper-2);color:var(--ink)}
body.p-manage .gb-row button.gb-x{flex:0 0 auto;border:1.5px solid var(--hair);background:var(--paper);color:#9b1c1c;border-radius:var(--r);width:38px;font-size:1.1rem;font-weight:700;cursor:pointer}
body.p-manage .gb-add{margin-top:.2rem;background:var(--paper);color:var(--ink);border:1.5px solid var(--hair);border-radius:var(--r);padding:.5rem .8rem;font:inherit;font-family:var(--f-mono);font-weight:500;font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
body.p-manage .gb-add:hover{border-color:var(--ink)}
body.p-manage .gb-empty{color:var(--muted);font-size:.82rem;margin:.3rem 0 .5rem}
body.p-manage .reqbox{margin:.2rem 0 .4rem}
body.p-manage .req-hint{color:var(--muted);font-size:.82rem;line-height:1.45;margin:.2rem 0 .3rem}
body.p-manage .req-row{display:flex;align-items:center;gap:.5rem;padding:.5rem .1rem;font-size:.9rem;border-bottom:1px solid var(--hair-2)}
body.p-manage .req-row input[type=checkbox]{width:1.15rem;height:1.15rem;flex:0 0 auto;accent-color:var(--lime-deep)}
body.p-manage .req-sub{font-size:.8rem;font-weight:700;color:var(--ink-soft);margin:.7rem 0 .35rem}
body.p-manage .req-chips{display:flex;flex-wrap:wrap;gap:.4rem}
body.p-manage .req-chip{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;font-weight:600;padding:.35rem .6rem;border-radius:var(--r);border:1.5px solid var(--hair);background:var(--paper-2);color:var(--ink-soft);cursor:pointer}
body.p-manage .req-chip input{margin:0;accent-color:var(--lime-deep)}
body.p-manage .app-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
body.p-manage .app-actions .act-btn{font:inherit;font-size:.74rem;font-weight:600;border:1px solid var(--hair,#ccc);background:transparent;border-radius:999px;padding:6px 11px;cursor:pointer;text-decoration:none;color:inherit;min-height:34px;display:inline-flex;align-items:center}
body.p-manage .app-actions .act-btn:hover{border-color:currentColor}
body.p-manage .badge.st-new{background:#eef}
body.p-manage .badge.st-reviewed{background:#e8f0e8}
body.p-manage .badge.st-interview{background:#fff3cd}
body.p-manage .badge.st-rejected{background:#fdecea}
body.p-manage .badge.st-hired{background:#d7f0d7;font-weight:700}
body.p-manage .app-actions[data-archived] ~ *, body.p-manage .card.archived{opacity:.45}


/* ---- p-matrix  (matrix.php) ---- */
body.p-matrix{padding:14px 18px;max-width:none}
body.p-matrix h2{margin:4px 0 2px}
body.p-matrix .mx-sub{color:var(--muted);font-size:.85rem;max-width:860px;margin:0 0 12px}
body.p-matrix .mx-bar{display:flex;gap:12px;align-items:center;margin:0 0 12px;flex-wrap:wrap}
body.p-matrix .mx-bar select{font:inherit;font-family:var(--f-mono);font-size:.85rem;padding:7px 10px;border:1.5px solid var(--ink);background:var(--paper-2)}
body.p-matrix .mx-legend{font-family:var(--f-mono);font-size:.72rem;color:var(--muted);display:flex;gap:14px;flex-wrap:wrap}
body.p-matrix .mx-wrap{overflow:auto;border:1px solid var(--hair);max-height:82vh;background:var(--paper-2)}
body.p-matrix table.mx{border-collapse:collapse;font-family:var(--f-mono);font-size:.7rem}
body.p-matrix .mx th, body.p-matrix .mx td{border:1px solid var(--hair-2);padding:0;text-align:center;min-width:26px;height:24px}
body.p-matrix .mx thead th{position:sticky;top:0;background:var(--paper);z-index:3;height:150px;min-width:26px;vertical-align:bottom;padding:4px 2px}
body.p-matrix .mx thead th .rot{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;font-size:.66rem;font-weight:500;max-height:140px;overflow:hidden;text-overflow:ellipsis;display:inline-block}
body.p-matrix .mx tbody th{position:sticky;left:0;background:var(--paper);z-index:2;text-align:right;padding:2px 8px;white-space:nowrap;font-weight:500;font-size:.7rem}
body.p-matrix .mx .sect th{background:var(--ink);color:var(--paper);text-align:left;padding:3px 8px;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;position:sticky;left:0;z-index:2}
body.p-matrix .mx td.dot::after{content:'●';color:var(--ink);opacity:.75}
body.p-matrix .mx td.exp::after{content:'○';color:var(--ink);opacity:.55}
body.p-matrix .mx td.expcov::after{content:'○';color:#2f7d32}
body.p-matrix .mx td.expmiss::after{content:'○';color:#b3261e}
body.p-matrix .mx td.defin{outline:2px solid var(--ink);outline-offset:-2px}
body.p-matrix .mx td.cov::after{content:'●';color:#2f7d32}
body.p-matrix .mx td.miss::after{content:'●';color:#b3261e}
body.p-matrix .mx td.have{background:rgba(47,125,50,.08)}
body.p-matrix .mx tfoot td{position:sticky;bottom:0;background:var(--paper);font-weight:700;font-size:.62rem;padding:3px 1px;z-index:1}
body.p-matrix .mx tfoot .ok{color:#2f7d32}
body.p-matrix .mx tfoot .no{color:#b3261e}
body.p-matrix .mx tfoot th{position:sticky;left:0;bottom:0;background:var(--paper);z-index:2}


/* ---- p-packet  (packet.php) ---- */
body.p-packet .pk{max-width:720px;margin:0 auto;padding:0 14px 40px}
body.p-packet .pk-head{margin:16px 0 4px;font-size:1.2rem;font-weight:700}
body.p-packet .pk-sub{color:var(--muted);font-size:.85rem;margin:0 0 14px}
body.p-packet .pk-go{display:inline-flex;align-items:center;font-weight:700;background:var(--ink);color:var(--paper);border-radius:999px;padding:0 18px;height:44px;text-decoration:none;margin:6px 0 18px}
body.p-packet .pk-sec{background:var(--paper-2);border:1px solid var(--hair-2);border-radius:12px;margin:0 0 14px;overflow:hidden}
body.p-packet .pk-sec h3{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;margin:0;padding:10px 14px;border-bottom:1px solid var(--hair-2)}
body.p-packet .pk-note{font-size:.82rem;color:var(--ink-soft);padding:10px 14px;border-bottom:1px solid var(--hair-2);line-height:1.5}
body.p-packet .pk-note ul{margin:4px 0 0 18px;padding:0}
body.p-packet .fld{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--hair-2)}
body.p-packet .fld:last-child{border-bottom:none}
body.p-packet .fld .lb{font-family:var(--f-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);width:105px;flex:none}
body.p-packet .fld .vl{flex:1;font-size:.9rem;word-break:break-word}
body.p-packet .fld button{font-family:var(--f-mono);font-size:.66rem;font-weight:700;border:1px solid var(--hair);background:var(--paper);border-radius:999px;padding:6px 11px;cursor:pointer;flex:none;min-height:34px}
body.p-packet .fld button.did{background:var(--ink);color:var(--paper);border-color:var(--ink)}
body.p-packet .pk-blk{padding:12px 14px}
body.p-packet .pk-blk pre{white-space:pre-wrap;font-family:inherit;font-size:.86rem;line-height:1.55;margin:0 0 8px;max-height:340px;overflow:auto}
body.p-packet .chk{font-size:.86rem;padding:10px 14px;line-height:1.9}


/* ---- p-privacy  (privacy.php) ---- */
body.p-privacy .legal{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,3rem) clamp(1.15rem,5vw,2rem)}
body.p-privacy .legal h1{font-family:var(--f-disp);font-size:clamp(1.8rem,6vw,2.6rem);font-weight:800;letter-spacing:-.03em;margin:0 0 .3rem;color:var(--ink)}
body.p-privacy .legal .upd{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 2rem}
body.p-privacy .legal h2{font-family:var(--f-disp);font-size:1.2rem;font-weight:700;letter-spacing:-.02em;margin:2rem 0 .6rem;color:var(--ink)}
body.p-privacy .legal p, body.p-privacy .legal li{color:var(--ink-soft);line-height:1.65;font-size:1rem}
body.p-privacy .legal ul{margin:.4rem 0 .4rem 1.1rem;padding:0}
body.p-privacy .legal li{margin:.35rem 0}
body.p-privacy .legal a{color:var(--lime-deep,#3E5A6E);text-decoration:underline}
body.p-privacy .legal strong{color:var(--ink)}
body.p-privacy .legal .lead{font-size:1.06rem;color:var(--ink)}
body.p-privacy .legal .box{border:1px solid var(--hair);background:var(--paper-2);padding:1rem 1.15rem;margin:1.2rem 0}


/* ---- p-resumeview  (resume_view.php) ---- */
body.p-resumeview{margin:0;background:var(--paper);color:var(--ink);font-family:Georgia,'Times New Roman',serif;}
body.p-resumeview .toolbar{background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(10px);
    border-bottom:1px solid var(--hair);padding:11px 16px;display:flex;gap:12px;align-items:center;
    position:sticky;top:0;z-index:20;font-family:var(--f-mono);}
body.p-resumeview .toolbar a{color:var(--ink);text-decoration:none;font-size:.74rem;letter-spacing:.06em;
    text-transform:uppercase;border-bottom:2px solid var(--lime-deep);}
body.p-resumeview .toolbar .grow{flex:1;}
body.p-resumeview .dlbtn{background:var(--blue);color:#fff;border:1.5px solid var(--blue);padding:10px 20px;
    border-radius:var(--r);font-family:var(--f-mono);font-weight:600;font-size:.74rem;letter-spacing:.06em;
    text-transform:uppercase;cursor:pointer;white-space:nowrap;transition:background .2s var(--ease),transform .18s var(--ease);}
/* phone: the hint sentence is what wraps — hide it before the button ever has to (Rob 2026-07-23) */
@media(max-width:560px){body.p-resumeview .hint{display:none}}
body.p-resumeview .dlbtn:hover{background:var(--blue-d);transform:translateY(-2px);}
body.p-resumeview .hint{color:var(--muted);font-size:.7rem;font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;}
body.p-resumeview .page{max-width:720px;margin:24px auto;background:var(--paper-2);padding:48px 56px;
    border:1px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow-lg);}
body.p-resumeview h1{font-family:var(--f-disp);font-size:1.9rem;font-weight:800;letter-spacing:-.02em;margin:0 0 4px;color:var(--ink);}
body.p-resumeview .contact{font-size:.86rem;color:var(--muted);margin-bottom:16px;font-family:var(--f-mono);letter-spacing:.02em;}
body.p-resumeview h2{font-family:var(--f-mono);font-size:.82rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600;
    border-bottom:1.5px solid var(--ink);padding-bottom:4px;margin:20px 0 8px;color:var(--ink);}
body.p-resumeview p{margin:5px 0;font-size:.92rem;line-height:1.5;color:var(--ink-soft);}
body.p-resumeview p.entry{font-weight:700;margin-top:10px;color:var(--ink);}
body.p-resumeview ul{margin:4px 0 8px;padding-left:20px;}
body.p-resumeview li{font-size:.9rem;line-height:1.5;margin:3px 0;color:var(--ink-soft);}
@media print{
body.p-resumeview{background:#fff;}
body.p-resumeview .toolbar{display:none;}
body.p-resumeview .page{box-shadow:none;margin:0;max-width:none;padding:0;border:0;background:#fff;}
@page{margin:.6in;}}


/* ---- p-salaries  (salaries.php) ---- */
body.p-salaries .sl{max-width:860px;margin:0 auto;padding:0 14px 40px}
body.p-salaries .sl h1{font-size:1.3rem;margin:18px 0 4px}
body.p-salaries .sl .sub{color:var(--muted);font-size:.85rem;margin:0 0 16px;max-width:640px}
body.p-salaries .sl table{border-collapse:collapse;width:100%;font-size:.85rem}
body.p-salaries .sl th, body.p-salaries .sl td{border-bottom:1px solid var(--hair-2);padding:8px 10px;text-align:left}
body.p-salaries .sl thead th{font-family:var(--f-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
body.p-salaries .sl td.num{font-weight:700}
body.p-salaries .sl .n{font-family:var(--f-mono);font-size:.72rem;color:var(--muted)}
body.p-salaries .sl .tblwrap{overflow-x:auto}


/* ---- p-saved  (saved.php) ---- */
body.p-saved .floatbar{position:sticky;top:52px;z-index:15;display:flex;align-items:center;justify-content:space-between;
  background:var(--paper);padding:9px 4px;margin:0 0 12px;border-bottom:1px solid var(--hair)}
body.p-saved .floatbar .back{font-weight:600;text-decoration:none}
body.p-saved .scard{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:14px 16px;margin:0 0 10px}
body.p-saved .scard h3{margin:0 0 2px;font-size:1.05rem}
body.p-saved .scard .co{color:var(--muted);font-size:.9rem}
body.p-saved .scard .row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}
body.p-saved .badge{font-size:.72rem;font-weight:700;border-radius:var(--r);padding:2px 9px}
body.p-saved .b-applied{background:var(--lime);color:var(--ink)}
body.p-saved .b-meets{background:var(--blue);color:#fff}
body.p-saved .b-saved{background:var(--paper);color:var(--ink);box-shadow:0 0 0 1px var(--hair) inset}
body.p-saved .b-closed{background:#fdecea;color:#b3261e}
body.p-saved .scard a.kit{color:var(--ink);font-weight:600;text-decoration:none}
body.p-saved .scard .uns{margin-left:auto;color:var(--muted);background:none;border:0;cursor:pointer;font-size:.85rem}
body.p-saved .empty{color:var(--muted);text-align:center;padding:40px 0}


/* ---- p-search (search.php) — mobile-first browse REBUILT to the approved mockup (Rob 2026-07-22):
   ONE keyword field + a surfaced "Search in" scope bar + a Location field + a Filters BOTTOM SHEET.
   Honest cards (facts + freshness only; no match/qualify claims). PHP query logic unchanged. ---- */
body.p-search{background:var(--paper)}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}   /* unscoped: shared by jobs/saved/search h1s (2026-07-24) */
body.p-search .wrap{max-width:640px;margin:0 auto;padding:8px clamp(.9rem,4vw,1.5rem) 72px}
body.p-search form.search{padding:12px 0 2px}
/* search + location fields (leading icon inside a rounded box) */
body.p-search .sfield{display:flex;align-items:center;gap:10px;background:var(--paper-2);border:1.5px solid var(--line);border-radius:var(--r);padding:.78rem .9rem;margin-bottom:9px;transition:border-color .15s,box-shadow .15s}
body.p-search .sfield:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,86,255,.15)}
body.p-search .sfield .ic{flex:none;color:var(--muted)}
body.p-search .sfield input{flex:1;min-width:0;border:0;outline:0;background:none;font:inherit;font-size:1rem;color:var(--ink)}
body.p-search .sfield input::placeholder{color:var(--muted)}
/* "Search in" SCOPE BAR — surfaced RIGHT under the search field (Rob: "I don't see the search-in toggle") */
body.p-search .scoperow{display:flex;align-items:center;gap:9px;margin:0 0 10px}
body.p-search .scoplab{flex:none;font-family:var(--f-mono);font-size:.66rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
body.p-search .scope{flex:1;display:flex;gap:2px;background:var(--paper);border:1.5px solid var(--line);border-radius:100px;padding:3px}
body.p-search .scb{flex:1;font:inherit;font-size:.82rem;font-weight:600;color:var(--muted);background:none;border:0;border-radius:100px;padding:.42rem .4rem;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}
body.p-search .scb.on{background:var(--paper-2);color:var(--blue-d);box-shadow:0 1px 2px rgba(11,16,32,.13)}
body.p-search .scb:not(.on):hover{color:var(--ink)}
/* controls row: Filters (opens sheet) · Sort · Search */
body.p-search .sctrls{display:flex;align-items:center;gap:8px;margin-top:2px}
body.p-search .ctl{font:inherit;font-size:.85rem;font-weight:600;color:var(--ink);background:var(--paper-2);border:1.5px solid var(--line);border-radius:100px;padding:.5rem .95rem;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;line-height:1.1;-webkit-appearance:none;appearance:none}
body.p-search .ctl svg{flex:none}
body.p-search .fbtn2:hover{border-color:var(--ink)}
body.p-search .ctl .cnt{background:var(--blue);color:#fff;font-family:var(--f-mono);font-size:.64rem;font-weight:700;border-radius:100px;padding:.06rem .42rem;line-height:1.5}
body.p-search .ctl.sortsel{margin-left:auto;padding-right:1.85rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%235A6478' stroke-width='1.6' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center}
body.p-search .ctl.sortsel.on{border-color:var(--blue);color:var(--blue-d)}
body.p-search .ctl.go{background:var(--blue);color:#fff;border-color:var(--blue)}
body.p-search .ctl.go:hover{background:var(--blue-d)}
body.p-search .count{font-family:var(--f-mono);font-size:.8rem;color:var(--muted);margin:16px 0 12px;letter-spacing:.01em}
body.p-search .count b{color:var(--ink);font-weight:700}
body.p-search .count .live-note{color:var(--live)}
/* cards — honest: logo tile · title · org·loc · fact pills · "Verified live · added Xh ago" */
body.p-search .card{display:block;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:15px 16px 13px;margin:0 0 11px;transition:border-color .15s,box-shadow .15s,transform .15s;text-decoration:none;color:inherit}
body.p-search .card:hover{border-color:var(--ink);box-shadow:var(--shadow);transform:translateY(-2px)}
body.p-search .card-top{display:flex;gap:12px;align-items:flex-start}
body.p-search .clogo{flex:none;width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--f-disp);font-weight:800;font-size:.98rem;letter-spacing:-.02em}
body.p-search .card .ct-txt{min-width:0;flex:1}
body.p-search .card h2{font-family:var(--f-disp);font-size:1.1rem;font-weight:700;letter-spacing:-.01em;line-height:1.22;margin:0 0 3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.p-search .card .org{font-size:.9rem;color:var(--ink-soft);font-weight:600;line-height:1.35}
body.p-search .card .loc{color:var(--muted);font-weight:400}
body.p-search .pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
body.p-search .pill{font-family:var(--f-mono);font-size:.68rem;font-weight:600;letter-spacing:.02em;color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);border-radius:100px;padding:.24rem .62rem}
body.p-search .pill.pay{color:var(--blue-d);background:var(--lime);border-color:var(--lime-hi)}
body.p-search .live{display:flex;align-items:center;gap:7px;font-family:var(--f-mono);font-size:.74rem;color:var(--muted);margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
body.p-search .live b{color:var(--live);font-weight:700}
body.p-search .live .dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--live);box-shadow:0 0 0 3px rgba(18,183,106,.16)}
/* FILTER BOTTOM SHEET */
body.p-search .scrim{position:fixed;inset:0;background:rgba(11,16,32,.42);opacity:0;pointer-events:none;transition:opacity .2s;z-index:70}
body.p-search .sheet{position:fixed;left:0;right:0;bottom:0;background:var(--paper-2);border-radius:20px 20px 0 0;padding:8px 18px calc(20px + env(safe-area-inset-bottom));transform:translateY(100%);transition:transform .26s cubic-bezier(.2,.8,.2,1);z-index:71;max-height:84vh;max-height:84svh;overflow-y:auto;box-shadow:0 -12px 44px rgba(11,16,32,.2)}
body.filters-open .scrim{opacity:1;pointer-events:auto}
body.filters-open .sheet{transform:translateY(0)}
body.p-search .grip{width:38px;height:5px;border-radius:3px;background:var(--line);margin:6px auto 12px}
body.p-search .sh-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
body.p-search .sh-head h3{font-family:var(--f-disp);font-size:1.28rem;font-weight:800;margin:0}
body.p-search .sh-reset{font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--blue-d);text-decoration:none}
body.p-search .grp{margin-top:17px}
body.p-search .grp .lab{font-family:var(--f-mono);font-size:.67rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:9px}
body.p-search .sheet .chips{display:flex;flex-wrap:wrap;gap:8px}
body.p-search .sheet .chip{position:relative;display:inline-flex;align-items:center;font:inherit;font-size:.88rem;font-weight:600;text-transform:none;letter-spacing:0;box-shadow:none;color:var(--ink);background:var(--paper-2);border:1.5px solid var(--line);border-radius:100px;padding:.5rem .9rem;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .12s,background .12s,color .12s}
body.p-search .sheet .chip input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
body.p-search .sheet .chip:has(input:checked){border-color:var(--blue);background:rgba(46,86,255,.08);color:var(--blue-d)}
body.p-search .sheet .chip:has(input:checked)::before{content:"\2713";margin-right:.35rem;font-weight:800;font-size:.82em}
body.p-search .sheet .tog{display:flex;align-items:center;gap:12px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px 14px;cursor:pointer}
body.p-search .sheet .tog .tt-wrap{flex:1}
body.p-search .sheet .tog .t{display:block;font-size:.92rem;font-weight:600;color:var(--ink)}
body.p-search .sheet .tog .s{display:block;font-size:.78rem;color:var(--muted);margin-top:2px}
body.p-search .sheet .tog input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
body.p-search .sheet .tog .sw{flex:none;width:46px;height:28px;border-radius:100px;background:var(--line);position:relative;transition:background .18s}
body.p-search .sheet .tog .sw::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .18s}
body.p-search .sheet .tog input:checked ~ .sw{background:var(--blue)}
body.p-search .sheet .tog input:checked ~ .sw::after{transform:translateX(18px)}
body.p-search .sh-cta{position:sticky;bottom:0;margin-top:22px;width:100%;font:inherit;font-size:1rem;font-weight:700;color:#fff;background:var(--blue);border:0;border-radius:14px;padding:15px;cursor:pointer;box-shadow:0 -10px 18px -6px rgba(11,16,32,.28)}   /* sticky: always visible while the filter chips scroll (Rob 2026-07-23 — it was below the fold) */
body.p-search .sh-cta:hover{background:var(--blue-d)}
@media(min-width:720px){body.p-search .sheet{max-width:460px;left:50%;right:auto;transform:translate(-50%,100%);border-radius:20px 20px 0 0}body.filters-open .sheet{transform:translate(-50%,0)}}
body.p-search .promo{background:var(--band);color:#EAF0FB;border-radius:var(--r-lg);padding:16px 17px;margin:2px 0 11px}
body.p-search .promo b{color:#fff}
body.p-search .promo .promo-txt{font-size:.92rem;line-height:1.5;color:#9FAAC2}
body.p-search .promo .soon{color:#7FA0FF}
body.p-search .promo form{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
body.p-search .promo input{flex:1 1 170px;min-width:0;font:inherit;font-size:.95rem;padding:.7rem .9rem;border:1px solid var(--hairInv);border-radius:var(--r);background:rgba(255,255,255,.06);color:#fff;-webkit-appearance:none}
body.p-search .promo input::placeholder{color:#8A94AC}
body.p-search .promo .go{flex:none;font:inherit;font-weight:700;font-size:.9rem;color:#fff;background:var(--blue);border:0;border-radius:var(--r);padding:.7rem 1.15rem;cursor:pointer}
body.p-search .promo .go:hover{background:var(--blue-d)}
body.p-search .promo .getm{flex:none;color:#9FB6FF;font-weight:700;font-size:.9rem;text-decoration:none}
body.p-search .promo .getm:hover{color:#fff}
body.p-search .promo .intmsg{flex-basis:100%;font-size:.84rem;color:#9FAAC2}
body.p-search .pager{display:flex;justify-content:space-between;gap:10px;margin-top:18px}
body.p-search .pager span{flex:1}
body.p-search .pager a{font-family:var(--f-mono);font-size:.82rem;font-weight:600;color:var(--blue-d);text-decoration:none;padding:.5rem .95rem;border:1.5px solid var(--line);border-radius:100px}
body.p-search .pager a:hover{border-color:var(--blue);background:rgba(46,86,255,.05)}
body.p-search .empty{text-align:center;color:var(--muted);padding:44px 20px;font-family:var(--f-mono);font-size:.9rem;line-height:1.6}

/* ---- p-success  (success.php) ---- */
body.p-success *{box-sizing:border-box}
body.p-success{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-body);display:flex;flex-direction:column;min-height:100vh}
body.p-success .okwrap{flex:1;display:flex;align-items:center;justify-content:center;padding:20px}
body.p-success .okcard{width:100%;max-width:440px;background:var(--paper-2);border:1.5px solid var(--ink);border-radius:var(--r);padding:32px 24px;text-align:center;box-shadow:var(--shadow-lg)}
body.p-success .check{font-size:2.6rem;margin:6px 0}
body.p-success .okcard h1{font-family:var(--f-disp);font-weight:800;font-size:1.4rem;letter-spacing:-.02em;margin:6px 0}
body.p-success .okcard p{color:var(--muted);margin:0 0 8px}
body.p-success .who{color:var(--ink);font-weight:700}
body.p-success .okcard a{color:var(--ink);font-family:var(--f-mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;border-bottom:2px solid var(--lime-deep)}


/* ---- p-terms  (terms.php) ---- */
body.p-terms .legal{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,3rem) clamp(1.15rem,5vw,2rem)}
body.p-terms .legal h1{font-family:var(--f-disp);font-size:clamp(1.8rem,6vw,2.6rem);font-weight:800;letter-spacing:-.03em;margin:0 0 .3rem;color:var(--ink)}
body.p-terms .legal .upd{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 2rem}
body.p-terms .legal h2{font-family:var(--f-disp);font-size:1.2rem;font-weight:700;letter-spacing:-.02em;margin:2rem 0 .6rem;color:var(--ink)}
body.p-terms .legal p, body.p-terms .legal li{color:var(--ink-soft);line-height:1.65;font-size:1rem}
body.p-terms .legal ul{margin:.4rem 0 .4rem 1.1rem;padding:0}
body.p-terms .legal li{margin:.35rem 0}
body.p-terms .legal a{color:var(--lime-deep,#3E5A6E);text-decoration:underline}
body.p-terms .legal strong{color:var(--ink)}
body.p-terms .legal .lead{font-size:1.06rem;color:var(--ink)}


/* ---- p-waitlist  (waitlist.php) ---- */
body.p-waitlist .wl{max-width:480px;margin:0 auto;padding:24px 16px 40px}
body.p-waitlist .wl h1{font-size:1.35rem;margin:14px 0 8px}
body.p-waitlist .wl p{color:var(--muted);font-size:.92rem;line-height:1.6}
body.p-waitlist .wl form{margin-top:16px}
body.p-waitlist .wl input[type=email], body.p-waitlist .wl input[type=text]{width:100%;font:inherit;padding:12px;border:1.5px solid var(--ink);background:var(--paper-2);margin:0 0 10px;box-sizing:border-box}
body.p-waitlist .wl button{width:100%;font:inherit;font-weight:700;background:var(--ink);color:var(--paper);border:none;border-radius:999px;height:48px;cursor:pointer}
body.p-waitlist .wl .fine{font-size:.72rem;color:var(--muted);margin-top:10px;line-height:1.5}
body.p-waitlist .wl .ok{background:var(--paper-2);border:1px solid var(--hair);border-radius:12px;padding:18px;text-align:center}


/* ---- p-post-index  (post/index.php) ---- */
body.p-post-index .wrap{max-width:560px;margin:0 auto;padding:22px 16px}
body.p-post-index .hero{text-align:center;margin:8px 0 18px}
body.p-post-index .hero h1{font-family:var(--f-disp);font-size:1.9rem;font-weight:800;letter-spacing:-.03em;margin:0 0 6px}
body.p-post-index .hero p{color:var(--ink-soft);margin:0}
body.p-post-index .brand{font-family:var(--f-disp);font-weight:800;color:var(--ink)}
body.p-post-index .card{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:20px}
body.p-post-index label{display:block;font-family:var(--f-mono);font-weight:500;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 5px}
body.p-post-index input, body.p-post-index textarea{width:100%;padding:11px 12px;border:1.5px solid var(--ink);border-radius:var(--r);font:inherit;font-family:var(--f-body);background:var(--paper-2);color:var(--ink)}
body.p-post-index input:focus-visible, body.p-post-index textarea:focus-visible{outline:none;box-shadow:var(--shadow-lg)}
body.p-post-index textarea{min-height:90px;resize:vertical}
body.p-post-index .row{display:flex;gap:10px}
body.p-post-index .row>div{flex:1}
body.p-post-index .btn{margin-top:18px;width:100%;justify-content:center;background:var(--blue);color:#fff;border:1.5px solid var(--blue);border-radius:var(--r);padding:13px;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .18s var(--ease),background .2s var(--ease)}
body.p-post-index .btn:hover{background:var(--blue-d);transform:translateY(-2px)}
body.p-post-index .err{background:#fdecec;color:#9b1c1c;border-radius:var(--r);padding:10px 12px;margin:0 0 12px;font-size:.9rem;box-shadow:0 0 0 1px #e7a9a9 inset}
body.p-post-index .hint{color:var(--muted);font-family:var(--f-body);font-size:.78rem;letter-spacing:0;text-transform:none;margin:5px 0 0}
body.p-post-index .tick{width:54px;height:54px;border-radius:var(--r);background:var(--lime);color:var(--ink);font-size:30px;line-height:54px;margin:0 auto 14px;display:block;text-align:center;box-shadow:0 0 0 1px var(--ink) inset}
body.p-post-index .done h2{font-family:var(--f-disp);font-size:1.5rem;font-weight:800;letter-spacing:-.02em;margin:0 0 8px;text-align:center}
body.p-post-index .done p{color:var(--ink-soft);text-align:center;margin:8px 0}
body.p-post-index .perks{display:flex;gap:8px 14px;justify-content:center;flex-wrap:wrap;margin:14px 0 0;color:var(--lime-deep);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;font-weight:600}
body.p-post-index .foot{color:var(--muted);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.03em;margin-top:18px;text-align:center}


/* ---- p-post-job  (post/job.php) ---- */
body.p-post-job .wrap{max-width:680px;margin:0 auto;padding:24px 18px}
body.p-post-job .card{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:24px}
body.p-post-job h1{font-family:var(--f-disp);font-size:1.6rem;font-weight:800;letter-spacing:-.025em;margin:0 0 4px}
body.p-post-job .org{color:var(--muted);font-family:var(--f-mono);font-size:.84rem;margin:0 0 14px}
body.p-post-job .vbadge{display:inline-block;margin-left:8px;font-family:var(--f-mono);font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;background:var(--lime);color:var(--ink);box-shadow:0 0 0 1px var(--ink) inset;cursor:help}
body.p-post-job .chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
body.p-post-job .chip{background:var(--paper);color:var(--ink-soft);border-radius:var(--r);padding:4px 12px;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;font-weight:500;box-shadow:0 0 0 1px var(--hair) inset}
body.p-post-job .desc{white-space:pre-wrap;margin:14px 0 22px;color:var(--ink-soft);line-height:1.6}
body.p-post-job .apply{display:inline-block;background:var(--blue);color:#fff;text-decoration:none;padding:12px 26px;border:1.5px solid var(--blue);border-radius:var(--r);font-weight:600;transition:transform .18s var(--ease),background .2s var(--ease)}
body.p-post-job .apply:hover{background:var(--blue-d);transform:translateY(-2px)}
body.p-post-job .apply-top{margin:.35rem 0 1rem}
body.p-post-job .foot{color:var(--muted);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.03em;margin-top:18px}


/* ---- p-jobs-index  (jobs/index.php) ---- */
body.p-jobs-index *{box-sizing:border-box}
body.p-jobs-index html, body.p-jobs-index{margin:0}
body.p-jobs-index{color:var(--ink);background:<?= $embed ? 'transparent' : 'var(--paper)' ?>}
body.p-jobs-index .wrap{max-width:680px;margin:0 auto;padding:<?= $embed ? '4px 0 8px' : '24px 18px' ?>}
body.p-jobs-index .head{margin:0 0 16px}
body.p-jobs-index .head h1{font-family:var(--f-disp);font-weight:800;letter-spacing:-.02em;font-size:1.35rem;margin:0 0 4px}
body.p-jobs-index .head .sub{color:var(--muted);font-family:var(--f-mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase}
body.p-jobs-index .card{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:18px;margin:0 0 12px;transition:box-shadow .22s var(--ease),transform .22s var(--ease),border-color .22s var(--ease)}
body.p-jobs-index .card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px);border-color:var(--ink)}
body.p-jobs-index .card h2{font-family:var(--f-disp);font-weight:700;letter-spacing:-.02em;font-size:1.12rem;margin:0 0 8px}
body.p-jobs-index .chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
body.p-jobs-index .chip{background:var(--paper);color:var(--ink-soft);border-radius:var(--r);padding:3px 10px;font-family:var(--f-mono);font-size:.66rem;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 0 0 1px var(--hair) inset}
body.p-jobs-index .snip{color:var(--ink-soft);font-size:.92rem;line-height:1.55;margin:0 0 16px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
body.p-jobs-index .apply{display:inline-block;background:var(--blue);color:#fff;border:1.5px solid var(--blue);border-radius:var(--r);text-decoration:none;padding:11px 24px;font-weight:600;font-size:.92rem;transition:transform .18s var(--ease),background .2s var(--ease)}
body.p-jobs-index .apply:hover{background:var(--blue-d);transform:translateY(-2px)}
body.p-jobs-index .empty{background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r);padding:28px 24px;color:var(--muted);text-align:center;font-family:var(--f-mono);letter-spacing:.03em}
body.p-jobs-index .foot{color:var(--muted);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.03em;margin-top:16px;text-align:center}

/* ---- p-index additions: seeker "Get matched" concierge section (Rob 2026-07-13) ---- */
body.p-index .sec-h{margin-top:.7rem}
body.p-index .seek-sec .sec-h em{font-style:normal;color:var(--blue)}
body.p-index .hiw{display:grid;grid-template-columns:1fr;gap:.9rem;margin:1.9rem 0 0}
@media(min-width:760px){body.p-index .hiw{grid-template-columns:repeat(3,1fr);gap:1.1rem}}
body.p-index .step{display:flex;gap:.75rem;align-items:flex-start;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.1rem 1.15rem}
body.p-index .step .n{flex:none;width:28px;height:28px;border-radius:50%;background:var(--blue);color:#fff;font-family:var(--disp);font-weight:800;font-size:.95rem;display:grid;place-items:center;line-height:1}
body.p-index .step b{display:block;font-family:var(--disp);font-weight:800;font-size:1.02rem;letter-spacing:-.01em;margin-bottom:.2rem;line-height:1.15}
body.p-index .step span{color:var(--dim);font-size:.9rem;line-height:1.45}
body.p-index .seek-sec .cta{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-top:1.8rem}
body.p-index .seek-sec .cta .note{color:var(--dim);font-family:var(--mono);font-size:.8rem}
body.p-index .orbrowse{margin-top:1.8rem}
body.p-index .orbrowse .sbar{margin-top:.5rem}
body.p-index .orbrowse .lbl,body.p-index .roles-at .lbl{display:block;font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin-bottom:.5rem}
body.p-index .roles-at{margin-top:1.7rem}

body.p-index .footer-logo{font-size:1.1rem}

/* ============ body.p-profile — the one place: Skills / Résumé & cover letters / Settings ============ */
/* Collapsible accordion sections (mobile-first: single column, big tap targets, no JS needed to open). */
body.p-profile .wrap{max-width:760px}
body.p-profile h1{margin:.2rem 0 1rem}
body.p-profile .pfsec{border:1.5px solid var(--ink);border-radius:var(--r-lg,10px);background:var(--paper-2);margin:0 0 14px;overflow:hidden}
body.p-profile .pfsec>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:15px 18px;font-family:var(--disp,inherit);font-weight:800;font-size:1.12rem;letter-spacing:-.01em;color:var(--ink);
  background:var(--paper-2);-webkit-tap-highlight-color:transparent}
body.p-profile .pfsec>summary::-webkit-details-marker{display:none}
body.p-profile .pfsec>summary .chev{flex:none;transition:transform .18s ease;color:var(--muted);font-size:1rem}
body.p-profile .pfsec[open]>summary{border-bottom:1px solid var(--hair)}
body.p-profile .pfsec[open]>summary .chev{transform:rotate(90deg)}
body.p-profile .pfsec>summary .pfhint{margin-left:auto;margin-right:6px;font-family:inherit;font-weight:500;font-size:.78rem;color:var(--muted)}
body.p-profile .pfbody{padding:16px 18px 20px}
body.p-profile .pfbody>section{margin:0 0 6px;padding:0;background:none;border:0}   /* neutralize legacy inner section chrome */
body.p-profile .pfbody h2{font-size:1rem;margin:18px 0 6px}
body.p-profile .pfbody h2:first-child,body.p-profile .pfbody>*:first-child h2{margin-top:0}
/* Résumé & cover-letter section */
body.p-profile .rzlist{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
body.p-profile .rzitem{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--hair);border-radius:var(--r,8px);background:var(--paper)}
body.p-profile .rzitem .rzname{font-weight:700;color:var(--ink);flex:1;min-width:150px}
body.p-profile .rzitem a{text-decoration:none;border:1.5px solid var(--ink);border-radius:0;padding:5px 12px;font-size:.82rem;color:var(--ink);background:var(--paper-2);white-space:nowrap}
body.p-profile .rzitem a.dl{background:var(--lime)}
body.p-profile .basecl{white-space:pre-wrap;font-size:.9rem;line-height:1.5;color:var(--ink);background:var(--paper);border:1px solid var(--hair);border-radius:var(--r,8px);padding:13px 15px;margin:8px 0}
body.p-profile .clnote{color:var(--muted);font-size:.82rem;margin:4px 0 0}
/* Free-courses fold inside the demand panel */
body.p-profile .dscourses{margin:8px 0 2px}
body.p-profile .dscourses>summary{cursor:pointer;font-size:.85rem;color:var(--blue,#1B3ED6);font-weight:600}
body.p-profile .dscourses ul{margin:8px 0 0;padding-left:18px}
body.p-profile .dscourses li{margin:4px 0;font-size:.85rem}
body.p-profile .dscourses li .cprov{color:var(--muted);font-size:.76rem;margin-left:6px}
@media (max-width:640px){
  body.p-profile .pfsec>summary{padding:14px 14px;font-size:1.05rem}
  body.p-profile .pfbody{padding:14px}
  body.p-profile .pform input:not([type=checkbox]):not([type=radio]),body.p-profile .pform select{width:100%}
  body.p-profile .rzitem a{flex:1;text-align:center}
}

/* ============ p-profile / p-settings — two-page split (Rob 2026-07-15): Profile = professional self, ============
   Settings = account/preferences/search. Clean stacked cards, no accordions (fewer sections per page now). */
body.p-profile .wrap, body.p-settings .wrap{max-width:760px}
body.p-profile h1, body.p-settings h1{margin:.2rem 0 .3rem}
body.p-profile .pfcard, body.p-settings .pfcard{border:1.5px solid var(--ink);border-radius:var(--r-lg,10px);background:var(--paper-2);padding:16px 18px 20px;margin:0 0 16px}
body.p-profile .pfcard>h2:first-child, body.p-settings .pfcard>h2:first-child{margin-top:0}
body.p-profile .pfcard h2, body.p-settings .pfcard h2{font-family:var(--disp,inherit);font-weight:800;font-size:1.15rem;letter-spacing:-.01em;margin:0 0 6px}
@media (max-width:640px){
  body.p-profile .pfcard, body.p-settings .pfcard{padding:14px}
  body.p-settings .pform input:not([type=checkbox]):not([type=radio]), body.p-settings .pform select{width:100%}
}

/* skills grouped by broad category (Rob 2026-07-15) — small uppercase label above each group's pills */
body.p-profile .skgroup{margin:0 0 12px}
body.p-profile .skglabel{font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 5px}

/* Education & licenses — multiple degree/license rows (Rob 2026-07-15) */
body.p-profile .edform{display:flex;flex-direction:column;gap:6px;max-width:560px}
body.p-profile .edsub{font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:16px 0 4px}
body.p-profile .edform>.edsub:first-child{margin-top:0}
body.p-profile .degrow{position:relative;border:1px solid var(--hair);border-radius:var(--r,8px);background:var(--paper);padding:12px 12px 6px;margin:0 0 8px}
body.p-profile .degmeta{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:8px 0}
body.p-profile .edform label.fld,body.p-profile .degmeta label{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--ink)}
body.p-profile .edform label.fld{margin:0 0 6px}
body.p-profile .edform input,body.p-profile .edform select{padding:8px;border:1.5px solid var(--ink);border-radius:0;background:var(--paper-2);font-size:14px}
body.p-profile .degmeta .yr input{width:74px}
body.p-profile .degmeta label.chk{flex-direction:row;align-items:center;gap:6px;font-weight:600;white-space:nowrap;padding-bottom:8px}
body.p-profile .degmeta label.chk input{padding:0}
body.p-profile .licrow{display:flex;gap:6px;align-items:center;margin:0 0 6px}
body.p-profile .licrow input{flex:1}
body.p-profile .lichdr{display:block;font-size:12px;font-weight:700;color:var(--muted);margin:2px 0}
body.p-profile .edcol{margin:0 0 10px}
body.p-profile .rowdel{border:none;background:none;color:var(--muted);cursor:pointer;font-weight:700;font-size:15px;line-height:1;padding:2px 4px}
body.p-profile .degrow .rowdel{position:absolute;top:6px;right:6px}
body.p-profile .addrow{background:var(--paper-2);color:var(--ink);border:1.5px dashed var(--ink);border-radius:0;padding:7px 14px;font-weight:600;font-size:13px;cursor:pointer;align-self:flex-start;margin:2px 0 4px}
body.p-profile .addrow.sm{border-style:solid;padding:5px 12px;font-size:12px}
body.p-profile .savebtn{align-self:flex-start;background:var(--lime);color:var(--ink);border:1.5px solid var(--ink);border-radius:0;padding:9px 18px;font-weight:600;cursor:pointer;margin-top:10px}
@media (max-width:640px){ body.p-profile .degmeta label:not(.chk){flex:1;min-width:110px} }

/* Education: highlighted coursework + in-progress state (Rob 2026-07-15: early-career = students are common) */
body.p-profile .edform textarea{padding:8px;border:1.5px solid var(--ink);border-radius:0;background:var(--paper-2);font-size:14px;font-family:inherit;resize:vertical;width:100%}
body.p-profile .fld.cw{background:var(--lime);border-radius:var(--r,8px);padding:9px 11px;margin:8px 0 2px}
body.p-profile .fld.cw small{color:var(--ink-soft)}
body.p-profile .degrow.inprog{border-left:4px solid var(--lime-deep,var(--blue));background:var(--paper-2)}
body.p-profile .degmeta label.chk{cursor:pointer}

/* AI/employer JD markdown rendered to HTML (jd_html in post/_cfg.php) — post/job.php .jd-body */
.jd-body .jd-h{font-size:1.02rem;font-weight:700;margin:1.15em 0 .35em;line-height:1.3}
.jd-body .jd-h:first-child{margin-top:0}
.jd-body .jd-ul{margin:.4em 0 .85em;padding-left:1.2em}
.jd-body .jd-ul li{margin:.28em 0}
.jd-body p{margin:.55em 0}
.jd-body strong{font-weight:700}

/* ================================================================================
   AUDIT SWEEP MERGE 2026-07-24 — inline-style migration fragments (one block per page,
   all rules page-scoped body.p-*). Source fragments: session scratchpad cssfrag/. */

/* ---- apply_php ---- */
/* apply.php — inline-style migration + tap targets (scoped to body.p-apply) */
body.p-apply .apply-jd{margin:1.1rem 0 1.4rem}
body.p-apply .lab .lab-opt{color:var(--muted);font-weight:400}
body.p-apply .file-hint{color:var(--muted);font-size:.8rem}
body.p-apply label.fld.fld-years{margin-bottom:10px}
body.p-apply #bg-years{width:6em}
/* tap targets: skill/license chip-remove × was ~16px; expand hit area without inflating the chip */
body.p-apply .chipedit .c b{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;margin:-9px -12px -9px -5px}
body.p-apply .chipadd button{min-height:44px}

/* ---- faq_php ---- */
/* faq.php — inline-style migration fragment, scoped to body.p-faq */

/* small inline feature icon (check/bolt SVGs replacing emoji labels) */
body.p-faq .fico{display:inline-block;vertical-align:-2px;width:15px;height:15px;margin-right:5px}

/* bottom CTA row (was style="text-align:center;margin-top:20px"); links padded to ~44px tap targets,
   margin reduced to keep the same visual gap */
body.p-faq .faq-cta{text-align:center;margin-top:8px}
body.p-faq .faq-cta a{display:inline-block;padding:12px 10px;line-height:20px}

/* ---- j_php ---- */
/* j.php — public job page (body.p-j) inline-style migration */
body.p-j .jbackbar{padding:4px 0 0}
/* back link had NO stylesheet rule (bare default link); styled to match the .pjback
   back-link pattern, with ~44px effective tap target on phones */
body.p-j .jback{display:inline-block;font-family:var(--f-mono);font-size:.74rem;color:var(--muted);text-decoration:none;padding:12px 14px 10px 0}
body.p-j .jback:hover{color:var(--blue)}
body.p-j .jfoot{font-family:var(--f-mono);font-size:.68rem;color:var(--muted);border-top:1px solid var(--hair-2);margin-top:18px;padding-top:10px}

/* ---- job_php ---- */
/* ---- job.php inline-style migration (scoped to body.p-job) ---- */

/* small inline SVG icons sit on the text baseline */
body.p-job .ic{vertical-align:-2px}

/* apply-button color variants (were repeated inline background/color pairs) */
body.p-job .apply-btn.lime{background:var(--lime);color:var(--ink)}
body.p-job .apply-btn.lime:hover{background:var(--lime-hi)}
body.p-job .apply-btn.dark{background:var(--ink);color:var(--paper)}
body.p-job .apply-btn.dark:hover{background:var(--ink-soft)}

/* action row under the cover-letter / résumé textareas */
body.p-job .btnrow{margin-top:.5em;display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* tailored résumé + cover-letter reveal */
body.p-job .kitreveal{margin:14px 0;border:1.5px solid var(--ink)}
body.p-job .kitreveal>summary{cursor:pointer;font-weight:700;padding:13px 16px}
body.p-job .kitreveal .kitsub{font-weight:400;color:var(--muted);font-size:.85rem}
body.p-job .kitreveal .kitbody{padding:2px 16px 14px}

/* lime variant of the site flash banner (free-tier quota notice) */
body.p-job .flash.lime{background:var(--lime);border-color:var(--ink);color:var(--ink)}

/* tightened section sub-line + quota note + margin utilities */
body.p-job .sub.tight{margin:.2em 0 .6em}
body.p-job .quota{font-size:12px;color:var(--muted)}
body.p-job .mt4{margin-top:.4em}
body.p-job .mt12{margin-top:12px}

/* ---- phone tap targets (~44px effective) ---- */
body.p-job .copy{min-height:44px;padding:11px 18px}
body.p-job .apply-btn.small{min-height:44px}
body.p-job .chip.gapfill{min-height:44px;padding:10px 12px;display:inline-flex;align-items:center;text-align:left}
/* extend hit area of the small floatbar controls without shifting the sticky bar's layout */
body.p-job .floatbar .back,body.p-job .floatbar .jshare{position:relative}
body.p-job .floatbar .back::after,body.p-job .floatbar .jshare::after{content:"";position:absolute;left:0;right:0;top:-8px;bottom:-8px}

/* ---- jobs_php ---- */
/* jobs.php inline-style sweep fragment — scoped to body.p-jobs */

/* onboarding interstitial (echoed pre-row page): solo firstrun card sits lower on the page.
   max-width:560px comes from the existing body.p-jobs .firstrun rule. */
body.p-jobs .firstrun.fr-solo{margin:48px auto}

/* lime flash variant (addingjob) — was inline background/border/color */
body.p-jobs .flash.flash-lime{background:var(--lime);border-color:var(--ink);color:var(--ink)}

/* inline-SVG icon alignment (replaced emoji in flashes, feed tabs, firstrun steps) */
body.p-jobs .flash svg{vertical-align:-2px;margin-right:2px}
body.p-jobs .tico svg{vertical-align:-2px}
body.p-jobs .fr-ic svg{align-self:center}

/* tab-pane spacing — was inline margin/padding */
body.p-jobs .tabpane .mainsub{margin:6px 0 12px}
body.p-jobs .tabpane .empty{padding:18px 0}

/* tap targets (~44px effective on phones) */
body.p-jobs .undo-strip button.undo-btn{min-height:44px;padding:8px 18px}
@media (max-width:520px){
  body.p-jobs .feedctl .fc select{min-height:44px}
}

/* ---- join_php ---- */
/* join.php inline-style migration — all rules scoped to body.p-join */

/* muted helper (style.css only defines .mut inside .consent for this page) */
body.p-join .mut{color:var(--muted)}

/* hero step list */
body.p-join .steps{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 16px;font-size:13.5px;color:var(--muted)}
body.p-join .steps b{color:var(--ink)}
body.p-join .steps .sub{opacity:.8}
body.p-join .hero-note{margin:8px 0 0;font-size:13px;color:var(--muted)}

/* card headings + inline icons */
body.p-join .card h2{font-family:var(--f-disp);font-weight:800;letter-spacing:-.02em;margin:0 0 8px}
body.p-join .ic{vertical-align:-2px;margin-left:2px}
body.p-join .ic-ok{color:var(--live)}

/* one-time-code inputs */
body.p-join .code-in{letter-spacing:.4em;font-size:1.3rem;text-align:center}

/* inline (non-block) labels inside checkbox rows */
body.p-join label.lbl-inline{display:inline;text-transform:none;font-family:var(--f-body);letter-spacing:0;color:var(--ink);margin:0}
body.p-join label.lbl-inline.mut{color:var(--muted)}
/* de-mono'd suffix inside a block label */
body.p-join .lbl-sub{text-transform:none;letter-spacing:0}

/* radius row under the city input */
body.p-join .mi-row{display:flex;gap:8px;align-items:center;margin:4px 0 2px}
body.p-join select,body.p-join textarea{font:inherit;border:1.5px solid var(--ink);border-radius:var(--r);padding:8px 10px;background:var(--paper-2);color:var(--ink)}

/* upload / build-profile mode tabs (JS toggles .on and .hide) */
body.p-join .mode-tabs{display:flex;gap:8px;margin:10px 0 4px}
body.p-join .mode-tab{flex:1;min-height:44px;padding:10px 8px;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper-2);color:var(--ink);font:inherit;cursor:pointer}
body.p-join .mode-tab.on{background:var(--ink);color:var(--paper-2)}
body.p-join .mode-tab .sub{opacity:.7}
body.p-join .hide{display:none}

/* build-my-profile pane */
body.p-join .pane-form{border:1px solid var(--line);border-radius:var(--r);padding:10px;margin:6px 0}
body.p-join .pane-form input:not([type=checkbox]){font:inherit;border:1.5px solid var(--hair);border-radius:var(--r-sm);padding:8px 10px;background:var(--paper-2);color:var(--ink)}
body.p-join .jdeg{margin:4px 0 8px;padding-bottom:6px;border-bottom:1px dashed var(--line)}
body.p-join .exprow{border-bottom:1px dashed var(--hair);padding:4px 0}
body.p-join .note-mt{margin-top:6px}

/* field widths (stack on small phones — 48%/38% pairs are too narrow at 375px) */
body.p-join .fw{width:100%;margin:2px 0}
body.p-join .w-half{width:48%;margin:2px 0}
body.p-join .w-yr{width:20%;min-width:5.5em;margin:2px 4px}
body.p-join .w-loc{width:38%;margin:2px 0}
body.p-join .w-cert{width:68%;margin:2px 0}
@media (max-width:560px){
  body.p-join .w-half,body.p-join .w-loc,body.p-join .w-cert{width:100%}
}

/* add-row buttons — 44px effective tap target */
body.p-join .add-btn{display:inline-flex;align-items:center;gap:6px;min-height:44px;background:none;border:1px solid var(--hair);border-radius:var(--r-sm);padding:9px 14px;font:inherit;color:var(--ink);cursor:pointer;margin:2px 0 6px}

/* employment-type pills — lift under-40px tap height to ~44px */
body.p-join .pills label{padding:11px 14px}

/* ---- manage-help_php ---- */
/* manage-help.php — alignment for the inline SVG action icons (calendar/check/x/star/mail)
   that replaced the 📅 ✓ ✗ ★ ✉ glyphs in the "One-tap actions" list. */
body.p-manage-help .hic{vertical-align:-2px}

/* ---- manage-resume_php ---- */
/* manage-resume.php — no new rules needed.
   The file is a binary résumé streamer; its only HTML output is the new error shell,
   which deliberately reuses the existing body.p-manage / .box / .brand rules already
   in style.css (same surface as manage.php's vh_manage_404 shell — reuse, not a copy). */

/* ---- manage_php ---- */
/* manage.php — inline-style migration fragment (scoped to body.p-manage) */

/* Bootstrap / pending / error shell screens */
body.p-manage .box a{color:var(--blue-d);text-decoration:underline}
body.p-manage .dot svg{display:block;margin:14px auto}

/* Add-to-Home-Screen hint (JS toggles .show; dismiss removes it) */
body.p-manage .a2hs{display:none;background:var(--ink);color:var(--paper);border-radius:0;padding:.7rem .9rem;margin-bottom:1rem;font-size:.9rem;align-items:center;justify-content:space-between;gap:.7rem}
body.p-manage .a2hs.show{display:flex}
body.p-manage .a2hs svg{vertical-align:-2px;margin-right:2px}
body.p-manage .a2hs-x{background:transparent;border:0;color:var(--paper);font-size:1.15rem;line-height:1;cursor:pointer;flex:0 0 auto;min-width:44px;min-height:44px;padding:0;margin:-.55rem -.6rem -.55rem 0}

/* Inline SVG icon alignment */
body.p-manage .helprow a svg{vertical-align:-3px;margin-right:3px}
body.p-manage .app-actions .act-btn svg{flex:0 0 auto;margin-right:5px}
body.p-manage .fwd-yes svg{vertical-align:-2.5px;margin-right:2px}
body.p-manage .vbadge svg{vertical-align:-1.5px}
body.p-manage .pulse svg{vertical-align:-2.5px;margin-right:2px}

/* Card headings + notes (Profile / Embed tabs) */
body.p-manage .cardtitle{margin:0 0 .35rem;font-size:1.05rem;font-family:var(--f-disp);font-weight:800;letter-spacing:-.02em}
body.p-manage .cardsub{color:var(--muted);font-size:.88rem;line-height:1.55;margin:0 0 .6rem}
body.p-manage .hint-fwd{color:var(--muted);font-size:.78rem;margin-top:.8rem}
body.p-manage .pf-sect{margin-top:1.5rem;border-top:1px solid var(--line);padding-top:1.15rem}
body.p-manage .lbl-strong{font-weight:700}
body.p-manage .hint-note{margin:.2rem 0 .75rem}

/* Checkbox rows (profile notifications + sheet toggles) */
body.p-manage .ck-row{display:flex;align-items:center;gap:.55rem;cursor:pointer;margin-top:.5rem}
body.p-manage .ck-row.first{margin-top:.9rem}
body.p-manage .ck{width:auto;margin:0;flex:0 0 auto}
body.p-manage .lbl-gap{margin-top:1.1rem}

/* Post / edit-screening sheet bits */
body.p-manage #paynote{margin-top:4px}
body.p-manage #post-completeness{margin-top:1rem;font-weight:600}
body.p-manage #post-completeness.ok{color:var(--blue-d)}
body.p-manage #gate-jobtitle{color:var(--muted);font-size:.88rem;margin:-.5rem 0 .6rem}
body.p-manage #gatemsg{font-size:.86rem;margin-top:.7rem}
body.p-manage #req-years-n{width:3.4em;padding:6px 4px;font:inherit;text-align:center}

/* Status / result messages — JS toggles these classes (was imperative style.color) */
body.p-manage .msg-ok{color:var(--blue-d)}
body.p-manage .msg-err{color:#9b1c1c}
body.p-manage .msg-link{color:var(--blue-d);text-decoration:underline}
body.p-manage #cpurl{cursor:pointer}

/* Phone tap targets (~44px effective) */
@media (max-width:700px){
  body.p-manage .tabs button{min-height:44px}
  body.p-manage .helprow a{display:inline-block;padding:.7rem 0 .7rem .5rem}
  body.p-manage .appfilters .af,body.p-manage .appfilters select{min-height:44px}
  body.p-manage .app-actions .act-btn{min-height:44px}
  body.p-manage .actions button,body.p-manage .actions a{min-height:44px;display:inline-flex;align-items:center}
  body.p-manage .gb-row button.gb-x{width:44px;min-height:44px}
  body.p-manage .ck-row{min-height:44px}
  body.p-manage #req-years-n{min-height:44px;width:3.8em}
}

/* ---- onboard_php ---- */
/* onboard.php — admin onboarding form (body.p-onboard) */
body.p-onboard .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}
body.p-onboard .list{max-width:640px}
body.p-onboard .list h2{margin:20px 0 4px}
body.p-onboard .onb-form{display:flex;flex-direction:column;gap:14px;margin-top:14px}
body.p-onboard .onb-form input[type=text],
body.p-onboard .onb-form input[type=email],
body.p-onboard .onb-form input[type=file]{width:100%;min-height:44px;padding:10px 12px;font:inherit;font-family:var(--f-body);border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper-2);color:var(--ink)}
body.p-onboard .onb-form input:focus-visible{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,86,255,.18)}
/* touch target: checkbox rows to ~44px effective */
body.p-onboard .availset .radio{min-height:44px;margin:2px 0}

/* ---- packet_php ---- */
/* packet.php — inline-style migration fragment (scoped under body.p-packet) */

/* header + CTA icon alignment (emoji -> inline SVG) */
body.p-packet .pk-head svg{vertical-align:-2px;margin-right:6px}
body.p-packet .pk-go svg{margin-left:7px}

/* Standard-questions rows: prose-width label, bold flush-right answer
   (was inline style="width:auto;flex:1;text-transform:none;font-size:.82rem" / "flex:none;font-weight:700") */
body.p-packet .fld-q .lb{width:auto;flex:1;text-transform:none;font-size:.82rem}
body.p-packet .fld-q .vl{flex:none;font-weight:700}

/* Block copy buttons (résumé / cover letter) — one class replaces the duplicated ~200-char inline rule;
   padding bumped from 8px to reach a ~44px tap target */
body.p-packet .pk-cpy{font-family:var(--f-mono);font-size:.7rem;font-weight:700;color:var(--ink);border:1px solid var(--hair);background:var(--paper);border-radius:999px;padding:11px 16px;min-height:44px;cursor:pointer}
body.p-packet .pk-cpy.did{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* Tap targets: per-field COPY pills were min-height 34px in the base sheet */
body.p-packet .fld button{min-height:44px;padding:10px 14px}

/* Checklist rows (was ☐ text markers + <br>) */
body.p-packet .chk-it{display:flex;align-items:flex-start;gap:9px}
body.p-packet .chk-it svg{flex:none;margin-top:.45em;color:var(--muted)}

/* ---- post_signup_php ---- */
/* Sweep fragment: post/signup.php + post/login.php + post/verify.php (body.p-login)
   and post/job.php (body.p-post-job). */

/* Logo link — replaces the identical inline style="text-decoration:none;display:block" on the three auth pages. */
body.p-login .pplogo{display:block;text-decoration:none}

/* Tap targets: .hint prose links (~12px mono text) get ~44px effective touch height without shifting layout. */
body.p-login .hint a{display:inline-block;padding:14px 8px;margin:-14px -8px}

/* Verified-live badge check icon (inline SVG replaced the ✓ glyph) — align with the mono label text. */
body.p-post-job .vbadge svg{vertical-align:-1px;margin-right:2px}

/* 404 fallback shell (job no longer posted): sub line under the heading. */
body.p-post-job .gone-sub{color:var(--muted);margin:6px 0 20px}

/* ---- privacy_php ---- */
/* privacy.php — migrated inline styles */
body.p-privacy .m0{margin:0}

/* ---- profile_php ---- */
/* ============ profile.php — inline-style migration (scoped to body.p-profile) ============ */

/* shared bits */
body.p-profile .ic{width:15px;height:15px;flex:none;vertical-align:-2px}
body.p-profile .psub{color:var(--muted);font-size:14px;line-height:1.45;margin:0 0 10px}
body.p-profile .subnote{color:var(--muted);font-size:13px}
body.p-profile .inlineform{display:inline;margin:0}
body.p-profile .rowlink{margin:10px 0 0}
body.p-profile .pfcard h2 small{font-weight:400;color:var(--muted);font-size:.8rem}
body.p-profile .pfcard h3{font-size:1rem;margin:22px 0 4px}
body.p-profile .rzname small{color:var(--muted);font-weight:400}
body.p-profile .edsub small.lt{font-weight:400;color:var(--muted)}
body.p-profile .okmsg .ic{vertical-align:-3px}

/* parse-review banner */
body.p-profile .parsebanner{background:var(--lime);border:1.5px solid var(--ink);padding:14px 16px;margin:0 0 18px}
body.p-profile .parsebanner b{font-size:1.05rem}
body.p-profile .parsebanner>b .ic{vertical-align:-2px;margin-right:2px}
body.p-profile .parsebanner p{margin:6px 0 12px;font-size:14px;line-height:1.4}
body.p-profile .parsebanner form{margin:0}

/* buttons */
body.p-profile .btn-ink{background:var(--ink);color:var(--paper);border:none;padding:10px 18px;font-weight:700;cursor:pointer;min-height:44px}
body.p-profile .savebig{background:var(--ink);color:var(--paper);border:none;padding:11px 20px;font-weight:700;cursor:pointer;margin-top:16px;min-height:44px}
body.p-profile .btn-lime{background:var(--lime);color:var(--ink);border:1.5px solid var(--ink);border-radius:0;padding:9px 16px;font-weight:600;cursor:pointer;min-height:40px}
body.p-profile .btn-ghost{background:none;border:1px solid var(--muted);color:var(--muted);border-radius:var(--r,6px);padding:10px 14px;cursor:pointer;min-height:40px;display:inline-flex;align-items:center;gap:7px}
body.p-profile .addbtn{background:none;border:1px solid var(--ink);border-radius:var(--r,6px);padding:9px 14px;cursor:pointer;font-weight:600;min-height:40px}

/* pill links (Manage résumés / Update your résumé) — bumped to tap size */
body.p-profile .pilllnk{display:inline-flex;align-items:center;gap:6px;text-decoration:none;border:1.5px solid var(--ink);border-radius:0;padding:9px 13px;font-size:13px;color:var(--ink);background:var(--paper-2);white-space:nowrap;min-height:40px}

/* skill pills (formerly PHP-minted $pillcss / $xbtn) */
body.p-profile .skpill{display:inline-flex;align-items:center;gap:6px;background:var(--paper);border:1px solid var(--hair);border-radius:0;padding:4px 10px;font-size:13px;margin:3px 4px 3px 0}
body.p-profile .skpill.on{background:var(--lime);border-color:var(--ink);color:var(--ink)}
body.p-profile button.skpill.skrestore{background:var(--paper);border-color:var(--hair);color:var(--muted);cursor:pointer;padding:10px 12px;min-height:40px;font:inherit;font-size:13px}
/* remove-x inside a pill: small glyph, ~44px effective hit area via padding + negative margin */
body.p-profile button.skx{border:none;background:none;color:inherit;cursor:pointer;font-weight:700;line-height:1;font-size:13px;padding:13px 12px;margin:-13px -10px -13px -4px;display:inline-flex;align-items:center}
body.p-profile .removedwrap{margin-top:10px}

/* add-a-skill box */
body.p-profile .addskill{margin:22px 0 4px;padding:14px;background:var(--paper);border:1px solid var(--hair);border-radius:var(--r,8px)}
body.p-profile .addskill h3{margin:0 0 4px}
body.p-profile .addskill form.skadd{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
body.p-profile .skinput{flex:1;min-width:220px;padding:11px 9px;border:1.5px solid var(--ink);border-radius:0;font:inherit}

/* résumé-details form (experience / certifications) */
body.p-profile .exprow2{border:1px solid var(--hair);border-radius:var(--r,8px);padding:12px;margin:0 0 10px;position:relative}
body.p-profile .edform textarea{width:100%}
body.p-profile .certrow{display:flex;gap:8px;margin:0 0 6px;align-items:center}
body.p-profile .certrow .cname{flex:1;padding:8px}
body.p-profile .certrow .cyear{width:80px;padding:8px}
body.p-profile .restoreform{margin:12px 0 0}

/* tap targets: row-delete ✕ and add-row buttons to ~44px effective */
body.p-profile button.rowdel{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0}
body.p-profile .degrow button.rowdel,body.p-profile .exprow2 button.rowdel{position:absolute;top:0;right:0}
body.p-profile button.addrow{min-height:40px}
body.p-profile .rzlist .rzitem a{min-height:40px;display:inline-flex;align-items:center}

/* ---- resume_view_php ---- */
/* resume_view.php — inline-style migration + tap targets */
/* was inline on .dlbtn; min-height/inline-flex lifts the ~35px button to a 44px tap target */
body.p-resumeview .dlbtn{text-decoration:none;display:inline-flex;align-items:center;min-height:44px;}
/* back link: expand tap area to ~44px without moving its lime underline */
body.p-resumeview .toolbar .back{position:relative;}
body.p-resumeview .toolbar .back::after{content:"";position:absolute;inset:-14px -10px;}

/* ---- resumes_php ---- */
/* resumes.php — page-scoped fragment (body.p-resumes) */
body.p-resumes .panel.focus{border:2px solid var(--blue)}
body.p-resumes .copy{display:inline-flex;align-items:center;min-height:44px}   /* phone tap target */
body.p-resumes a.copy{text-decoration:none}
body.p-resumes a.copy.dl{background:var(--lime);color:var(--ink)}

/* ---- salaries_php ---- */
/* salaries.php — inline-style migration fragment */
body.p-salaries .sl .cta{margin-top:14px}

/* ---- saved_php ---- */
/* saved.php — migrated inline styles + tap targets. Scoped to body.p-saved.
   (h1 uses the shared unscoped .sr-only already in style.css:1203 — not duplicated here.) */
body.p-saved .wrap{max-width:680px;margin:0 auto}
body.p-saved .pagehead{margin:6px 0 12px}

/* tap targets: ~44px effective on phones */
body.p-saved .floatbar .back{display:inline-flex;align-items:center;min-height:44px}
body.p-saved .scard a.kit{display:inline-flex;align-items:center;min-height:44px;padding:0 4px}
body.p-saved .scard .uns{min-height:44px;min-width:44px;padding:10px 12px}

/* ---- search_php ---- */
/* search.php — grad on-ramp (inline-style migration, sweep 2026-07-23) */
/* MARKETING-PASS-20260729: grad ramp is COLLAPSED by default (expanded it filled the whole first
   screen and pushed real results below the fold). <details>/<summary> = native, keyboard-accessible,
   zero JS. .gr-n carries the live entry-level count per field (build_search_cache -> search_cache.json). */
body.p-search .gradramp{margin:8px 0 2px;padding:11px 13px;border:1.5px solid var(--ink);background:var(--paper-2);}
body.p-search .gradramp .gr-ic{vertical-align:-2px;margin-right:2px;}
body.p-search .gradramp .gr-sub{color:var(--muted);font-size:13.5px;}
body.p-search .gradramp .gr-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
body.p-search .gradramp .gr-link{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;text-decoration:none;border:1px solid var(--ink);border-radius:0;font-size:13px;color:var(--ink);background:var(--paper);}
body.p-search .gradramp>summary{display:flex;align-items:center;gap:7px;cursor:pointer;list-style:none;min-height:26px;}
body.p-search .gradramp>summary::-webkit-details-marker{display:none;}
body.p-search .gradramp>summary:focus-visible{outline:2px solid var(--ink);outline-offset:3px;}
body.p-search .gradramp .gr-tog{margin-left:auto;flex:none;width:9px;height:9px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translateY(-2px);transition:transform .15s ease;}
body.p-search .gradramp[open] .gr-tog{transform:rotate(-135deg) translateY(-2px);}
body.p-search .gradramp .gr-n{margin-left:7px;font-family:var(--f-mono);font-size:11.5px;color:var(--muted);}
@media (prefers-reduced-motion:reduce){body.p-search .gradramp .gr-tog{transition:none;}}

/* ---- settings_php ---- */
/* settings.php — inline-style migration fragment (scoped to body.p-settings) */

/* lime "area added / radius updated" flash variant */
body.p-settings .flash-add{background:var(--lime);border-color:var(--ink);color:var(--ink);}

/* intro line under the H1 */
body.p-settings .subhead{color:var(--muted);font-size:14px;margin:0 0 18px;}

/* muted note inside a section H2 */
body.p-settings .h2note{font-weight:400;color:var(--muted);font-size:.8rem;}

/* small helper texts */
body.p-settings .hint{color:var(--muted);font-size:12px;margin:6px 0 0;}
body.p-settings .emptynote{color:var(--muted);font-size:13px;}

/* area pill row */
body.p-settings .ppills{margin-top:8px;}
body.p-settings .areapill{display:inline-flex;align-items:center;gap:6px;background:var(--paper-2);border:1px solid var(--ink);color:var(--ink);border-radius:0;padding:4px 10px;font-size:13px;font-weight:600;}
body.p-settings .areapill.place{background:var(--lime);}

/* "Hide jobs" excluded-term pill (warn palette — no red token exists) */
body.p-settings .xpill{display:inline-flex;align-items:center;gap:6px;background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:0;padding:4px 10px;font-size:13px;margin:3px 4px 3px 0;}

/* inline sub-forms living inside pills (miles selector, remove, un-hide) */
body.p-settings .mform{display:inline;margin:0;padding:0;}
body.p-settings .msel{border:none;background:none;font:inherit;color:inherit;cursor:pointer;padding:12px 2px;margin:-12px 0;}

/* pill remove ✕ — visually small, ~44px effective tap target via padding + negative margin */
body.p-settings .pill-x{border:none;background:none;color:var(--ink);cursor:pointer;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:15px 15px;margin:-15px -11px;}
body.p-settings .xpill .pill-x{color:#b91c1c;}

/* add-area forms (override sitewide .paddform gutters for this page) */
body.p-settings .paddform{margin:10px 0 0;padding:0;flex-wrap:wrap;align-items:center;gap:6px;}
body.p-settings .paddform select{padding:7px;}
body.p-settings .paddform input{padding:7px;min-width:230px;}
body.p-settings .paddform button{display:inline-flex;align-items:center;gap:6px;}

/* hide-terms add form */
body.p-settings .termform{margin-top:8px;}
body.p-settings .termform input{padding:7px;}

/* inline SVG icons */
body.p-settings .ic{flex:none;vertical-align:-3px;}

/* ---- unsub_php ---- */
/* unsub.php — scoped fragment. Page reuses p-login card styling; p-unsub added for page-specific rules. */
body.p-unsub .logo{text-decoration:none;display:block}

/* bookmark save motif (Rob 2026-07-24): outline = unsaved, filled = saved. Shared by feed card,
   job.php save button, saved.php badge. */
.save-btn .bm,.savebtn .bm{vertical-align:-2px;margin-right:4px}
.save-btn.on .bm,.savebtn.on .bm{fill:currentColor}
body.p-saved .b-saved .bm{fill:currentColor;vertical-align:-2px;margin-right:3px}
/* employer billing status box (manage.php drop-in — _emp_billing_box.php) */
.empbill{background:var(--paper-2,#f7f6f2);border:1.5px solid var(--line,#e3e1da);border-radius:var(--r,10px);padding:14px 16px;margin:0 0 16px}
.empbill .eb-h{font-size:.95rem}
.empbill .eb-note{margin:6px 0 0;font-size:.85rem;color:var(--muted,#666)}
.empbill .eb-acts{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:10px}
.empbill .eb-link{font-size:.82rem;font-weight:600;color:var(--ink,#1f1f1f);border-bottom:2px solid var(--lime-deep,#9ad14b)}

/* === GENERATED: inline-style sweep (2026-07-25) — see STATUS.md ===
   One class per DISTINCT declaration that used to live in a style="" attribute, so style-src can
   drop 'unsafe-inline'. Names are u-<sha1[:8] of the declaration>, so the mapping is deterministic
   and re-running the sweep is idempotent.
   NOT semantic and NOT page-scoped — that refactor is a separate job; this exists to close the CSP
   hole today. Refactor freely, but keep the class on the element until you do. */
.u-d6f2af6e{margin-top:14px !important}
.u-bf6042ba{position:absolute !important;left:-9999px !important;height:1px !important;width:1px !important;opacity:0 !important}
.u-eb3ae092{max-width:640px !important;margin:0 auto !important}
.u-d6ad4aec{margin:20px 0 4px !important}
.u-9374e842{margin-top:12px !important}
.u-7a4e23aa{text-align:center !important;margin:0 !important}
.u-e3f916ec{color:var(--muted) !important}
.u-e1e8be39{display:flex !important;justify-content:space-between !important;align-items:baseline !important;gap:12px !important}
.u-8a77e5a3{margin-top:8px !important}
.u-a49bd066{margin:0 0 22px !important}
.u-d55142c1{width:100% !important;box-sizing:border-box !important;padding:9px 12px !important;border:1.5px solid var(--hair) !important;font:inherit !important;margin:0 0 8px !important;background:var(--paper-2) !important}
.u-cf27f410{width:100% !important;box-sizing:border-box !important;padding:10px 12px !important;border:1.5px solid var(--ink) !important;font:inherit !important;background:var(--paper-2) !important;resize:vertical !important}
.u-11696618{margin:0 !important}
.u-ca02a92f{height:22px !important}
.u-57f9e31d{color:var(--muted) !important}
.u-d2c171b1{margin-top:10px !important}
.u-946a990a{height:14px !important}
.u-3a409516{height:40px !important}
.u-72bed757{max-width:480px !important;margin:56px auto !important;padding:0 16px !important;text-align:center !important}
.u-4c8578bf{font-size:2.2rem !important;margin-bottom:8px !important}
.u-ad7f18b1{margin:0 0 6px !important}
.u-e19dcf21{color:var(--muted) !important;font-size:.92rem !important;line-height:1.55 !important}
.u-86de7ac6{margin-top:18px !important}
.u-e3ec02ac{font-weight:700 !important}
.u-3577e3e8{border:1.5px dashed var(--hair,#ccc) !important;border-radius:10px !important;padding:.6rem .8rem !important;margin:.2rem 0 .8rem !important}
.u-607c0d58{cursor:pointer !important;font-weight:600 !important;font-size:.92rem !important}
.u-acef0958{margin-top:.6rem !important}
.u-f90db785{text-decoration:none !important;display:block !important}
.u-d2cd2e79{display:flex !important;align-items:center !important;justify-content:center !important;gap:10px !important;width:100% !important;margin:0 0 6px !important;padding:12px !important;border:1.5px solid var(--ink) !important;border-radius:8px !important;background:#fff !important;color:#1f1f1f !important;font-weight:600 !important;text-decoration:none !important}
.u-5b38a7ac{text-align:center !important;font-size:.8rem !important;margin:0 0 10px !important}
.u-0effa556{display:flex !important;align-items:center !important;gap:10px !important;margin:0 0 12px !important;color:var(--muted,#666) !important;font-size:.72rem !important;letter-spacing:.1em !important;text-transform:uppercase !important}
.u-8aa44069{flex:1 !important;border-top:1.5px dashed currentColor !important;opacity:.35 !important}
.u-0228b97f{background:transparent !important;color:var(--ink) !important;border-color:var(--ink) !important}
.u-cd804412{display:flex !important;align-items:center !important;justify-content:center !important;gap:10px !important;width:100% !important;margin:0 0 14px !important;padding:12px !important;border:1.5px solid var(--ink) !important;border-radius:var(--r) !important;background:#fff !important;color:#1f1f1f !important;font-weight:600 !important;text-decoration:none !important}
.u-ce8e881c{display:flex !important;align-items:center !important;gap:10px !important;margin:0 0 14px !important;color:var(--muted) !important;font-family:var(--f-mono) !important;font-size:.68rem !important;letter-spacing:.12em !important;text-transform:uppercase !important}
.u-b5ec5c85{flex:1 !important;border-top:1.5px dashed var(--muted) !important;opacity:.4 !important}
.u-b02c1a66{background:transparent !important;color:var(--ink) !important;border-color:var(--ink) !important;margin-top:10px !important}
.u-920047c8{margin-top:10px !important;border-top:1px dashed rgba(0,0,0,.18) !important;padding-top:10px !important}
.u-09b70597{cursor:pointer !important;font-weight:600 !important;font-size:.9rem !important;list-style:none !important;display:flex !important;align-items:center !important;gap:7px !important}
.u-82e0b796{background:#2456E6 !important;color:#fff !important;border-radius:9px !important;font-size:.66rem !important;padding:1px 7px !important}
.u-690f85e5{font-weight:400 !important;color:#777 !important;font-size:.76rem !important}
.u-5448d164{display:flex !important;flex-direction:column !important;gap:7px !important;margin:10px 0 0 !important}
.u-5cb99820{font-size:.88rem !important;white-space:pre-wrap !important}
.u-e940f1d7{font-size:.62rem !important;opacity:.75 !important;margin-top:2px !important}
.u-258c8d84{margin-top:10px !important;display:flex !important;gap:8px !important;align-items:flex-end !important}
.u-61256bfa{flex:1 !important;font:inherit !important;font-size:.9rem !important;padding:8px 10px !important;border:1.5px solid rgba(0,0,0,.35) !important;border-radius:9px !important}
.u-3b6a3a65{cursor:pointer !important}
.u-be142c3a{margin:.15rem 0 .5rem !important}
.u-6b99de8b{display:none !important}
.u-b81c0937{margin:.2rem 0 .1rem !important}
.u-b574bff6{margin:.55rem 0 0 !important}
.u-e775556b{visibility:hidden !important}
.u-c7b1b8b0{text-align:center !important;margin-top:.3rem !important}
.u-2b722b76{background:var(--paper) !important;border:1px solid var(--hair) !important;border-radius:var(--r) !important;padding:.95rem !important;max-height:48vh !important;overflow:auto !important;font-size:.92rem !important;line-height:1.5 !important}
.u-742e6bb4{color:#2f7d32 !important}
.u-4e9d87a5{color:#b3261e !important}
.u-d308c42d{max-width:680px !important;margin:0 auto !important;padding:18px 16px 60px !important}
.u-ab43d1c5{font-family:var(--f-disp) !important;font-weight:800 !important;letter-spacing:-.02em !important;font-size:1.5rem !important;margin:.4rem 0 .3rem !important}
.u-5d5cfe72{color:var(--muted) !important;font-size:.88rem !important;margin:0 0 16px !important}
.u-5572b77e{background:var(--paper-2) !important;border:1.5px solid var(--ink) !important;border-radius:10px !important;padding:9px 12px !important;margin:0 0 12px !important;font-size:.88rem !important}
.u-c7da9158{display:flex !important;flex-direction:column !important;gap:14px !important}
.u-a7dc89b1{background:var(--paper-2) !important;border:1.5px solid var(--ink) !important;border-radius:12px !important;padding:14px !important}
.u-03e5166b{display:flex !important;align-items:baseline !important;gap:8px !important;flex-wrap:wrap !important}
.u-ad0774d9{font-size:.98rem !important}
.u-7b7a0a9c{color:var(--muted) !important;font-size:.86rem !important}
.u-62e11ec7{margin-left:auto !important;color:var(--muted) !important;font-family:var(--f-mono) !important;font-size:.68rem !important}
.u-15df1720{display:flex !important;flex-direction:column !important;gap:8px !important;margin:12px 0 0 !important}
.u-7b13be38{font-size:.9rem !important;white-space:pre-wrap !important}
.u-5419098d{font-family:var(--f-mono) !important;font-size:.62rem !important;opacity:.75 !important;margin-top:3px !important}
.u-5c701b7d{color:var(--muted) !important;font-size:.84rem !important;margin:10px 0 0 !important}
.u-e2fd15a7{margin-top:12px !important;display:flex !important;gap:8px !important;align-items:flex-end !important}
.u-70e8cc81{flex:1 !important;font:inherit !important;font-size:.92rem !important;padding:9px 11px !important;border:1.5px solid var(--ink) !important;border-radius:10px !important;background:var(--paper) !important;color:var(--ink) !important;resize:vertical !important}
.u-db338bcb{width:auto !important;margin:0 !important;font:inherit !important;font-weight:600 !important;color:#fff !important;background:var(--blue) !important;border:0 !important;border-radius:10px !important;padding:10px 16px !important;cursor:pointer !important}
.u-4d054a23{margin-top:6px !important;text-align:right !important}
.u-b01abad7{width:auto !important;margin:0 !important;background:none !important;border:0 !important;color:var(--muted) !important;font-family:var(--f-mono) !important;font-size:.66rem !important;letter-spacing:.06em !important;text-transform:uppercase !important;cursor:pointer !important;padding:2px !important}
.u-0f3a994b{position:relative !important;display:inline-flex !important;align-items:center !important}
.u-fc954e61{position:absolute !important;top:-4px !important;right:-7px !important;min-width:15px !important;height:15px !important;padding:0 3px !important;border-radius:8px !important;background:var(--blue,#2456E6) !important;color:#fff !important;font-size:.6rem !important;font-weight:700 !important;line-height:15px !important;text-align:center !important}
.u-1bb9ef6e{font-family:var(--f-disp) !important;font-weight:800 !important;letter-spacing:-.02em !important;font-size:1.5rem !important;margin:.4rem 0 1rem !important}
.u-a56c85e3{display:flex !important;flex-direction:column !important;gap:10px !important}
.u-5ef912c5{display:flex !important;align-items:baseline !important;gap:8px !important}
.u-cf2a010a{width:8px !important;height:8px !important;border-radius:50% !important;background:var(--blue) !important;flex:none !important;position:relative !important;top:-1px !important}
.u-12832f63{margin-left:auto !important;color:var(--muted) !important;font-family:var(--f-mono) !important;font-size:.7rem !important;white-space:nowrap !important}
.u-248190af{color:var(--muted) !important;font-size:.88rem !important;margin-top:3px !important}
.u-38597513{margin-top:10px !important;display:flex !important;align-items:center !important;gap:10px !important;flex-wrap:wrap !important}
.u-d0b0281e{width:auto !important;margin:0 !important;padding:9px 14px !important;font-size:.9rem !important}
.u-1fe86672{font-size:.82rem !important}
.u-41f1f00f{max-width:1040px !important;margin:18px auto 4px !important}
.u-8971e596{max-width:1040px !important;margin:0 auto 12px !important}
.u-8172f8a5{max-width:1040px !important;margin:10px auto !important;display:flex !important;gap:10px !important;align-items:center !important;flex-wrap:wrap !important}
/* Semantic classes replacing the last PHP-conditional inline styles (2026-07-25). These were never
   "computed" — PHP was choosing between two FIXED style strings, i.e. a class switch wearing a costume. */
.msgbub{max-width:85%;border-radius:11px;padding:7px 11px}
.msgbub.mine{align-self:flex-end;background:#2456E6;color:#fff}
.msgbub.theirs{align-self:flex-start;background:rgba(0,0,0,.05);color:inherit}
.msgbub2{max-width:85%;border-radius:12px;padding:8px 12px}
.msgbub2.mine{align-self:flex-end;background:var(--blue);color:#fff}
.msgbub2.theirs{align-self:flex-start;background:var(--paper);color:var(--ink);border:1px solid var(--ink)}
.notifcard{display:block;text-decoration:none;color:var(--ink);background:var(--paper-2);
  border:1.5px solid var(--ink);border-radius:12px;padding:12px 14px}
.notifcard.unread{border-color:var(--blue);box-shadow:0 2px 10px rgba(46,86,255,.10)}
.u-0a3498bb{font-family:var(--f-disp) !important;font-weight:800 !important;font-size:1.08rem !important;margin:.35rem 0 !important}
.u-3ab5d4d0{padding-left:1.05em !important;text-indent:-0.7em !important}
.u-57cabd7c{height:.55em !important}
.u-ee7a1b84{font-family:var(--f-disp) !important;font-weight:800 !important;font-size:1.2rem !important}
.u-707605f7{font-family:var(--f-mono) !important;font-size:.74rem !important;color:var(--muted) !important;margin:.15rem 0 .6rem !important}
.u-15d48d92{padding-left:1.05em !important}
.u-dd2caaae{margin-top:.85em !important;border-top:1px dashed var(--hair) !important;padding-top:.6em !important}
.u-dc52d5b2{display:flex !important;gap:.5rem !important;margin-top:.55rem !important;flex-wrap:wrap !important}
.u-305477d1{flex:1 !important;text-align:center !important;text-decoration:none !important}
.u-25747e0c{margin-top:.35rem !important}
.u-a671b20d{background:rgba(47,125,50,.12) !important}
/* --- relocated inline <style> blocks (2026-07-25) — these were the LAST thing blocking a
   style-src without 'unsafe-inline'. Found by the headless-browser check; the report collector
   named the exact file and line. --- */
/* was inline in _demandskills.php */
.demandskills{margin:10px 0}
  .dspills{display:flex;flex-wrap:wrap;gap:7px;margin:6px 0}
  .dspill{display:inline-flex;align-items:center;gap:6px;border:1.5px solid #e4e7ec;border-radius:999px;padding:5px 12px;font-size:.85rem;background:#fff;color:#333;cursor:pointer}
  .dspill .dsbx{width:15px;height:15px;border:1.5px solid #9aa1ad;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:#fff;line-height:1}
  .dspill.on{border-color:#0a7d3c;background:#e7f6ec;color:#0a7d3c;font-weight:600}
  .dspill.on .dsbx{background:#0a7d3c;border-color:#0a7d3c}
  .dspill.on .dsbx::after{content:"\2713"}
  .dspill.busy{opacity:.5}
  .dspill small{color:#667085;font-weight:400}
/* was inline in apply.php */
#skill-chips .c.rq{cursor:pointer;user-select:none}
      #skill-chips .c.rq .tag{font-size:.62rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted,#666);margin-left:4px}
      #skill-chips .c.rq.on{background:var(--lime,#9DB4C6);border-color:var(--ink,#0E100B)}
      #skill-chips .c.rq.on .tag{color:inherit}
/* was inline in manage-resume.php */
html,body{margin:0;height:100%;font-family:Inter,system-ui,sans-serif}
.bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#0E100B;color:#fff}
.bar a{color:#fff;font-weight:600;text-decoration:none}.bar .sp{flex:1}
.bar a.dl{font-weight:400;font-size:.85rem;text-decoration:underline}
iframe{border:0;width:100%;height:calc(100% - 44px)}
/* === END GENERATED inline-style sweep === */


/* ---- verify_php (MARKETING-PASS-20260729): "How we verify" trust page ---- */
body.p-verify .legal{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,3rem) clamp(1.15rem,5vw,2rem)}
body.p-verify .legal h1{font-family:var(--f-disp);font-size:clamp(1.8rem,6vw,2.6rem);font-weight:800;letter-spacing:-.03em;margin:0 0 .8rem;color:var(--ink);text-wrap:balance}
body.p-verify .legal h2{font-family:var(--f-disp);font-size:1.2rem;font-weight:700;letter-spacing:-.02em;margin:2.1rem 0 .6rem;color:var(--ink)}
body.p-verify .legal p, body.p-verify .legal li{color:var(--ink-soft);line-height:1.65;font-size:1rem}
body.p-verify .legal ul{margin:.5rem 0 .5rem 1.1rem;padding:0}
body.p-verify .legal li{margin:.45rem 0}
body.p-verify .legal a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
body.p-verify .legal b, body.p-verify .legal strong{color:var(--ink)}
body.p-verify .legal .lead{font-size:1.06rem;color:var(--ink)}
body.p-verify .legal .box{border:1.5px solid var(--ink);background:var(--paper-2);padding:1rem 1.15rem;margin:1.4rem 0}
body.p-verify .legal .m0{margin:0}
body.p-verify .legal .fine{font-size:.82rem;color:var(--muted);line-height:1.55;margin-top:.7rem}
body.p-verify .legal .cta-line{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:2.2rem 0 .6rem}
body.p-verify .legal .cta-line .btn{display:inline-flex;align-items:center;min-height:46px;padding:0 20px;background:var(--ink);color:var(--paper);text-decoration:none;font-weight:600;border:1.5px solid var(--ink)}
body.p-verify .legal .cta-line .btn:hover{opacity:.9}
body.p-verify .legal .cta-line .btn-link{color:var(--ink);text-decoration:underline;text-underline-offset:3px;font-size:.95rem}

/* Flagged-employer review queue (admin.php) -- laptop-14 2026-08-03. The evidence and the model's
   own words are rendered VERBATIM and un-truncated: a reviewer has to be able to reconstruct WHY a
   row was escalated months later, and a score or a paraphrase cannot support that. */
body.p-admin .flagrow{display:block}
body.p-admin .flagev{background:var(--paper);border-left:3px solid var(--ink);padding:8px 11px;margin:8px 0 0;font-family:var(--f-mono);font-size:.76rem;color:var(--ink-soft);white-space:pre-wrap;overflow-wrap:anywhere}
body.p-admin .flagev b{font-family:var(--f-mono);text-transform:uppercase;letter-spacing:.03em;font-size:.7rem}
body.p-admin .flagacts{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}

/* join.php job-context line (2026-08-03): shown when the visitor arrived from a specific job via
   j.php's "See your fit" CTA, so the promise and the page name the same role. */
.jctx{margin:0 0 .5rem;font-size:.9rem;line-height:1.45;color:var(--ink-2,#475467)}
.jctx b{color:var(--ink,#101828);font-weight:600}

/* j.php escape routes (2026-08-03) — related jobs + seeded search. The page had no links out at all,
   which wasted every near-miss arrival, paid or organic. */
.jexits h3{margin-bottom:.4rem}
.jxl{list-style:none;margin:0;padding:0}
.jxl li{padding:.5rem 0;border-bottom:1px solid var(--line,#e4e7ec)}
.jxl li:last-child{border-bottom:0}
.jxl a{font-weight:600;text-decoration:none}
.jxl a:hover{text-decoration:underline}
.jxl small{display:block;margin-top:.15rem;font-size:.82rem;opacity:.72}
.jxsearch{margin:1rem 0 .25rem;display:flex;flex-wrap:wrap;gap:.9rem;font-size:.9rem}
.jxsearch a{font-weight:600}

/* zero-result recovery actions (2026-08-03) — the page used to offer nothing at all. */
.emptyacts{display:flex;flex-direction:column;gap:.55rem;margin:.9rem 0 1.4rem;max-width:34rem}
.ea{display:block;padding:.7rem .95rem;border:1.5px solid var(--line,#e4e7ec);border-radius:10px;
    text-decoration:none;font-weight:600;font-size:.92rem;line-height:1.35}
.ea:hover{border-color:var(--blue,#2e56ff)}
.ea--go{border-color:var(--blue,#2e56ff);background:rgba(46,86,255,.06)}

/* announced OR fallback (2026-08-03) — we widened the search, so we say so. */
.widened{margin:.5rem 0 1rem;padding:.65rem .9rem;border-left:3px solid var(--blue,#2e56ff);
         background:rgba(46,86,255,.05);border-radius:0 8px 8px 0;font-size:.92rem;line-height:1.45}
.widened small{display:block;margin-top:.3rem;opacity:.75}

/* filter-sheet facet counts (2026-08-03) — nobody should apply a filter blind. */
.chip-n{margin-left:.4rem;font-size:.78rem;opacity:.6;font-variant-numeric:tabular-nums}
.chip input:checked ~ .chip-n{opacity:.85}

/* close-account section (2026-08-03) — findable, never in the way, impossible to hit by accident. */
.card.danger{border:1.5px solid rgba(217,45,32,.35)}
.card.danger h2{color:#b42318}
.card.danger .sub{font-size:.9rem;line-height:1.5;opacity:.85}
.card.danger .lbl{display:block;margin:.6rem 0 .3rem;font-size:.88rem}
.card.danger input{max-width:14rem}
.btn-danger{margin-top:.6rem;background:#b42318;color:#fff;border:0;border-radius:8px;
            padding:.55rem 1rem;font-weight:600;cursor:pointer}
.btn-danger:hover{background:#912018}
.card.danger .err{color:#b42318;font-weight:600;font-size:.9rem}

/* current-page marker in the nav (2026-08-03) — added with My matches so a candidate can see where
   they are. .cur already existed for the account menu only (:267). */
.vhnav__link.cur{font-weight:700;color:var(--ink,#101828)}

/* save-this-search (2026-08-03) — the no-resume on-ramp. */
.savesearch{margin:.4rem 0 1rem;border:1.5px solid var(--line,#e4e7ec);border-radius:10px;padding:.55rem .85rem}
.savesearch summary{cursor:pointer;font-weight:600;font-size:.92rem;display:flex;align-items:center;gap:.4rem}
.ssform,.sssignup{margin-top:.7rem;font-size:.9rem}
.ssrow{display:flex;flex-wrap:wrap;align-items:center;gap:.85rem;margin:.35rem 0}
.ssrow label{display:inline-flex;align-items:center;gap:.3rem;cursor:pointer}
.sslab{min-width:4.2rem;opacity:.7;font-size:.85rem}
.ssbtn{display:inline-block;margin-top:.5rem;background:var(--blue,#2e56ff);color:#fff;border:0;
       border-radius:8px;padding:.5rem 1rem;font-weight:600;cursor:pointer;text-decoration:none}
.ssform small,.sssignup small{display:block;margin-top:.35rem;opacity:.7;font-size:.82rem}
.savedok{margin:.5rem 0 1rem;padding:.6rem .9rem;border-left:3px solid var(--live,#12b76a);
         background:rgba(18,183,106,.07);border-radius:0 8px 8px 0;font-size:.92rem}

/* radius in the search bar (2026-08-03) — visible next to the location it modifies. */
.sfield--rad{flex:0 0 auto}
.radsel{border:0;background:transparent;font:inherit;font-size:.92rem;color:inherit;cursor:pointer;
        padding:.2rem .1rem;max-width:9rem}
.radsel:focus{outline:2px solid var(--blue,#2e56ff);outline-offset:2px;border-radius:4px}
@media (max-width:640px){.sfield--rad{width:100%}.radsel{width:100%}}

/* save-this-search on the job page (2026-08-03) — the best exit from a near-miss arrival. */
.jsave{margin:1.1rem 0 .4rem;padding:.85rem 1rem;border:1.5px solid var(--line,#e4e7ec);border-radius:10px}
.jsave .ssbtn{display:inline-block;text-align:left;line-height:1.35}
.jsave small{display:block;margin-top:.45rem;opacity:.72;font-size:.82rem}

/* the seekers pitch, carried onto join.php (2026-08-03) — the fork card no longer passes the section. */
.joinwhy{max-width:38rem;margin:2rem auto 1rem;padding:1.1rem 1.2rem;border:1.5px solid var(--line,#e4e7ec);border-radius:12px}
.joinwhy h2{font-size:1.05rem;margin:0 0 .7rem}
.jw-steps{margin:0;padding-left:1.15rem;font-size:.93rem;line-height:1.5}
.jw-steps li{margin-bottom:.6rem}
.jw-alt{display:block;margin-top:.2rem;font-size:.86rem;opacity:.72}
.jw-foot{margin:.8rem 0 0;font-size:.88rem;opacity:.85}
.jw-foot a{font-weight:600}

/* save-search pill beside Share (2026-08-03) — same pill styling, sits inline with it. */
.jsavepill{display:inline;margin:0}
body.p-j .jsave-pill,body.p-job .jsave-pill{margin-right:.45rem;text-decoration:none}

/* first-viewport CTA on search (2026-08-03) — the only ask used to be a promo after the 4th card. */
.topcta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;
        margin:.55rem 0 1rem;padding:.7rem .95rem;border:1.5px solid var(--blue,#2e56ff);
        border-radius:10px;background:rgba(46,86,255,.05)}
.topcta-txt{flex:1 1 18rem;font-size:.92rem;line-height:1.4}
.topcta-txt b{display:block;font-size:.98rem}
.topcta-txt span{opacity:.8}
.topcta-act{display:flex;align-items:center;gap:.5rem;flex:0 0 auto}
.topcta-act select{border:1px solid var(--line,#e4e7ec);border-radius:8px;padding:.42rem .5rem;font:inherit;font-size:.88rem}
@media (max-width:640px){.topcta-act{width:100%}.topcta-act .ssbtn{flex:1}}

/* ── PLACE PICKER (_placepicker.php) — "Nearest first, from <place>" ─────────────────────────
   Added 2026-08-06 with the distance sort (docs/DISTANCE_SORT_2026-08-06.md). ONE block, used by
   both search.php and jobs.php, because the control is one component and two stylings of it would
   drift the way the 16 hardcoded style.css versions did. No page-scoped variants on purpose.
   Mobile-first: the bar wraps to two lines under ~430px rather than shrinking the tap targets. */
.pp{margin:.55rem 0 .15rem}
.pp-bar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.86rem;color:var(--muted)}
.pp-pin{display:inline-flex;color:var(--muted);flex:0 0 auto}
/* the switch is an <a>: its href IS the resulting state, so a nearest-sorted page is linkable */
.pp-toggle{display:inline-flex;align-items:center;gap:.42rem;padding:.3rem .6rem .3rem .34rem;border:1px solid var(--line);
  border-radius:999px;background:var(--paper-2);color:var(--ink);font-weight:600;font-size:.84rem;text-decoration:none;
  line-height:1.2;transition:background .15s var(--ease),border-color .15s var(--ease)}
.pp-toggle:hover{border-color:var(--blue)}
.pp-sw{width:26px;height:15px;border-radius:999px;background:var(--line);position:relative;flex:0 0 auto;
  transition:background .18s var(--ease)}
.pp-sw::after{content:"";position:absolute;top:2px;left:2px;width:11px;height:11px;border-radius:50%;
  background:var(--paper-2);box-shadow:0 1px 2px rgba(10,16,32,.3);transition:transform .18s var(--ease)}
.pp-toggle.on{background:var(--lime);border-color:var(--lime-hi);color:var(--lime-deep)}
.pp-toggle.on .pp-sw{background:var(--blue)}
.pp-toggle.on .pp-sw::after{transform:translateX(11px)}
.pp-from{color:var(--muted)}
.pp-from b{color:var(--ink);font-weight:600}
.pp-edit{background:none;border:0;padding:.3rem .1rem;color:var(--blue);font:inherit;font-size:.84rem;font-weight:600;
  cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.pp-edit--empty{text-decoration:none;color:var(--muted);font-weight:500}
.pp-edit--empty:hover{color:var(--blue)}
.pp-note{margin:.3rem 0 0;font-size:.8rem;color:var(--muted)}

/* the panel is closed markup, not absent markup — so it needs no JS to exist, only to toggle */
.pp-panel{display:none;margin-top:.5rem;padding:.7rem .8rem .8rem;background:var(--paper-2);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.pp-panel.open{display:block}
.pp-lab{display:block;font-size:.78rem;font-weight:600;color:var(--muted);margin-bottom:.3rem;
  text-transform:uppercase;letter-spacing:.04em}
.pp-row{display:flex;gap:.45rem}
.pp-in{flex:1 1 auto;min-width:0;padding:.55rem .65rem;border:1px solid var(--line);border-radius:var(--r-sm);
  font:inherit;font-size:.92rem;color:var(--ink);background:var(--paper-2)}
.pp-in:focus{outline:2px solid var(--blue);outline-offset:-1px;border-color:var(--blue)}
.pp-go{flex:0 0 auto;padding:.55rem 1rem;border:0;border-radius:var(--r-sm);background:var(--blue);color:#fff;
  font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}
.pp-go:hover{background:var(--blue-d)}
.pp-help{margin:.42rem 0 0;font-size:.78rem;color:var(--muted);line-height:1.45}
.pp-bad{margin:.42rem 0 0;font-size:.8rem;color:#B42318}
.pp-bad b{font-weight:600}
.pp-acts{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;margin-top:.6rem}
.pp-act{background:none;border:0;padding:0;color:var(--blue);font:inherit;font-size:.84rem;font-weight:600;
  cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.pp-act:disabled{color:var(--muted);cursor:default;text-decoration:none}
.pp-clear{color:var(--muted)}
.pp-saveform{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;margin-top:.55rem;
  padding-top:.55rem;border-top:1px solid var(--hair-2)}
.pp-savehint{font-size:.78rem;color:var(--muted)}
@media (max-width:430px){
  .pp-bar{gap:.4rem}
  /* wrap the origin onto its own line ONLY in the switch layout, where the switch has to lead.
     Without the .pp-toggle guard this also reordered the no-switch layout on search.php and put
     "Change" above the sentence it changes. */
  .pp-toggle ~ .pp-from{flex:1 1 100%;order:3;margin-top:-.15rem}
  .pp-row{flex-wrap:wrap}
  .pp-go{width:100%}
}
/* j.php: "12 mi away from Tampa, FL" in the facts line — a fact about this job for this visitor,
   so it reads at the same weight as the location beside it, not as an accent. */
.jdist{white-space:nowrap}
/* provenance on an origin the visitor did not set on THIS page ("— your saved search area").
   Quieter than the place itself: it explains, it is not the fact. */
.pp-whence{color:var(--muted);font-weight:400}
/* the ZIP field is five characters wide — a full-width box invites a street address into a
   control that only takes a ZIP, and the shape of an input is an instruction people read. */
.pp-in--zip{flex:0 0 7.5em;font-family:var(--f-mono);letter-spacing:.08em;text-align:center}
@media (max-width:430px){.pp-in--zip{flex:1 1 auto}}
/* switch-less variant (search.php): one flowing sentence — "📍 Measuring distance from X  Change" —
   instead of a flex row that strands the pin and the Change link on separate lines when the place
   name is long. Inline children so the line breaks like prose. */
.pp-bar--plain{display:block;line-height:1.5}
.pp-bar--plain .pp-pin{vertical-align:-3px;margin-right:.3rem}
.pp-bar--plain .pp-from{display:inline}
.pp-bar--plain .pp-edit{margin-left:.5rem;white-space:nowrap}

/* ── footer family line ───────────────────────────────────────────────────────────────────
   Was an inline style="" attribute in footer.php, i.e. on EVERY page. CSP has been ENFORCING
   since 2026-07-25, and style-src has no 'unsafe-inline', so the browser was DROPPING it: the
   line rendered at 16px/opacity 1 instead of 12.5px/0.75 site-wide, and filed a violation on
   every single pageview (~221/day — the bulk of the CSP report log). Found 2026-08-06 while
   answering a Google Ads traffic question. Moved here, where the rule says it belongs. */
.vhfoot__family{font-size:.78rem;opacity:.75;margin-top:8px}

/* ── homepage browse section (index.php) — was an inline <style> element, blocked the same way */
.browse-sec .browse-city{margin:0 0 1.4rem}
.browse-sec .browse-city>b{display:block;font-family:var(--f-disp);font-size:1.02rem;margin-bottom:.5rem}
.browse-sec .bc-links{display:flex;flex-wrap:wrap;gap:7px}
.browse-sec .bc-links a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;font-size:.86rem;
  color:inherit;text-decoration:none;border:1px solid var(--hair,#d8dae0);background:var(--paper,#fff)}
.browse-sec .bc-links a:hover{border-color:currentColor}
.browse-sec .browse-more{margin-top:1.6rem;font-size:.95rem}
.browse-sec .browse-more a{color:inherit;text-decoration:underline;text-underline-offset:3px}
/* ── ops.php (admin health dashboard) ─────────────────────────────────────────────────────
   Was an inline <style> element plus 4 style="" attributes. CSP is enforcing and style-src has
   no 'unsafe-inline', so ALL of it was being dropped — the page rendered unstyled and the
   red/amber/green status dots were invisible. Moved here 2026-08-06. The dots are three FIXED
   states, so they are semantic classes rather than data-css-bg + JS: ops.php loads no scripts,
   and a status is exactly what a class is for. */
.ops-wrap{max-width:860px;margin:0 auto;padding:16px}
.ops-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 16px;margin-bottom:14px}
.ops-head h1{font-family:'Bricolage Grotesque',sans-serif;font-size:1.5rem;margin:0}
.ops-ts{color:#6b7280;font-size:.85rem;font-family:'IBM Plex Mono',monospace}
.ops-stale{background:#a11a1a;color:#fff;padding:10px 14px;border-radius:8px;margin-bottom:14px;font-weight:600}
.banner{border-radius:14px;padding:22px 20px;margin-bottom:16px}
.banner h2{margin:0;font-family:'Bricolage Grotesque',sans-serif;font-size:1.45rem;line-height:1.25}
.banner .sub{margin-top:6px;font-size:.92rem}
.banner.ok{background:#e7f6ec;color:#0c5227}
.banner.warn{background:#fdf3e0;color:#7c5000}
.banner.bad{background:#fdeaea;color:#8f1616}
.projstrip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.pchip{display:inline-flex;align-items:center;gap:7px;border:1px solid #e5e7eb;border-radius:999px;
  padding:7px 14px;font-size:.86rem;font-weight:600;color:#374151;text-decoration:none;background:#fff}
.pchip .pd{width:10px;height:10px;border-radius:50%}
.pchip.miss{color:#9ca3af;border-style:dashed}
.prob{border:1px solid #e5e7eb;border-radius:12px;background:#fff;padding:14px 16px;border-left:6px solid #dc2626;margin-bottom:12px}
.prob.amber{border-left-color:#f59e0b}
.prob h3{margin:0 0 4px;font-size:1.02rem}
.prob .proj{color:#6b7280;font-weight:500}
.prob p{margin:4px 0;font-size:.9rem;color:#374151;line-height:1.45}
.prob .impact{color:#6b7280}
.prob .log{font-family:'IBM Plex Mono',monospace;font-size:.72rem;color:#6b7280;background:#f9fafb;border-radius:6px;padding:6px 8px;margin-top:8px;word-break:break-all}
.psec{margin-top:26px}
.psec h2{font-family:'Bricolage Grotesque',sans-serif;font-size:1.1rem;margin:0 0 4px;display:flex;align-items:center;gap:8px}
.psec .psum{color:#6b7280;font-size:.84rem;margin:0 0 10px}
.psec .pd{width:11px;height:11px;border-radius:50%;display:inline-block}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.node{border:1px solid #e5e7eb;border-left:5px solid #16a34a;border-radius:9px;background:#fff}
.node.amber{border-left-color:#f59e0b}
.node.red{border-left-color:#dc2626}
.node summary{list-style:none;cursor:pointer;padding:9px 10px;min-height:44px;display:flex;flex-direction:column;gap:2px;justify-content:center}
.node summary::-webkit-details-marker{display:none}
.n-top{display:flex;align-items:center;gap:6px}
.n-dot{width:9px;height:9px;border-radius:50%;background:#16a34a;flex:0 0 auto}
.node.amber .n-dot{background:#f59e0b}
.node.red .n-dot{background:#dc2626}
.n-label{font-weight:600;font-size:.88rem;line-height:1.2}
.n-lane{color:#9ca3af;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;margin-left:auto}
.n-metric{font-family:'IBM Plex Mono',monospace;font-size:.76rem;color:#374151}
.n-metric .base{color:#9ca3af}
.n-body{padding:0 10px 10px;font-size:.78rem;color:#4b5563;border-top:1px dashed #e5e7eb}
.n-body .mono{font-family:'IBM Plex Mono',monospace;font-size:.72rem;word-break:break-all;background:#f9fafb;padding:6px 8px;border-radius:6px;margin-top:6px;display:block}
.n-age{color:#6b7280;margin-top:6px}
.foot{margin-top:18px;color:#9ca3af;font-size:.78rem}.ops-adminlink{margin-left:auto}
.pd--red{background:#dc2626}
.pd--amber{background:#f59e0b}
.pd--green{background:#16a34a}
.pd--none{background:#d1d5db}
/* admin.php pipeline-health strip — one line per non-green ops check, read from the collector's
   own JSON so there is no second set of thresholds to drift from ops.php. */
.opsline{display:flex;align-items:flex-start;gap:.5rem;margin:.28rem 0;line-height:1.45}
.opsline .dot{flex:0 0 auto;margin-top:.42rem}
.opsline.bad b{color:#B42318}
.opsline.stale b{color:#B54708}
