/* MyDocMaker V2.58.28 — curated FreeShelf collection, namespaced to the CV Studio. */
.cv-fs{
  --accent:#5F6E54; --accent-soft:#E9EEE3; --ink:#2B2620; --ink-soft:#5c554a; --ink-faint:#948c7d;
  --accent-panel:color-mix(in srgb, var(--accent) 80%, black);
  --paper:#fff; --line:#e2ddd2;
  --head-font:'Fraunces',Georgia,serif; --body-font:'Karla',sans-serif; --label-font:'Karla',sans-serif;
  width:794px; min-height:1123px; background:var(--paper); color:var(--ink); font-family:var(--body-font);
  position:relative; box-sizing:border-box; isolation:isolate;
}
.cv-fs *{box-sizing:border-box}
.fs-head{display:flex; align-items:flex-end; justify-content:space-between; gap:24px}
.fs-heading{min-width:0}
.fs-eyebrow{font-family:var(--label-font);font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 7px}
.fs-name{font-family:var(--head-font);font-weight:500;font-size:44px;line-height:1;letter-spacing:-.02em;margin:0;color:var(--ink);text-wrap:balance}
.fs-name.long{font-size:35px}
.fs-name.vlong{font-size:28px}
.fs-role{font-family:var(--label-font);font-weight:700;font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);margin:10px 0 0}
.fs-contact{font-family:var(--body-font);font-size:11px;line-height:1.9;color:var(--ink-soft);text-align:right;flex:0 0 auto}
.fs-contact span{display:block;white-space:nowrap}
.fs-contact.icon span{display:flex;align-items:center;gap:6px;justify-content:flex-end}
.fs-contact.icon svg{flex:0 0 auto;opacity:.8}
.fs-avatar{width:60px;height:60px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font-family:var(--head-font);font-weight:600;font-size:20px;flex:0 0 auto}
.fs-avatar-photo{background-size:cover!important;background-position:center!important;font-size:0}

.fs-summary p{font-family:var(--body-font);font-size:12.6px;line-height:1.68;color:var(--ink-soft);margin:0}
.fs-body{display:grid;grid-template-columns:1fr 232px;column-gap:34px}
.fs-main{min-width:0}
.fs-aside{min-width:0}
.fs-block{margin-bottom:15px}
.fs-block:last-child{margin-bottom:0}
.fs-block>h2{font-family:var(--label-font);font-weight:800;font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink);display:flex;align-items:center;gap:8px;margin:0 0 11px}
.fs-block>h2::after{content:"";flex:1;height:1px;background:var(--line)}
.fs-entry{margin-bottom:13px}
.fs-entry:last-child{margin-bottom:0}
.fs-entry-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.fs-entry-role{font-family:var(--body-font);font-weight:700;font-size:12.4px;margin:0;color:var(--ink)}
.fs-entry-dates{font-family:var(--label-font);font-size:9.5px;font-weight:700;color:var(--ink-faint);white-space:nowrap;letter-spacing:.03em;font-variant-numeric:tabular-nums}
.fs-entry-org{font-family:var(--body-font);font-size:10.8px;color:var(--accent);font-weight:700;margin-top:2px}
.fs-entry-bullets{margin:6px 0 0;padding-left:14px}
.fs-entry-bullets li{font-size:10.8px;line-height:1.55;color:var(--ink-soft);margin-bottom:3px}
.fs-entry-detail{font-size:10.8px;line-height:1.55;color:var(--ink-soft);margin:3px 0 0}
.fs-skill-list{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.fs-skill-list li{font-size:10px;font-weight:600;padding:4px 9px;border-radius:100px;background:var(--accent-soft);color:var(--ink)}
.fs-skill-lines{list-style:none;margin:0;padding:0}
.fs-skill-lines li{font-size:10.6px;padding:5px 0;border-bottom:1px solid var(--line);color:var(--ink-soft)}
.fs-skill-lines li:last-child{border-bottom:0}
.fs-skill-dots{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.fs-skill-dots li{display:flex;align-items:center;justify-content:space-between;gap:10px}
.fs-sd-label{font-size:10.6px;color:var(--ink-soft);font-weight:600}
.fs-sd-meter{display:flex;gap:3px;flex:0 0 auto}
.fs-sd-meter i{width:7px;height:7px;border-radius:50%;background:var(--line);display:block;font-style:normal}
.fs-sd-meter i.on{background:var(--accent)}
.fs-skill-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.fs-skill-bars li{display:flex;flex-direction:column;gap:3px}
.fs-sb-label{font-size:10.6px;color:var(--ink-soft);font-weight:600}
.fs-sb-track{display:block;height:5px;border-radius:3px;background:var(--line);overflow:hidden}
.fs-sb-fill{display:block;height:100%;background:var(--accent);border-radius:3px}
.fs-block>h2 svg{flex:0 0 auto;width:12px;height:12px;opacity:.85}

/* structural modifiers, applied selectively per template — never decorative for its own sake */
.cv-fs.fs-mod-rule2 .fs-head{border-bottom:3px double var(--ink)!important;border-top:0}
.cv-fs.fs-mod-barL .fs-heading{border-left:4px solid var(--accent);padding-left:16px}
.cv-fs.fs-mod-barT .fs-head{border-top:6px solid var(--accent);padding-top:20px}
.cv-fs.fs-mod-tick .fs-block>h2::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);flex:0 0 auto}
.cv-fs.fs-mod-tick .fs-block>h2::after{display:none}
.cv-fs.fs-mod-track .fs-experience-list .fs-entry{position:relative;padding-left:22px;border-left:2px solid var(--line);padding-bottom:4px}
.cv-fs.fs-mod-track .fs-experience-list .fs-entry::before{content:"";position:absolute;left:-6px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--paper)}
.cv-fs.fs-mod-caps .fs-name{text-transform:uppercase}
.cv-fs.fs-mod-taghead .fs-block>h2{display:inline-flex;background:var(--accent-soft);color:var(--accent);padding:5px 12px;border-radius:100px}
.cv-fs.fs-mod-taghead .fs-block>h2::after{display:none}
.cv-fs.fs-mod-dotgrid .fs-head{position:relative}
.cv-fs.fs-mod-dotgrid .fs-head::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.4) 1px, transparent 1px);background-size:15px 15px;pointer-events:none}
/* Tint — the whole page reads as gently coloured cardstock rather than white paper; paired only with engines whose own colour block is a full, solid --accent (not an already-pale accent-soft field), so the block still pops against it */
.cv-fs.fs-mod-tint{background:color-mix(in srgb, var(--accent) 9%, var(--paper))}
/* Blockhead — section labels sit in a solid, square-cornered colour block instead of a pill or a rule; a firmer, more graphic cousin of taghead */
.cv-fs.fs-mod-blockhead .fs-block>h2{display:inline-flex;background:var(--accent-panel);color:#fff;padding:5px 12px;border-radius:3px}
.cv-fs.fs-mod-blockhead .fs-block>h2::after{display:none}
/* Datechip — dates render as a small solid colour block rather than quiet muted text */
.cv-fs.fs-mod-datechip .fs-entry-dates{display:inline-block;background:var(--accent-panel);color:#fff;padding:2px 8px;border-radius:3px}
/* Meridian — centered single column, the safest ATS-portable shape */
.fs-eng-meridian{padding:54px 60px 46px}
.fs-eng-meridian .fs-head{display:block;text-align:center;padding-bottom:22px;border-bottom:1px solid var(--line)}
.fs-eng-meridian .fs-avatar{display:none}
.fs-eng-meridian .fs-name{font-size:40px}
.fs-eng-meridian .fs-contact{text-align:center;margin-top:12px;display:flex;justify-content:center;gap:0;flex-wrap:wrap}
.fs-eng-meridian .fs-contact span{display:inline}
.fs-eng-meridian .fs-contact span:not(:last-child)::after{content:"·";margin:0 9px;color:var(--ink-faint)}
.fs-eng-meridian .fs-summary{text-align:center;max-width:560px;margin:20px auto 0;padding-bottom:20px;border-bottom:1px solid var(--line)}
.fs-eng-meridian .fs-body{grid-template-columns:1fr;padding-top:22px}
.fs-eng-meridian .fs-aside{margin-top:8px;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;border-top:1px solid var(--line);padding-top:18px}

/* Ledger — traditional left-aligned, double rule, narrow companion column */
.fs-eng-ledger{padding:50px 56px}
.fs-eng-ledger .fs-head{border-bottom:2px solid var(--ink);padding-bottom:18px}
.fs-eng-ledger .fs-avatar{display:none}
.fs-eng-ledger .fs-summary{padding:18px 0;border-bottom:1px solid var(--line)}
.fs-eng-ledger .fs-body{grid-template-columns:1fr 208px;padding-top:20px}
.fs-eng-ledger .fs-aside{border-left:1px solid var(--line);padding-left:20px}

/* Harbor — colored sidebar left carries identity + skills, main column is quiet paper */
.fs-eng-harbor{display:grid;grid-template-columns:248px 1fr;grid-template-rows:auto auto auto;grid-template-areas:"head sum" "head main" "side .";padding:0}
.fs-eng-harbor .fs-head{grid-area:head;background:var(--accent-panel);flex-direction:column;align-items:flex-start;padding:46px 26px 22px;border:0}
.fs-eng-harbor .fs-head .fs-eyebrow{color:rgba(255,255,255,.7)}
.fs-eng-harbor .fs-head .fs-name{color:#fff;font-size:34px;word-break:break-word;overflow-wrap:anywhere}
.fs-eng-harbor .fs-head .fs-name.long{font-size:27px}
.fs-eng-harbor .fs-head .fs-name.vlong{font-size:23px}
.fs-eng-harbor .fs-head .fs-role{color:rgba(255,255,255,.96)}
.fs-eng-harbor .fs-avatar{background:rgba(255,255,255,.18);color:#fff;margin-bottom:14px}
.fs-eng-harbor .fs-contact{text-align:left;color:rgba(255,255,255,.85);margin-top:16px}
.fs-eng-harbor .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-harbor .fs-summary{grid-area:sum;padding:46px 42px 18px;align-self:start}
.fs-eng-harbor .fs-body{display:contents}
.fs-eng-harbor .fs-aside{grid-area:side;background:var(--accent-panel);padding:0 26px 36px;color:rgba(255,255,255,.9)}
.fs-eng-harbor .fs-aside .fs-block>h2{color:#fff}
.fs-eng-harbor .fs-aside .fs-block>h2::after{background:rgba(255,255,255,.32)}
.fs-eng-harbor .fs-aside .fs-skill-list li{background:rgba(255,255,255,.16);color:#fff}
.fs-eng-harbor .fs-aside .fs-skill-lines li{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.94)}
.fs-eng-harbor .fs-aside .fs-entry-role,.fs-eng-harbor .fs-aside .fs-entry-detail{color:#fff}
.fs-eng-harbor .fs-aside .fs-entry-org{color:rgba(255,255,255,.85)}
.fs-eng-harbor .fs-aside .fs-entry-dates{color:rgba(255,255,255,.7)}
.fs-eng-harbor .fs-main{grid-area:main;padding:0 42px 40px}

/* Harbor Right — mirror of Harbor, sidebar on the right */
.fs-eng-harbor-r{display:grid;grid-template-columns:1fr 248px;grid-template-rows:auto auto auto;grid-template-areas:"sum head" "main head" ". side";padding:0}
.fs-eng-harbor-r .fs-head{grid-area:head;background:var(--accent-panel);flex-direction:column;align-items:flex-start;padding:46px 26px 22px;border:0}
.fs-eng-harbor-r .fs-head .fs-eyebrow{color:rgba(255,255,255,.7)}
.fs-eng-harbor-r .fs-head .fs-name{color:#fff;font-size:34px;word-break:break-word;overflow-wrap:anywhere}
.fs-eng-harbor-r .fs-head .fs-name.long{font-size:27px}
.fs-eng-harbor-r .fs-head .fs-name.vlong{font-size:23px}
.fs-eng-harbor-r .fs-head .fs-role{color:rgba(255,255,255,.96)}
.fs-eng-harbor-r .fs-avatar{background:rgba(255,255,255,.18);color:#fff;margin-bottom:14px}
.fs-eng-harbor-r .fs-contact{text-align:left;color:rgba(255,255,255,.85);margin-top:16px}
.fs-eng-harbor-r .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-harbor-r .fs-summary{grid-area:sum;padding:46px 42px 18px;align-self:start}
.fs-eng-harbor-r .fs-body{display:contents}
.fs-eng-harbor-r .fs-aside{grid-area:side;background:var(--accent-panel);padding:0 26px 36px;color:rgba(255,255,255,.9)}
.fs-eng-harbor-r .fs-aside .fs-block>h2{color:#fff}
.fs-eng-harbor-r .fs-aside .fs-block>h2::after{background:rgba(255,255,255,.32)}
.fs-eng-harbor-r .fs-aside .fs-skill-list li{background:rgba(255,255,255,.16);color:#fff}
.fs-eng-harbor-r .fs-aside .fs-skill-lines li{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.94)}
.fs-eng-harbor-r .fs-aside .fs-entry-role,.fs-eng-harbor-r .fs-aside .fs-entry-detail{color:#fff}
.fs-eng-harbor-r .fs-aside .fs-entry-org{color:rgba(255,255,255,.85)}
.fs-eng-harbor-r .fs-aside .fs-entry-dates{color:rgba(255,255,255,.7)}
.fs-eng-harbor-r .fs-main{grid-area:main;padding:0 42px 40px}

/* Banner — full-bleed color band across the top, calm body below */
.fs-eng-banner{padding:0}
.fs-eng-banner .fs-head{background:var(--accent-panel);padding:46px 56px 30px;align-items:flex-end}
.fs-eng-banner .fs-head .fs-eyebrow,.fs-eng-banner .fs-head .fs-name,.fs-eng-banner .fs-head .fs-role{color:#fff}
.fs-eng-banner .fs-contact{color:rgba(255,255,255,.85)}
.fs-eng-banner .fs-avatar{background:rgba(255,255,255,.18);color:#fff}
.fs-eng-banner .fs-summary{padding:22px 56px 0}
.fs-eng-banner .fs-body{padding:24px 56px 46px}

/* Rail — full-height identity column; skills sit back in the main flow, not boxed away */
.fs-eng-rail{display:grid;grid-template-columns:228px 1fr;grid-template-rows:auto 1fr;grid-template-areas:"head sum" "head main";padding:0}
.fs-eng-rail .fs-head{grid-area:head;background:var(--accent-panel);flex-direction:column;align-items:flex-start;padding:50px 26px;border:0}
.fs-eng-rail .fs-head .fs-eyebrow,.fs-eng-rail .fs-head .fs-name,.fs-eng-rail .fs-head .fs-role{color:#fff}
.fs-eng-rail .fs-head .fs-name{font-size:32px;word-break:break-word;overflow-wrap:anywhere}
.fs-eng-rail .fs-head .fs-name.long{font-size:26px}
.fs-eng-rail .fs-head .fs-name.vlong{font-size:22px}
.fs-eng-rail .fs-avatar{background:rgba(255,255,255,.18);color:#fff}
.fs-eng-rail .fs-contact{margin-top:18px;color:rgba(255,255,255,.85)}
.fs-eng-rail .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-rail .fs-summary{grid-area:sum;padding:48px 42px 16px;border-bottom:3px solid var(--accent)}
.fs-eng-rail .fs-body{grid-area:main;display:block;padding:20px 42px 40px}
.fs-eng-rail .fs-aside{margin-top:20px;padding-top:18px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);gap:22px}

/* Atlas — chronology made visible: a quiet timeline down the experience column */
.fs-eng-atlas{padding:52px 56px 46px}
.fs-eng-atlas .fs-head{padding-bottom:20px;border-bottom:1px solid var(--line)}
.fs-eng-atlas .fs-summary{padding:18px 0}
.fs-eng-atlas .fs-body{padding-top:10px}
.fs-eng-atlas .fs-main .fs-entry{position:relative;padding-left:24px;border-left:2px solid var(--line);padding-bottom:5px}
.fs-eng-atlas .fs-main .fs-entry::before{content:"";position:absolute;left:-6px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--paper)}
.fs-eng-atlas .fs-main .fs-entry:last-child{border-left-color:transparent;padding-bottom:0}

/* Folio — academic register: two balanced columns, dense and unhurried */
.fs-eng-folio{padding:58px 64px}
.fs-eng-folio .fs-head{display:block;text-align:center;padding-bottom:20px}
.fs-eng-folio .fs-avatar{display:none}
.fs-eng-folio .fs-name{font-size:37px}
.fs-eng-folio .fs-contact{text-align:center;display:flex;justify-content:center;gap:0;margin-top:10px;flex-wrap:wrap}
.fs-eng-folio .fs-contact span{display:inline}
.fs-eng-folio .fs-contact span:not(:last-child)::after{content:"·";margin:0 9px;color:var(--ink-faint)}
.fs-eng-folio .fs-summary{max-width:620px;margin:16px auto 0;text-align:center;padding-bottom:22px;border-bottom:1px solid var(--line)}
.fs-eng-folio .fs-body{grid-template-columns:1fr 1fr;column-gap:44px;padding-top:24px}
.fs-eng-folio .fs-aside{border-left:1px solid var(--line);padding-left:22px}

/* Masthead — a magazine byline treatment for the header, editorial two-column body */
.fs-eng-masthead{padding:0 54px 46px}
.fs-eng-masthead .fs-head{padding:36px 0 22px;border-bottom:3px solid var(--ink);align-items:flex-start}
.fs-eng-masthead .fs-avatar{display:none}
.fs-eng-masthead .fs-name{font-size:56px;line-height:.92}
.fs-eng-masthead .fs-contact{text-align:left;columns:2;column-gap:16px}
.fs-eng-masthead .fs-summary{padding:20px 0;font-style:italic;border-bottom:1px solid var(--line)}
.fs-eng-masthead .fs-summary p{font-size:14px}
.fs-eng-masthead .fs-body{grid-template-columns:1.35fr .65fr;padding-top:24px}

/* Grid — modular cards for a portfolio-minded, non-linear read */
.fs-eng-grid{padding:38px 42px;background:var(--accent-soft)}
.fs-eng-grid .fs-head{background:var(--paper);padding:24px;border-radius:16px;box-shadow:0 6px 18px rgba(20,20,15,.07)}
.fs-eng-grid .fs-summary{background:var(--paper);margin-top:14px;padding:18px 22px;border-radius:14px}
.fs-eng-grid .fs-body{margin-top:14px;grid-template-columns:1fr 220px;column-gap:14px}
.fs-eng-grid .fs-main,.fs-eng-grid .fs-aside{background:var(--paper);padding:20px;border-radius:14px}

/* Compress — tight rhythm for a long, evidence-heavy career history */
.fs-eng-compress{padding:34px 42px}
.fs-eng-compress .fs-head{padding-bottom:14px;border-bottom:1px solid var(--line)}
.fs-eng-compress .fs-name{font-size:31px}
.fs-eng-compress .fs-summary{padding:12px 0}
.fs-eng-compress .fs-summary p{font-size:11.2px}
.fs-eng-compress .fs-body{grid-template-columns:1fr 196px;column-gap:26px;padding-top:8px}
.fs-eng-compress .fs-block{margin-bottom:11px}
.fs-eng-compress .fs-entry{margin-bottom:9px}
.fs-eng-compress .fs-entry-bullets li,.fs-eng-compress .fs-entry-detail{font-size:10px}

/* Wedge — one deliberate asymmetric cut separating identity from the record */
.fs-eng-wedge{padding-top:0}
.fs-eng-wedge .fs-head{position:relative;padding:46px 60px 26px;align-items:flex-start;overflow:hidden}
.fs-eng-wedge .fs-head::before{content:"";position:absolute;right:0;top:0;bottom:0;width:230px;background:var(--accent-soft);clip-path:polygon(38% 0,100% 0,100% 100%,0 100%)}
.fs-eng-wedge .fs-heading{position:relative;z-index:1}
.fs-eng-wedge .fs-contact{position:relative;z-index:1;text-align:right}
.fs-eng-wedge .fs-summary{padding:0 60px 20px;margin-top:14px;border-bottom:1px solid var(--line)}
.fs-eng-wedge .fs-body{padding:22px 60px 44px;grid-template-columns:1fr 214px}
.fs-eng-wedge .fs-main{border-left:3px solid var(--accent);padding-left:22px}

/* Badge — centred identity on a soft colour field, a portrait badge standing in for a photo */
.fs-eng-badge{padding:0}
.fs-eng-badge .fs-head{background:var(--accent-soft);flex-direction:column;align-items:center;text-align:center;padding:54px 60px 32px;gap:0}
.fs-eng-badge .fs-avatar{width:92px;height:92px;font-size:30px;border:4px solid var(--paper);box-shadow:0 0 0 2px var(--accent);margin-bottom:16px}
.fs-eng-badge .fs-heading{text-align:center}
.fs-eng-badge .fs-eyebrow{color:var(--accent)}
.fs-eng-badge .fs-contact{text-align:center;margin-top:14px;display:flex;justify-content:center;flex-wrap:wrap;gap:4px 16px}
.fs-eng-badge .fs-summary{max-width:600px;margin:22px auto 0;text-align:center;padding-bottom:22px}
.fs-eng-badge .fs-body{padding:4px 56px 44px}

/* Halfsplit — a curved colour panel carries identity and skills; the record itself stays on quiet paper */
.fs-eng-halfsplit{display:grid;grid-template-columns:290px 1fr;grid-template-rows:auto auto auto;grid-template-areas:"head sum" "head main" "side .";padding:0}
.fs-eng-halfsplit .fs-head{grid-area:head;background:var(--accent-panel);flex-direction:column;align-items:center;text-align:center;justify-content:center;padding:54px 30px 26px;border:0;border-radius:0 40px 0 0}
.fs-eng-halfsplit .fs-head .fs-eyebrow,.fs-eng-halfsplit .fs-head .fs-role{color:#fff;text-align:center}
.fs-eng-halfsplit .fs-head .fs-name{color:#fff;text-align:center;font-size:35px;word-break:break-word;overflow-wrap:anywhere}
.fs-eng-halfsplit .fs-head .fs-name.long{font-size:28px}
.fs-eng-halfsplit .fs-head .fs-name.vlong{font-size:23px}
.fs-eng-halfsplit .fs-heading{text-align:center}
.fs-eng-halfsplit .fs-avatar{background:rgba(255,255,255,.2);color:#fff;width:84px;height:84px;font-size:28px;margin:0 auto 16px}
.fs-eng-halfsplit .fs-contact{text-align:center;margin-top:16px;display:flex;flex-direction:column;align-items:center;gap:8px}
.fs-eng-halfsplit .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-halfsplit .fs-summary{grid-area:sum;padding:46px 42px 18px;align-self:start}
.fs-eng-halfsplit .fs-body{display:contents}
.fs-eng-halfsplit .fs-aside{grid-area:side;background:var(--accent-panel);padding:0 30px 40px;color:rgba(255,255,255,.9);border-radius:0 0 40px 0}
.fs-eng-halfsplit .fs-aside .fs-block>h2{color:#fff}
.fs-eng-halfsplit .fs-aside .fs-block>h2::after{background:rgba(255,255,255,.32)}
.fs-eng-halfsplit .fs-aside .fs-skill-list li{background:rgba(255,255,255,.16);color:#fff}
.fs-eng-halfsplit .fs-aside .fs-skill-lines li{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.94)}
.fs-eng-halfsplit .fs-aside .fs-entry-role,.fs-eng-halfsplit .fs-aside .fs-entry-detail{color:#fff}
.fs-eng-halfsplit .fs-aside .fs-entry-org{color:rgba(255,255,255,.85)}
.fs-eng-halfsplit .fs-aside .fs-entry-dates{color:rgba(255,255,255,.7)}
.fs-eng-halfsplit .fs-aside .fs-sd-label{color:#fff}
.fs-eng-halfsplit .fs-aside .fs-sd-meter i{background:rgba(255,255,255,.25)}
.fs-eng-halfsplit .fs-aside .fs-sd-meter i.on{background:#fff}
.fs-eng-halfsplit .fs-main{grid-area:main;padding:0 44px 40px}

/* Kiosk — a full-bleed colour band up top holds the portrait badge, the record reads calmly below */
.fs-eng-kiosk{padding:0}
.fs-eng-kiosk .fs-head{background:var(--accent-panel);flex-direction:column;align-items:center;text-align:center;padding:44px 50px 30px;border:0}
.fs-eng-kiosk .fs-avatar{background:rgba(255,255,255,.2);color:#fff;width:80px;height:80px;font-size:26px;margin-bottom:14px;border:3px solid rgba(255,255,255,.5)}
.fs-eng-kiosk .fs-head .fs-eyebrow{color:rgba(255,255,255,.75)}
.fs-eng-kiosk .fs-head .fs-name,.fs-eng-kiosk .fs-head .fs-role{color:#fff}
.fs-eng-kiosk .fs-heading{text-align:center}
.fs-eng-kiosk .fs-contact{text-align:center;margin-top:14px;display:flex;justify-content:center;flex-wrap:wrap;gap:4px 18px}
.fs-eng-kiosk .fs-contact span{color:rgba(255,255,255,.88)}
.fs-eng-kiosk .fs-summary{padding:24px 54px 0;text-align:center;max-width:600px;margin:0 auto}
.fs-eng-kiosk .fs-body{padding:26px 54px 46px}

/* Strata — a single quiet column where section labels sit in soft colour tags, not rules */
.fs-eng-strata{padding:50px 56px 46px}
.fs-eng-strata .fs-head{padding-bottom:18px;position:relative}
.fs-eng-strata .fs-head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--accent)}
.fs-eng-strata .fs-summary{padding:18px 0}
.fs-eng-strata .fs-block>h2{display:inline-flex;background:var(--accent-soft);color:color-mix(in srgb, var(--accent) 85%, black);padding:5px 12px;border-radius:4px;margin-bottom:13px}
.fs-eng-strata .fs-block>h2::after{display:none}
.fs-eng-strata .fs-body{padding-top:6px}

/* Ribbon — a folded colour corner, the least literal way to keep the mood board's ribbon motif without a 3D graphic */
.fs-eng-ribbon{position:relative}
.fs-eng-ribbon::before{content:"";position:absolute;top:0;right:0;width:100px;height:100px;background:var(--accent);clip-path:polygon(100% 0,100% 100%,0 0);z-index:0}
.fs-eng-ribbon .fs-head{position:relative;z-index:1;padding:56px 60px 24px;border-bottom:1px solid var(--line)}
.fs-eng-ribbon .fs-summary{padding:18px 60px 0}
.fs-eng-ribbon .fs-body{padding:22px 60px 44px}

/* Poster — one oversized name treatment carries the page; everything else steps back and reads quietly */
.fs-eng-poster{padding:0}
.fs-eng-poster .fs-head{flex-direction:column;align-items:flex-start;background:var(--accent-soft);padding:50px 56px 34px}
.fs-eng-poster .fs-avatar{display:none}
.fs-eng-poster .fs-eyebrow{color:var(--accent)}
.fs-eng-poster .fs-name{font-size:76px;line-height:.9;letter-spacing:-.03em}
.fs-eng-poster .fs-name.long{font-size:58px}
.fs-eng-poster .fs-name.vlong{font-size:44px}
.fs-eng-poster .fs-role{margin-top:14px;font-size:13px}
.fs-eng-poster .fs-contact{text-align:left;margin-top:18px;display:flex;flex-wrap:wrap;gap:4px 16px}
.fs-eng-poster .fs-contact span{color:var(--ink-soft)}
.fs-eng-poster .fs-summary{padding:22px 56px 0;max-width:640px}
.fs-eng-poster .fs-body{padding:22px 56px 44px}

/* Arc — a curved colour field behind the portrait badge, softer than a hard banner edge */
.fs-eng-arc{padding:0}
.fs-eng-arc .fs-head{position:relative;flex-direction:column;align-items:center;text-align:center;padding:46px 50px 70px;border:0;z-index:1}
.fs-eng-arc .fs-head::before{content:"";position:absolute;left:0;right:0;top:0;height:100%;background:var(--accent-panel);clip-path:ellipse(75% 100% at 50% 0%);z-index:-1}
.fs-eng-arc .fs-head .fs-eyebrow{color:rgba(255,255,255,.75)}
.fs-eng-arc .fs-head .fs-name,.fs-eng-arc .fs-head .fs-role{color:#fff}
.fs-eng-arc .fs-avatar{background:rgba(255,255,255,.2);color:#fff;width:78px;height:78px;font-size:26px;margin-bottom:14px;border:3px solid rgba(255,255,255,.5)}
.fs-eng-arc .fs-heading{text-align:center}
.fs-eng-arc .fs-contact{text-align:center;margin-top:12px;display:flex;justify-content:center;flex-wrap:wrap;gap:4px 16px}
.fs-eng-arc .fs-contact span{color:rgba(255,255,255,.9)}
.fs-eng-arc .fs-summary{padding:30px 54px 0;text-align:center;max-width:600px;margin:0 auto}
.fs-eng-arc .fs-body{padding:26px 54px 46px}

/* Spectrum — a full-height colour sidebar with a graduated spine, the boldest of the sidebar family */
.fs-eng-spectrum{display:grid;grid-template-columns:250px 1fr;grid-template-rows:auto auto auto;grid-template-areas:"head sum" "head main" "side .";padding:0}
.fs-eng-spectrum .fs-head{grid-area:head;background:var(--accent-panel);flex-direction:column;align-items:flex-start;padding:40px 24px 20px;border:0}
.fs-eng-spectrum .fs-head .fs-eyebrow,.fs-eng-spectrum .fs-head .fs-role{color:#fff}
.fs-eng-spectrum .fs-head .fs-name{color:#fff;font-size:33px;word-break:break-word;overflow-wrap:anywhere}
.fs-eng-spectrum .fs-head .fs-name.long{font-size:26px}
.fs-eng-spectrum .fs-head .fs-name.vlong{font-size:22px}
.fs-eng-spectrum .fs-avatar{background:rgba(255,255,255,.2);color:#fff;margin-bottom:12px}
.fs-eng-spectrum .fs-contact{text-align:left;margin-top:14px}
.fs-eng-spectrum .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-spectrum .fs-summary{grid-area:sum;padding:40px 40px 16px;align-self:start}
.fs-eng-spectrum .fs-body{display:contents}
.fs-eng-spectrum .fs-aside{grid-area:side;background:var(--accent-panel);padding:20px 24px 30px 30px;color:rgba(255,255,255,.92);position:relative}
.fs-eng-spectrum .fs-aside::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:linear-gradient(180deg, rgba(255,255,255,.9) 0 33%, rgba(255,255,255,.55) 33% 66%, rgba(255,255,255,.22) 66% 100%)}
.fs-eng-spectrum .fs-aside .fs-block>h2{color:#fff}
.fs-eng-spectrum .fs-aside .fs-block>h2::after{background:rgba(255,255,255,.32)}
.fs-eng-spectrum .fs-aside .fs-skill-list li{background:rgba(255,255,255,.16);color:#fff}
.fs-eng-spectrum .fs-aside .fs-skill-lines li{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.94)}
.fs-eng-spectrum .fs-aside .fs-entry-role,.fs-eng-spectrum .fs-aside .fs-entry-detail{color:#fff}
.fs-eng-spectrum .fs-aside .fs-entry-org{color:rgba(255,255,255,.85)}
.fs-eng-spectrum .fs-aside .fs-entry-dates{color:rgba(255,255,255,.7)}
.fs-eng-spectrum .fs-aside .fs-sd-label{color:#fff}
.fs-eng-spectrum .fs-aside .fs-sd-meter i{background:rgba(255,255,255,.25)}
.fs-eng-spectrum .fs-aside .fs-sd-meter i.on{background:#fff}
.fs-eng-spectrum .fs-main{grid-area:main;padding:0 40px 40px}

/* Panel — a bold, inset colour block carries identity like a card pinned to the page; the record lives on a gently tinted ground beneath it */
.fs-eng-panel{padding:0;background:color-mix(in srgb, var(--accent) 9%, var(--paper))}
.fs-eng-panel .fs-head{background:var(--accent-panel);border-radius:20px;margin:46px 50px 0;padding:32px 36px;align-items:center;gap:22px}
.fs-eng-panel .fs-head .fs-eyebrow{color:rgba(255,255,255,.75)}
.fs-eng-panel .fs-head .fs-name,.fs-eng-panel .fs-head .fs-role{color:#fff}
.fs-eng-panel .fs-avatar{background:rgba(255,255,255,.2);color:#fff}
.fs-eng-panel .fs-contact{color:rgba(255,255,255,.85)}
.fs-eng-panel .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-panel .fs-summary{padding:24px 50px 0}
.fs-eng-panel .fs-body{padding:22px 50px 46px}
.fs-eng-panel .fs-block>h2{border-left:8px solid var(--accent);padding-left:12px}
.fs-eng-panel .fs-block>h2::after{background:var(--line)}

/* Stamp — a solid colour block seals the header like a stamp or seal; the tinted page and solid-block section tags carry the same idea through the record */
.fs-eng-stamp{padding:52px 56px 46px;background:color-mix(in srgb, var(--accent) 9%, var(--paper))}
.fs-eng-stamp .fs-head{align-items:flex-start;padding-right:112px;position:relative}
.fs-eng-stamp .fs-avatar{position:absolute;right:0;top:0;width:86px;height:86px;border-radius:14px;background:var(--accent-panel);color:#fff;font-size:28px}
.fs-eng-stamp .fs-contact{margin-top:2px}
.fs-eng-stamp .fs-summary{padding:22px 0 0}
.fs-eng-stamp .fs-body{padding-top:22px}
.fs-eng-stamp .fs-entry-dates{display:inline-block;background:var(--accent-panel);color:#fff;padding:2px 8px;border-radius:4px}
.fs-eng-stamp .fs-block>h2{background:var(--accent-panel);color:#fff;display:inline-flex;padding:5px 12px;border-radius:4px}
.fs-eng-stamp .fs-block>h2::after{display:none}

.fs-eng-harbor .fs-contact.icon span,.fs-eng-harbor-r .fs-contact.icon span,.fs-eng-rail .fs-contact.icon span,.fs-eng-halfsplit .fs-contact.icon span,.fs-eng-spectrum .fs-contact.icon span{justify-content:flex-start}
.fs-eng-poster .fs-contact.icon span{justify-content:flex-start}
.fs-eng-arc .fs-contact.icon span{display:inline-flex;justify-content:flex-start}
.fs-eng-meridian .fs-contact.icon span,.fs-eng-folio .fs-contact.icon span,.fs-eng-kiosk .fs-contact.icon span,.fs-eng-badge .fs-contact.icon span{display:inline-flex;justify-content:flex-start}
.fs-eng-panel .fs-contact.icon span{justify-content:flex-end}
.fs-eng-stamp .fs-contact.icon span{justify-content:flex-start}
.fs-eng-harbor .fs-aside .fs-sd-label,.fs-eng-harbor-r .fs-aside .fs-sd-label{color:#fff}
.fs-eng-harbor .fs-aside .fs-sd-meter i,.fs-eng-harbor-r .fs-aside .fs-sd-meter i{background:rgba(255,255,255,.25)}
.fs-eng-harbor .fs-aside .fs-sd-meter i.on,.fs-eng-harbor-r .fs-aside .fs-sd-meter i.on{background:#fff}
.fs-eng-rail .fs-aside .fs-sd-label{color:var(--ink-soft)}
.fs-eng-harbor .fs-aside .fs-sb-label,.fs-eng-harbor-r .fs-aside .fs-sb-label,.fs-eng-halfsplit .fs-aside .fs-sb-label,.fs-eng-spectrum .fs-aside .fs-sb-label{color:#fff}
.fs-eng-harbor .fs-aside .fs-sb-track,.fs-eng-harbor-r .fs-aside .fs-sb-track,.fs-eng-halfsplit .fs-aside .fs-sb-track,.fs-eng-spectrum .fs-aside .fs-sb-track{background:rgba(255,255,255,.28)}
.fs-eng-harbor .fs-aside .fs-sb-fill,.fs-eng-harbor-r .fs-aside .fs-sb-fill,.fs-eng-halfsplit .fs-aside .fs-sb-fill,.fs-eng-spectrum .fs-aside .fs-sb-fill{background:#fff}

/* Skill chips — icon + pill, each icon nudged to a different hue so the row reads as a colourful grid rather than one flat tint */
.fs-skill-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:7px}
.fs-skill-chips li{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;padding:5px 10px 5px 7px;border-radius:100px;background:var(--accent-soft);color:var(--ink)}
.fs-skill-chips li svg{width:11px;height:11px;flex:0 0 auto;color:var(--accent)}
.fs-skill-chips li:nth-child(2n) svg{filter:hue-rotate(35deg)}
.fs-skill-chips li:nth-child(3n) svg{filter:hue-rotate(-35deg)}
.fs-skill-chips li:nth-child(4n) svg{filter:hue-rotate(70deg)}
/* Badge row — interests as small pill badges instead of a joined sentence; opt-in via mod-badges */
.fs-badge-row{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.fs-badge-row li{font-size:9.5px;font-weight:700;padding:6px 11px;border-radius:100px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent)}

/* Billboard — dark info strip on top, then the name printed as a giant poster headline underneath */
.fs-eng-billboard{padding:0}
.fs-eng-billboard .fs-head{display:flex;flex-direction:column;background:var(--ink);padding:32px 46px 36px;border:0}
.fs-eng-billboard .fs-contact{order:-1;color:#fff;opacity:.82;text-align:left;display:flex;gap:16px;flex-wrap:wrap;font-size:10.5px;margin-bottom:20px}
.fs-eng-billboard .fs-contact span{display:inline}
.fs-eng-billboard .fs-avatar{display:none}
.fs-eng-billboard .fs-eyebrow{color:rgba(255,255,255,.72)}
.fs-eng-billboard .fs-name{font-family:var(--head-font);font-weight:700;font-size:100px;line-height:.86;letter-spacing:-.03em;text-transform:uppercase;color:color-mix(in srgb, var(--accent) 60%, #fff);margin:14px 0 0;word-break:break-word;overflow-wrap:anywhere}
.fs-eng-billboard .fs-name.long{font-size:68px}
.fs-eng-billboard .fs-name.vlong{font-size:42px}
.fs-eng-billboard .fs-role{color:#fff;opacity:.72;margin-top:10px}
.fs-eng-billboard .fs-summary{padding:22px 46px;border-bottom:1px solid var(--line)}
.fs-eng-billboard .fs-body{padding:26px 46px 42px}

/* Broadcast — bold personality-forward masthead with a colourful icon-chip skill grid below */
.fs-eng-broadcast{padding:0}
.fs-eng-broadcast .fs-head{background:var(--ink);padding:36px 46px 30px;border:0;align-items:flex-start;flex-wrap:wrap}
.fs-eng-broadcast .fs-eyebrow{color:rgba(255,255,255,.72);font-size:12px}
.fs-eng-broadcast .fs-eyebrow::before{content:'\21b3  ';color:var(--accent)}
.fs-eng-broadcast .fs-name{color:#fff;font-size:32px}
.fs-eng-broadcast .fs-role{color:rgba(255,255,255,.92);margin-top:8px}
.fs-eng-broadcast .fs-avatar{display:none}
.fs-eng-broadcast .fs-contact{color:#fff;opacity:.85;text-align:left;margin-top:16px;display:flex;gap:14px;flex-wrap:wrap;flex:1 0 100%}
.fs-eng-broadcast .fs-contact span{display:inline}
.fs-eng-broadcast .fs-contact.icon span{display:inline-flex;justify-content:flex-start}
.fs-eng-broadcast .fs-body{padding:28px 46px 42px}
.fs-eng-broadcast .fs-block>h2{color:var(--accent)}

/* Scrapbook — kraft-paper ground, a taped photo, a handwritten eyebrow, stamp-style section labels */
.fs-eng-scrapbook{--paper:#E7D9BC;background-color:var(--paper);background-image:repeating-linear-gradient(0deg, rgba(60,45,20,.03) 0 2px, transparent 2px 4px);padding:44px 46px 42px}
.fs-eng-scrapbook .fs-head{position:relative;padding-bottom:22px;border-bottom:2px dashed var(--ink-faint)}
.fs-eng-scrapbook .fs-head::before{content:'';position:absolute;top:-16px;left:30px;width:74px;height:22px;background:color-mix(in srgb, var(--accent) 55%, transparent);transform:rotate(-4deg)}
.fs-eng-scrapbook .fs-eyebrow{font-family:'Caveat',cursive;font-size:23px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--accent)}
.fs-eng-scrapbook .fs-avatar{border-radius:4px;border:6px solid #fff;box-shadow:0 3px 8px rgba(30,20,5,.28);transform:rotate(-3deg)}
.fs-eng-scrapbook .fs-avatar-photo{border-radius:4px}
.fs-eng-scrapbook .fs-block>h2{display:inline-flex;background:var(--accent-panel);color:#fff;padding:4px 11px;transform:rotate(-1.4deg);border-radius:2px;box-shadow:1px 2px 0 rgba(30,20,5,.22)}
.fs-eng-scrapbook .fs-block>h2::after{display:none}

/* Bloom — clean two-column content with a playful pastel confetti border tucked into the corners */
.fs-eng-bloom{padding:48px 48px 44px;position:relative;overflow:hidden}
.fs-eng-bloom::before,.fs-eng-bloom::after{content:'';position:absolute;width:230px;height:230px;border-radius:50%;z-index:-1;opacity:.4;filter:blur(1px)}
.fs-eng-bloom::before{top:-100px;left:-100px;background:var(--accent)}
.fs-eng-bloom::after{bottom:-110px;right:-100px;background:var(--accent-soft)}
.fs-eng-bloom .fs-head{align-items:flex-start}
.fs-eng-bloom .fs-avatar{width:66px;height:66px;border:3px solid var(--paper);box-shadow:0 0 0 3px var(--accent-soft)}
.fs-eng-bloom .fs-eyebrow{color:var(--accent)}
.fs-eng-bloom .fs-name{font-size:34px}

/* Halo — a soft gradient frame around the whole page, and a ringed halo behind the portrait */
.fs-eng-halo{padding:50px 48px 44px;border:6px solid transparent;background-image:linear-gradient(var(--paper),var(--paper)),linear-gradient(135deg,var(--accent),var(--accent-soft));background-origin:border-box;background-clip:padding-box,border-box}
.fs-eng-halo .fs-head{align-items:center}
.fs-eng-halo .fs-avatar{position:relative;width:78px;height:78px}
.fs-eng-halo .fs-avatar::before{content:'';position:absolute;inset:-6px;border-radius:50%;background:conic-gradient(from 0deg, var(--accent), var(--accent-soft), var(--accent));z-index:-1}
.fs-eng-halo .fs-name{font-size:36px}
.fs-eng-halo .fs-eyebrow{color:var(--accent)}

/* Dial — a centred, full-width identity header (dashed halo ring behind the portrait) sitting
   above a standard two-column body — meter-style skills, interests as little pill badges */
.fs-eng-dial{padding:0}
.fs-eng-dial .fs-head{flex-direction:column;align-items:center;text-align:center;padding:38px 44px 24px;border:0;border-bottom:1px solid var(--line)}
.fs-eng-dial .fs-heading{text-align:center}
.fs-eng-dial .fs-avatar{position:relative;width:74px;height:74px;margin-bottom:14px}
.fs-eng-dial .fs-avatar::after{content:'';position:absolute;inset:-5px;border-radius:50%;border:2px dashed var(--accent);opacity:.65}
.fs-eng-dial .fs-name{font-size:28px}
.fs-eng-dial .fs-eyebrow{color:var(--accent)}
.fs-eng-dial .fs-contact{text-align:center;margin-top:14px;display:flex;justify-content:center;flex-wrap:wrap;gap:4px 16px}
.fs-eng-dial .fs-contact span{display:inline}
.fs-eng-dial .fs-contact.icon span{display:inline-flex;justify-content:flex-start}
.fs-eng-dial .fs-summary{text-align:center;max-width:600px;margin:0 auto;padding:20px 44px 0}
.fs-eng-dial .fs-body{padding:22px 44px 42px}
.fs-eng-dial .fs-aside{border-left:1px solid var(--line);padding-left:22px}

/* Tag — a rounded photo paired with a hanging swing-tag label instead of a plain eyebrow line */
.fs-eng-tag{padding:0}
.fs-eng-tag .fs-head{align-items:flex-start;padding:50px 54px 26px;gap:26px}
.fs-eng-tag .fs-avatar{width:98px;height:98px;border-radius:18px;flex:0 0 auto}
.fs-eng-tag .fs-avatar-photo{border-radius:18px}
.fs-eng-tag .fs-heading{padding-top:4px}
.fs-eng-tag .fs-eyebrow{display:inline-flex;align-items:center;position:relative;background:color-mix(in srgb, var(--accent) 88%, black);color:#fff;padding:5px 14px 5px 18px;border-radius:3px;transform:rotate(-2deg);margin:0 0 14px;box-shadow:0 3px 6px rgba(0,0,0,.16)}
.fs-eng-tag .fs-eyebrow::before{content:'';position:absolute;left:5px;top:50%;width:6px;height:6px;background:var(--paper);border-radius:50%;transform:translateY(-50%)}
.fs-eng-tag .fs-name{font-size:36px}
.fs-eng-tag .fs-role{margin-top:8px}
.fs-eng-tag .fs-contact{text-align:right;align-self:flex-start;margin-top:6px}
.fs-eng-tag .fs-summary{padding:20px 54px 0;margin-top:8px;border-top:1px solid var(--line)}
.fs-eng-tag .fs-body{padding:22px 54px 44px}
.fs-eng-tag .fs-contact.icon span{justify-content:flex-end}

/* Grain — a full-bleed grainy portrait header behind a halftone dot overlay; name is printed direct on the photo, always safe on the dark scrim beneath it even with no photo set */
.fs-eng-grain{padding:0}
.fs-eng-grain .fs-head{position:relative;flex-direction:column;align-items:flex-start;justify-content:flex-end;min-height:300px;padding:0 50px 28px;border:0;overflow:hidden;background:var(--ink)}
.fs-eng-grain .fs-avatar.fs-avatar-photo{position:absolute;inset:0;width:100%;height:100%;border-radius:0;margin:0;z-index:0;filter:grayscale(.35) contrast(1.08) brightness(.78);background-position:center 30%!important}
.fs-eng-grain .fs-avatar:not(.fs-avatar-photo){display:none}
.fs-eng-grain .fs-head::before{content:'';position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.32) 1px, transparent 1.4px);background-size:5px 5px;mix-blend-mode:overlay;z-index:1}
.fs-eng-grain .fs-head::after{content:'';position:absolute;left:0;right:0;bottom:0;height:78%;background:linear-gradient(180deg, transparent, var(--ink) 94%);z-index:1}
.fs-eng-grain .fs-heading,.fs-eng-grain .fs-contact{position:relative;z-index:2}
.fs-eng-grain .fs-eyebrow{color:rgba(255,255,255,.78)}
.fs-eng-grain .fs-name{color:#fff;font-size:44px}
.fs-eng-grain .fs-role{color:rgba(255,255,255,.88)}
.fs-eng-grain .fs-contact{color:rgba(255,255,255,.85);text-align:left;margin-top:14px;display:flex;flex-wrap:wrap;gap:4px 16px}
.fs-eng-grain .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-grain .fs-contact.icon span{justify-content:flex-start}
.fs-eng-grain .fs-summary{padding:24px 50px 0}
.fs-eng-grain .fs-body{padding:22px 50px 44px}

/* Spine — a full-height accent stripe along the left edge carries the real eyebrow label vertically */
.fs-eng-spine{padding:56px 56px 46px 96px;position:relative}
.fs-eng-spine::before{content:'';position:absolute;left:0;top:0;bottom:0;width:56px;background:var(--accent)}
.fs-eng-spine .fs-eyebrow{position:absolute;left:0;top:0;bottom:0;width:56px;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);color:#fff;margin:0;font-size:11px;letter-spacing:.22em;z-index:1;text-align:center}
.fs-eng-spine .fs-avatar{display:none}
.fs-eng-spine .fs-head{padding-bottom:20px;border-bottom:1px solid var(--line)}
.fs-eng-spine .fs-summary{padding:18px 0}
.fs-eng-spine .fs-body{padding-top:18px}
.fs-eng-spine .fs-contact.icon span{justify-content:flex-end}

/* Slab — the Rail grid pattern (identity column spans both rows, body stays block-level) carrying a full-height, darkened photo panel instead of a flat colour fill */
.fs-eng-slab{display:grid;grid-template-columns:258px 1fr;grid-template-rows:auto 1fr;grid-template-areas:"head sum" "head main";padding:0}
.fs-eng-slab .fs-head{grid-area:head;position:relative;background:var(--ink);display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0;border:0;overflow:hidden}
.fs-eng-slab .fs-avatar.fs-avatar-photo{position:relative;width:100%;height:320px;flex:0 0 auto;border-radius:0;margin:0;background-position:center 22%!important;filter:contrast(1.03) saturate(1.04)}
.fs-eng-slab .fs-avatar:not(.fs-avatar-photo){display:none}
.fs-eng-slab .fs-heading{padding:26px 28px 0}
.fs-eng-slab .fs-head .fs-eyebrow{color:rgba(255,255,255,.75)}
.fs-eng-slab .fs-head .fs-name{color:#fff;font-size:27px;word-break:break-word;overflow-wrap:anywhere}
.fs-eng-slab .fs-head .fs-name.long{font-size:22px}
.fs-eng-slab .fs-head .fs-name.vlong{font-size:19px}
.fs-eng-slab .fs-head .fs-role{color:rgba(255,255,255,.9)}
.fs-eng-slab .fs-contact{padding:0 28px 32px;margin-top:16px;color:rgba(255,255,255,.85);text-align:left}
.fs-eng-slab .fs-contact span{color:rgba(255,255,255,.85)}
.fs-eng-slab .fs-contact.icon span{justify-content:flex-start}
.fs-eng-slab .fs-summary{grid-area:sum;padding:48px 42px 16px;border-bottom:3px solid var(--accent)}
.fs-eng-slab .fs-body{grid-area:main;display:block;padding:20px 42px 40px}
.fs-eng-slab .fs-aside{margin-top:20px;padding-top:18px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);gap:22px}

/* ===== A second curation pass — the Tag/Grain/Spine/Slab designs users didn't like (#231-250)
   retired and replaced with 20 new designs on four fresh engines (Brief / Poise / Editorial /
   Orbit), built from reference moodboards rather than the old photo-panel formula. ===== */

/* Brief — rounded card, a square photo beside the name, full-width summary and experience, then
   a soft tinted footer band where Skills/Education/etc. sit as flexible columns instead of a
   narrow side rail. */
.fs-eng-brief{padding:0;border-radius:20px;border:1px solid var(--line);overflow:hidden}
.fs-eng-brief .fs-head{align-items:center;padding:36px 42px 20px;gap:20px}
.fs-eng-brief .fs-avatar{width:86px;height:86px;border-radius:16px}
.fs-eng-brief .fs-name{font-size:27px}
.fs-eng-brief .fs-role{color:var(--accent);margin-top:6px}
.fs-eng-brief .fs-contact{text-align:right}
.fs-eng-brief .fs-summary{padding:0 42px 22px}
.fs-eng-brief .fs-summary p{padding-top:18px;border-top:1px solid var(--line)}
.fs-eng-brief .fs-body{display:block;padding:0 42px}
.fs-eng-brief .fs-main{padding-bottom:24px}
.fs-eng-brief .fs-aside{margin:0 -42px;padding:24px 42px 30px;background:var(--accent-soft);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:24px 34px}
.fs-eng-brief .fs-aside .fs-block{flex:1 1 190px;margin-bottom:0}

/* Poise — a soft tinted header band with a centred circular photo and stacked name/role/contact,
   then a plain two-column body split by a vertical rule. */
.fs-eng-poise{padding:0;border-radius:24px;border:1px solid var(--line);overflow:hidden}
.fs-eng-poise .fs-head{flex-direction:column;align-items:center;text-align:center;background:var(--accent-soft);padding:38px 44px 28px;gap:8px}
.fs-eng-poise .fs-avatar{order:-1;width:80px;height:80px;border:3px solid var(--paper);box-shadow:0 0 0 1px var(--line);margin-bottom:4px}
.fs-eng-poise .fs-heading{width:100%}
.fs-eng-poise .fs-eyebrow{display:flex;justify-content:center}
.fs-eng-poise .fs-name{font-size:22px;letter-spacing:.02em}
.fs-eng-poise .fs-role{color:var(--ink-soft)}
.fs-eng-poise .fs-contact{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;margin-top:6px}
.fs-eng-poise .fs-contact.icon{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:4px 16px}
.fs-eng-poise .fs-contact.icon span{display:flex;align-items:center;gap:5px;white-space:nowrap}
.fs-eng-poise .fs-summary{padding:26px 44px 0;text-align:center}
.fs-eng-poise .fs-summary p{max-width:52ch;margin:0 auto}
.fs-eng-poise .fs-body{padding:26px 44px 40px;column-gap:0}
.fs-eng-poise .fs-main{padding-right:30px}
.fs-eng-poise .fs-aside{border-left:1px solid var(--line);padding-left:30px}

/* Editorial — a bracket-style eyebrow and contact line, a bold blocky name, a small colour
   swatch beside each section heading, and skill pills that alternate filled/outline. */
.fs-eng-editorial{padding:54px 50px 46px}
.fs-eng-editorial .fs-head{align-items:flex-start}
.fs-eng-editorial .fs-eyebrow::before{content:'( '}
.fs-eng-editorial .fs-eyebrow::after{content:' )'}
.fs-eng-editorial .fs-name{font-family:var(--body-font);font-weight:800;font-size:37px;letter-spacing:-.01em}
.fs-eng-editorial .fs-name.long{font-size:29px}
.fs-eng-editorial .fs-name.vlong{font-size:23px}
.fs-eng-editorial .fs-avatar{position:relative;border-radius:6px;width:72px;height:72px}
.fs-eng-editorial .fs-avatar::before{content:'';position:absolute;top:-10px;left:-10px;width:100%;height:100%;background:var(--accent-soft);border-radius:6px;z-index:-1}
.fs-eng-editorial .fs-contact{text-align:right}
.fs-eng-editorial .fs-contact span::before{content:'( '}
.fs-eng-editorial .fs-contact span::after{content:' )'}
.fs-eng-editorial .fs-summary{margin-top:20px;padding-top:20px;border-top:1.5px solid var(--ink)}
.fs-eng-editorial .fs-body{margin-top:8px}
.fs-eng-editorial .fs-block>h2{gap:10px}
.fs-eng-editorial .fs-block>h2::before{content:'';width:13px;height:13px;background:var(--accent-soft);flex:0 0 auto}
.fs-eng-editorial .fs-skill-list li:nth-child(even){background:transparent;border:1.4px solid var(--ink);color:var(--ink)}

/* Orbit — no photo slot; a soft accent circle bleeds off the corner behind the header, the name
   runs large and bold, and section labels drop to lowercase for a more graphic, less corporate
   register. */
.fs-eng-orbit{padding:54px 52px 46px;position:relative;overflow:hidden}
.fs-eng-orbit::before{content:'';position:absolute;left:-140px;bottom:-180px;width:400px;height:400px;border-radius:50%;background:var(--accent-soft);z-index:0}
.fs-eng-orbit::after{content:'';position:absolute;left:60px;bottom:-50px;width:140px;height:140px;border-radius:50%;background:var(--paper);border:1px solid var(--line);z-index:0}
.fs-eng-orbit .fs-head,.fs-eng-orbit .fs-summary,.fs-eng-orbit .fs-body{position:relative;z-index:1}
.fs-eng-orbit .fs-eyebrow{display:none}
.fs-eng-orbit .fs-name{font-family:var(--body-font);font-weight:800;font-size:41px;line-height:1.03}
.fs-eng-orbit .fs-name.long{font-size:32px}
.fs-eng-orbit .fs-name.vlong{font-size:25px}
.fs-eng-orbit .fs-role{color:var(--accent);font-size:13px}
.fs-eng-orbit .fs-contact{text-align:right}
.fs-eng-orbit .fs-summary{margin-top:16px}
.fs-eng-orbit .fs-block>h2{text-transform:lowercase;letter-spacing:.02em;font-weight:800;font-size:12px}


/* V2.58.39 — curated 100 balance QA.
   FreeShelf-derived rail templates now use a strong identity panel at the top rather than an empty full-height stripe. */
.fs-eng-rail{
  grid-template-columns:228px 1fr!important;
  grid-template-rows:auto 1fr!important;
  grid-template-areas:"head sum" "main main"!important;
}
.fs-eng-rail .fs-head{align-self:stretch!important;min-height:300px}
.fs-eng-rail .fs-body{grid-area:main!important;display:grid!important;grid-template-columns:1fr 230px!important;gap:34px!important;padding:30px 48px 44px!important;border-top:1px solid var(--line)}
.fs-eng-rail .fs-aside{margin-top:0!important;padding-top:0!important;border-top:0!important;display:block!important}
.fs-eng-rail .fs-main{min-width:0}

/* All sidebar engines get the same text containment protections as the native collection. */
.cv-fs .fs-head,.cv-fs .fs-heading,.cv-fs .fs-summary,.cv-fs .fs-body,.cv-fs .fs-main,.cv-fs .fs-aside{min-width:0;max-width:100%;box-sizing:border-box}
.cv-fs .fs-name,.cv-fs .fs-role,.cv-fs .fs-contact,.cv-fs .fs-entry-role,.cv-fs .fs-entry-org,.cv-fs .fs-entry-detail{overflow-wrap:break-word;word-break:normal}

/* Sparse single-column engines should still occupy a full, intentional A4 composition. */
.fs-eng-meridian .fs-body{min-height:650px;align-content:start}
.fs-eng-meridian .fs-aside{align-self:end;margin-top:36px}

@media(max-width:620px){
  .fs-eng-rail{display:block!important}
  .fs-eng-rail .fs-head{min-height:0!important}
  .fs-eng-rail .fs-body{display:block!important;padding:24px!important;border-top:0!important}
  .fs-eng-meridian .fs-body{min-height:0!important}
}
