*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:16px/1.6 Arial,sans-serif}a{color:var(--acc)}button,input,textarea,select{font:inherit}button,.button{display:inline-block;padding:12px 18px;background:var(--acc);color:var(--paper);border:0;border-radius:6px;cursor:pointer;text-decoration:none;font-weight:600}button.secondary{background:var(--hair13);color:var(--ink)}button:hover,.button:hover{filter:brightness(.92)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--sage);outline-offset:3px}header,footer{padding:22px max(24px,calc((100vw - 1120px)/2));border-bottom:1px solid var(--hair3)}header{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap}header>a{font-family:Georgia,serif;font-size:24px;text-decoration:none;color:inherit}nav{display:flex;gap:22px;flex-wrap:wrap;align-items:center}main{max-width:1120px;margin:auto;padding:44px 24px}h1,h2,h3{font-family:Georgia,serif;line-height:1.2;font-weight:400}h1{font-size:clamp(32px,5vw,54px);max-width:760px;margin:18px 0}h2{font-size:30px}h3{font-size:22px}.eyebrow{color:var(--acc);font-size:14px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.intro{max-width:700px;color:var(--mut);font-size:19px}.hero{padding-bottom:40px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.card{padding:24px;border:1px solid var(--hair3);border-radius:12px}.card h3{margin-top:0}.card p{color:var(--mut)}.card a{font-weight:600}.note{padding:16px 20px;background:var(--sand);border-radius:8px}.builder{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:28px;align-items:start}.editor{padding:24px;background:var(--sand);border-radius:12px}label{display:block;font-size:14px;font-weight:600;margin:18px 0 6px}input,textarea,select{width:100%;padding:10px;border:1px solid var(--faint);border-radius:4px;background:var(--paper);color:inherit}textarea{min-height:110px;resize:vertical}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.status{font-size:14px;min-height:24px}.cv{padding:38px;border:1px solid #eae9ea;background:white;overflow-wrap:anywhere;font:calc(14px * var(--cv-fsm,1))/calc(1.5 * var(--cv-lh,1)) "Pebble Sans","Noto Sans Arabic",sans-serif}.cv h1,.cv .cvname{font:600 calc(28px * var(--cv-fsm,1))/calc(1.2 * var(--cv-lh,1)) "Pebble Sans","Noto Sans Arabic",sans-serif;margin:0 0 8px}.cv h2{font:600 calc(15px * var(--cv-fsm,1))/calc(1.3 * var(--cv-lh,1)) "Pebble Sans","Noto Sans Arabic",sans-serif;border-bottom:1px solid #ccc;padding-bottom:5px;margin:24px 0 10px}.cv .contact{color:#585254}.cv ul{padding-left:20px}.cv p{white-space:pre-line}.cv.classic{font-family:"Pebble Serif","Noto Sans Arabic",serif}.cv.classic h1,.cv.classic .cvname,.cv.classic h2{font-family:"Pebble Serif","Noto Sans Arabic",serif}.article{max-width:760px}.article p{margin:20px 0}.article li{margin:8px 0}.article h2{margin-top:34px}.meta{color:var(--mut);font-size:14px}footer{border-top:1px solid var(--hair3);border-bottom:0;color:var(--mut);font-size:14px}.skip{position:absolute;left:-9999px}.skip:focus{left:20px;background:var(--paper);z-index:2}details{margin-top:18px}summary{cursor:pointer;padding:12px 0}input[type=file]{padding:8px} @media(max-width:800px){.grid{grid-template-columns:1fr}.builder{grid-template-columns:1fr}main{padding:28px 20px}header,footer{padding:20px}}@media print{@page{margin:14mm 0}body{background:var(--paper)}header,footer,.editor,.builder-intro,.skip,.preview-label{display:none!important}main{padding:0;margin:0;max-width:none}.builder{display:block}.cv{border:0;padding:0;font-size:11pt}.cv h1,.cv .cvname{font-size:22pt}.cv h2{break-after:avoid}.cv p,.cv li{orphans:3;widows:3}.cv ul{margin:0}.cv section{break-inside:auto}a{color:inherit}}

.cv .cv-head{display:flex;gap:18px;align-items:center;justify-content:space-between;padding:0 0 14px;border:0;flex-wrap:nowrap}.cv .identity{min-width:0;flex:1}.cv .profile-photo{width:82px;height:82px;object-fit:cover;border-radius:8px;flex:none}.cv .photo-left{flex-direction:row-reverse}.cv .contact{font-size:calc(12px * var(--cv-fsm,1))}.cv .headline{margin:7px 0}.cv .cv-body section{min-width:0}.cv .cv-body p{margin:9px 0}.cv.classic .cv-head{text-align:center;flex-direction:column-reverse}.cv.classic h2{letter-spacing:.06em;text-transform:uppercase;font-size:calc(14px * var(--cv-fsm,1))}.cv.classic .profile-photo{border-radius:50%}.cv.modern .cv-head{background:#e7f2ee;margin:-18px -18px 16px;padding:22px 18px;border-left:6px solid var(--cv-accent,#286b5b)}.cv.modern h2{color:var(--cv-accent-tx,var(--cv-accent,#286b5b));border-bottom:2px solid var(--cv-accent,#286b5b)}.cv.slate .cv-head{background:var(--cv-accent-tx,var(--cv-accent,#26333f));color:white;padding:22px;margin:-18px -18px 20px}.cv.slate .contact{color:#e4ebf1}.cv.slate h2{background:#eef1f4;padding:8px;border:0;color:var(--cv-accent-tx,var(--cv-accent,#26333f))}.cv.editorial{font-family:"Pebble Serif","Noto Sans Arabic",serif}.cv.editorial h1,.cv.editorial .cvname{font:400 calc(36px * var(--cv-fsm,1))/calc(1.1 * var(--cv-lh,1)) "Pebble Serif","Noto Sans Arabic",serif;letter-spacing:-.04em}.cv.editorial h2{font:400 calc(20px * var(--cv-fsm,1)) "Pebble Serif","Noto Sans Arabic",serif;border-bottom:1px solid var(--cv-accent,#251f21)}.cv.editorial .cv-head{border-bottom:3px double var(--cv-accent,#251f21);padding-bottom:22px}.cv.executive .cv-head{border-bottom:4px solid var(--cv-accent,#193d62);padding-bottom:18px}.cv.executive h1,.cv.executive .cvname{color:var(--cv-accent-tx,var(--cv-accent,#193d62));text-transform:uppercase;font-size:calc(25px * var(--cv-fsm,1));letter-spacing:.04em}.cv.executive h2{color:var(--cv-accent-tx,var(--cv-accent,#193d62));border-color:var(--cv-accent,#193d62);text-transform:uppercase;font-size:calc(13px * var(--cv-fsm,1));letter-spacing:.08em}.cv.compact{padding:24px;font-size:calc(13px * var(--cv-fsm,1));line-height:calc(1.35 * var(--cv-lh,1))}.cv.compact h1,.cv.compact .cvname{font-size:calc(24px * var(--cv-fsm,1))}.cv.compact h2{margin:16px 0 6px;font-size:calc(13px * var(--cv-fsm,1))}.cv.compact .profile-photo{width:64px;height:64px}.cv.timeline .cv-body{border-left:2px solid var(--cv-accent,#286b5b);margin-left:6px;padding-left:20px}.cv.timeline h2{position:relative;border:0;color:var(--cv-accent-tx,var(--cv-accent,#286b5b))}.cv.timeline h2:before{content:"";position:absolute;width:10px;height:10px;background:var(--cv-accent-tx,var(--cv-accent,#286b5b));border-radius:50%;left:-26px;top:5px}.cv.sidebar .cv-body{display:grid;grid-template-columns:2fr 1fr;gap:0 22px}.cv.sidebar [data-section=summary],.cv.sidebar [data-section=experience],.cv.sidebar [data-section=projects]{grid-column:1}.cv.sidebar [data-section=skills]{grid-column:2;grid-row:1 / span 3;background:#eef3f1;padding:10px}.cv.sidebar [data-section=education]{grid-column:1}.cv.sidebar h2{font-size:calc(14px * var(--cv-fsm,1))}.cv.creative .cv-head{background:#f6ece1;border-radius:16px;padding:20px;margin:-16px -16px 20px}.cv.creative h1,.cv.creative .cvname{font-family:"Pebble Serif","Noto Sans Arabic",serif;color:var(--cv-accent-tx,var(--cv-accent,#7b4222))}.cv.creative h2{color:var(--cv-accent-tx,var(--cv-accent,#7b4222));border:0;border-left:4px solid var(--cv-accent-md,#c59065);padding-left:10px}.cv.creative .profile-photo{border-radius:50%;border:3px solid white}@media(max-width:420px){}@media print{.cv .cv-head{display:flex!important}.cv .cv-head{break-inside:avoid}.cv .profile-photo{width:25mm;height:25mm}.cv.compact{padding:0;font-size:10.5pt}.cv.sidebar .cv-body{display:grid;grid-template-columns:2fr 1fr}.cv.sidebar [data-section=summary],.cv.sidebar [data-section=experience],.cv.sidebar [data-section=projects],.cv.sidebar [data-section=education]{grid-column:1}.cv.sidebar [data-section=skills]{grid-column:2;grid-row:1 / span 3}.cv.editorial h1,.cv.editorial .cvname{font-size:30pt}.cv.modern .cv-head,.cv.slate .cv-head,.cv.creative .cv-head{margin:0 0 14px}.cv h2{break-after:avoid}.cv .cv-head,.cv h2{print-color-adjust:exact;-webkit-print-color-adjust:exact}}


#remove-photo{margin-top:12px}

.psheet,.psheet tbody,.psheet thead,.psheet tfoot,.psheet tr,.psheet td{display:block;border:0;padding:0;margin:0;width:100%}.psheet thead,.psheet tfoot{display:none}
@media print{.psheet,.psheet tbody,.psheet tr,.psheet td{display:block;width:100%}.psheet thead,.psheet tfoot,.psp{display:none}.cv{padding-inline:16mm!important}}

.sample-badge{margin:0 0 10px;padding:8px 12px;border:1px dashed var(--gry3);border-radius:10px;background:var(--sand7);color:var(--mut);font:calc(12px * var(--cv-fsm,1))/1.4 Arial,sans-serif}.cv .sample-print-note{display:none}.cv.is-sample .cv-head,.cv.is-sample .cv-body{opacity:.92}
@media print{.cv.is-sample>*{display:none!important}.cv.is-sample>.sample-print-note{display:block!important;font:14pt/calc(1.4 * var(--cv-lh,1)) "Pebble Sans","Noto Sans Arabic",sans-serif;padding:20mm 0}}
.cv .ph{margin:0;color:#6a6560;font-style:italic}@media screen{.cv{min-height:720px}}
.cv section.is-empty{display:none!important}
/* ---- new layouts, stage 1: canada, band, leftrail, spine (logical properties so RTL mirrors) ---- */
.cv.canada{font-size:calc(14px * var(--cv-fsm,1))}.cv.canada .profile-photo{display:none}.cv.canada .cv-head{padding-bottom:10px}.cv.canada h1,.cv.canada .cvname{font:700 calc(28px * var(--cv-fsm,1))/calc(1.15 * var(--cv-lh,1)) "Pebble Sans","Noto Sans Arabic",sans-serif;color:var(--cv-accent-tx,var(--cv-accent,#1d3557));margin:0}.cv.canada .headline{font-weight:600;color:var(--cv-accent-lt,#33415c)}.cv.canada h2{font:700 calc(12px * var(--cv-fsm,1))/calc(1.3 * var(--cv-lh,1)) "Pebble Sans","Noto Sans Arabic",sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#1d3557));border-bottom:2px solid var(--cv-accent,#1d3557);padding-bottom:4px;margin:16px 0 6px}.cv.canada .entry{margin:8px 0}.cv.canada .entry strong{display:block;color:#111}
.cv.band .cv-head{background:var(--cv-accent-tx,var(--cv-accent,#1f6f6b));color:#fff;margin:0 0 14px;padding:24px 22px;border-radius:6px}.cv.band .contact{color:#e3f3f1}.cv.band h1,.cv.band .cvname{font-size:calc(28px * var(--cv-fsm,1));letter-spacing:-.01em;margin:0}.cv.band .profile-photo{border:3px solid #fff;border-radius:50%}.cv.band h2{color:var(--cv-accent-tx,var(--cv-accent,#1f6f6b));font-size:calc(14px * var(--cv-fsm,1));text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid var(--cv-accent-t,#b7d6d2)}
.cv.leftrail .cv-body{display:grid;grid-template-columns:34% 1fr;gap:0 18px}.cv.leftrail .rail-col{background:#e6f0ee;padding:6px 14px 14px;-webkit-print-color-adjust:exact;print-color-adjust:exact;min-height:100%}.cv.leftrail .main-col{min-width:0}.cv.leftrail .cv-body p{margin:6px 0}.cv.leftrail .rail-col h2{font-size:calc(12px * var(--cv-fsm,1));letter-spacing:.02em}.cv.leftrail .rail-col ul{padding-inline-start:16px;margin:6px 0}.cv.leftrail .rail-col{font-size:calc(13px * var(--cv-fsm,1))}.cv.leftrail h2{font-size:calc(14px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#17524d));text-transform:uppercase;letter-spacing:.06em}.cv.leftrail .cv-head{border-bottom:4px solid var(--cv-accent,#17524d);margin-bottom:12px}
.cv.spine h2{font-size:calc(15px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#a3441f));text-transform:uppercase;letter-spacing:.07em;border:0}.cv.spine .cv-head{border-bottom:1px solid #e3d5cc}.cv.spine .entry{position:relative;border-inline-start:2px solid #d9a98f;padding-inline-start:18px;margin:0;padding-bottom:12px}.cv.spine .entry::before{content:"";position:absolute;inset-inline-start:-7px;top:.45em;width:12px;height:12px;border-radius:50%;background:#e07a3f;box-shadow:0 0 0 3px #fff}.cv.spine .entry strong{display:block}
.cv .entry{margin:9px 0}.cv .entry strong{font-weight:700}
@media print{.cv.canada .profile-photo{display:none!important}}
/* ---- stage 2 layouts ---- */
.cv.ribbon .cv-head{border-bottom:10px solid var(--cv-accent,#7a2b5a);padding-bottom:16px;margin-bottom:12px}.cv.ribbon h1,.cv.ribbon .cvname{color:var(--cv-accent-tx,var(--cv-accent,#7a2b5a));font-size:calc(30px * var(--cv-fsm,1));margin:0}.cv.ribbon h2{display:inline-block;background:var(--cv-accent-tx,var(--cv-accent,#7a2b5a));color:#fff;font-size:calc(12px * var(--cv-fsm,1));letter-spacing:.08em;text-transform:uppercase;padding:4px 12px;border-radius:0 12px 12px 0;margin:14px 0 4px;-webkit-print-color-adjust:exact;print-color-adjust:exact}[dir=rtl] .cv.ribbon h2{border-radius:12px 0 0 12px}
.cv.rightrail .cv-head{border-inline-start:8px solid var(--cv-accent,#c2641f);padding-inline-start:14px;margin-bottom:12px}.cv.rightrail h1,.cv.rightrail .cvname{color:var(--cv-accent-dk,#8a3f0b);margin:0}.cv.rightrail .cv-body{display:grid;grid-template-columns:1fr 32%;gap:0 18px}.cv.rightrail .rail-col{background:var(--cv-accent-lt,#fbeede);padding:6px 14px 14px;font-size:calc(13px * var(--cv-fsm,1));-webkit-print-color-adjust:exact;print-color-adjust:exact}.cv.rightrail .main-col{min-width:0}.cv.rightrail h2{color:var(--cv-accent-dk,#8a3f0b);font-size:calc(13px * var(--cv-fsm,1));text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--cv-accent,#c2641f)}.cv.rightrail .rail-col ul{padding-inline-start:16px}
.cv.boxed{background:#fff}.cv.boxed .cv-head{background:#eceefb;border:2px solid var(--cv-accent,#3b3f9a);border-radius:10px;padding:16px 18px;margin-bottom:12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.cv.boxed h1,.cv.boxed .cvname{color:var(--cv-accent-dk,#2a2d73);margin:0}.cv.boxed [data-section]{border:2px solid var(--cv-accent,#3b3f9a);border-radius:10px;margin:0 0 10px;overflow:hidden}.cv.boxed [data-section]>*:not(h2){margin-inline:14px}.cv.boxed [data-section]>p,.cv.boxed [data-section]>ul{margin-block:8px}.cv.boxed h2{background:var(--cv-accent-tx,var(--cv-accent,#3b3f9a));color:#fff;font-size:calc(13px * var(--cv-fsm,1));letter-spacing:.07em;text-transform:uppercase;margin:0;padding:6px 14px;border:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.duotone .cv-head{background:#14213d;color:#fff;border-bottom:6px solid var(--cv-accent,#fca311);padding:24px 22px;margin-bottom:14px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.cv.duotone .contact{color:#ffe3b0}.cv.duotone h1,.cv.duotone .cvname{margin:0;letter-spacing:.02em}.cv.duotone h2{color:#14213d;font-size:calc(14px * var(--cv-fsm,1));text-transform:uppercase;letter-spacing:.07em;border:0;border-inline-start:6px solid var(--cv-accent,#fca311);padding-inline-start:10px}
.cv.mono{font-family:"Pebble Serif","Noto Sans Arabic",serif;color:#2b2b2b}.cv.mono .cv-head{text-align:center;flex-direction:column;border-bottom:1px solid var(--cv-accent,#2b2b2b);padding-bottom:14px}.cv.mono h1,.cv.mono .cvname{font:400 calc(34px * var(--cv-fsm,1))/calc(1.1 * var(--cv-lh,1)) "Pebble Serif","Noto Sans Arabic",serif;letter-spacing:.06em;text-transform:uppercase;margin:0}.cv.mono h2{display:flex;align-items:center;gap:12px;font:italic 400 calc(18px * var(--cv-fsm,1)) "Pebble Serif","Noto Sans Arabic",serif;border:0;margin:16px 0 4px}.cv.mono h2::before,.cv.mono h2::after{content:"";flex:1;height:1px;background:#8d8d8d}
.cv.card .cv-body{background:#eaf3ea;padding:12px;border-radius:12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.cv.card [data-section]{background:#fff;border-radius:10px;padding:2px 16px 10px;margin:0 0 10px;box-shadow:0 1px 0 #cfe0cf}.cv.card h2{color:var(--cv-accent-tx,var(--cv-accent,#2f6b3a));font-size:calc(14px * var(--cv-fsm,1));border:0;margin:10px 0 2px}.cv.card .cv-head{padding-bottom:12px}.cv.card h1,.cv.card .cvname{color:var(--cv-accent-tx,var(--cv-accent,#2f6b3a));margin:0}
.cv.bold h1,.cv.bold .cvname{font:900 calc(42px * var(--cv-fsm,1))/calc(1 * var(--cv-lh,1)) "Pebble Sans","Noto Sans Arabic",sans-serif;text-transform:uppercase;letter-spacing:-.02em;color:var(--cv-accent-tx,var(--cv-accent,#d6336c));margin:0}.cv.bold .cv-head{padding-bottom:18px}.cv.bold h2{font:900 calc(15px * var(--cv-fsm,1)) "Pebble Sans","Noto Sans Arabic",sans-serif;text-transform:uppercase;letter-spacing:.05em;border:0;display:flex;align-items:center;gap:10px;margin:18px 0 4px}.cv.bold h2::before{content:"";width:14px;height:14px;background:var(--cv-accent-tx,var(--cv-accent,#d6336c));transform:rotate(45deg);flex:none}
.cv.compactpro{font-size:calc(13px * var(--cv-fsm,1))}.cv.compactpro .cv-head{border-bottom:3px solid var(--cv-accent,#0b7285);padding-bottom:10px}.cv.compactpro h1,.cv.compactpro .cvname{color:var(--cv-accent-tx,var(--cv-accent,#0b7285));font-size:calc(26px * var(--cv-fsm,1));margin:0}.cv.compactpro .cv-body{display:grid;grid-template-columns:1.9fr 1fr;gap:0 0;margin-top:8px}.cv.compactpro .main-col{padding-inline-end:16px;border-inline-end:1px solid var(--cv-accent-t,#b6dbe1);min-width:0}.cv.compactpro .rail-col{padding-inline-start:16px;min-width:0}.cv.compactpro h2{font-size:calc(12px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#0b7285));text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--cv-accent-t,#b6dbe1)}.cv.compactpro .cv-body p{margin:5px 0}.cv.compactpro .rail-col ul{padding-inline-start:16px}
.photo-ctl[hidden],.canada-hint[hidden]{display:none!important}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:8px}.sec-head label{margin-block-end:4px}.sec-move{display:flex;gap:6px;flex:none;margin-block-end:4px}.sec-btn{min-width:44px;min-height:44px;padding:0;line-height:1;font-size:20px;text-align:center}.sec-btn[aria-disabled="true"]{opacity:.4;cursor:default}.sec-btn:focus-visible{outline:3px solid #1b4f8f;outline-offset:2px}
@media print{.sec-move{display:none}}
.cv.leftrail .cv-body{grid-template-columns:38% 1fr;gap:0 14px}.cv .rail-col{font-size:calc(12px * var(--cv-fsm,1));padding-inline:10px;hyphens:auto;overflow-wrap:break-word}.cv .rail-col ul{padding-inline-start:14px}

.sample-badge.off{visibility:hidden}@media print{.sample-badge{display:none!important}}
.sample-badge:empty{visibility:hidden;min-height:34px}

@media(min-width:801px){.preview-col{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto;overscroll-behavior:contain;align-self:start}}
.preview-fab{position:fixed;inset-block-end:calc(16px + var(--cvp-consent-height,0px));inset-inline-end:16px;z-index:30;min-height:48px;padding:0 20px;border-radius:999px;border:0;background:var(--accd10);color:var(--paper);font:700 16px Arial,sans-serif;box-shadow:0 4px 14px rgba(0,0,0,.28);cursor:pointer}.preview-fab:focus-visible{outline:3px solid #1b4f8f;outline-offset:3px}.preview-fab[hidden]{display:none}
@media print{.preview-fab{display:none!important}.preview-col{position:static!important;max-height:none!important;overflow:visible!important}}
.cv .cv-head.head-empty{min-height:74px}
.cv .cv-head.head-empty .identity{min-height:40px}

.cv .entry strong{display:block;font-weight:700}.cv .entry-text{display:block;white-space:pre-line}@media print{.cv .entry{break-inside:avoid}}
.cv [data-section=skills] ul{column-count:2;column-gap:28px}.cv [data-section=skills] li{break-inside:avoid}.cv.leftrail [data-section=skills] ul,.cv.rightrail [data-section=skills] ul,.cv.sidebar [data-section=skills] ul,.cv.compactpro [data-section=skills] ul{column-count:1}
@media print{.cv{line-height:calc(1.4 * var(--cv-lh,1))}.cv h2{margin-top:18px}.cv .cv-body p{margin:6px 0}.cv .entry{margin:7px 0}}
@media print{.cv.card [data-section]{margin:0 0 6px;padding-bottom:6px}.cv.card h2{margin:6px 0 0}.cv.card .cv-body{padding:8px}.cv.sidebar h2{margin-top:12px}.cv.sidebar .cv-body{gap:0 18px}.cv.sidebar [data-section=skills]{padding:8px}}
@media print{.cv{font-size:10.5pt}.cv.compact{font-size:10.5pt}}
.sec-tools{display:flex;gap:8px;align-items:center;margin:2px 0 6px}.sec-title{flex:1;min-width:0;padding:6px 8px!important;font-size:14px}.sec-rm{padding:6px 12px!important;font-size:14px;white-space:nowrap}.sec-add{margin:14px 0;padding:12px;border:1px dashed var(--faint);border-radius:8px}.sec-add p{margin:0 0 8px;font-size:14px;font-weight:600}.sec-add button{margin:0 8px 8px 0;font-size:14px;padding:8px 14px}.sec-field[hidden]{display:none}

@media screen{.psheet .cv [data-section],.psheet .cv .cv-head{cursor:pointer}}
@media screen and (hover:hover){.psheet .cv [data-section],.psheet .cv .cv-head{transition:background-color .15s,box-shadow .15s;border-radius:4px}.psheet .cv [data-section]:hover,.psheet .cv .cv-head:hover{box-shadow:0 0 0 6px rgba(40,107,91,.09);background-color:rgba(40,107,91,.05)}}
.ba{margin:22px 0;border:1px solid var(--hair3);border-radius:12px;overflow:hidden}.ba>div{padding:14px 20px}.ba .b1{background:var(--sand)}.ba .b2{background:var(--soft4);border-top:1px solid var(--hair3)}.ba strong{display:block;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--gry1);margin-bottom:4px}.ba .b2 strong{color:var(--acc)}.ba p{margin:6px 0}
/* c84: a screen-faithful snapshot replaces the differently styled print preview. */
#print-snapshot{display:none}
@media print{
 html:has(#print-snapshot),body:has(#print-snapshot){padding:0!important;margin:0!important}
 body:has(>#print-snapshot)> :not(#print-snapshot){display:none!important}
 #print-snapshot{display:block!important;width:100vw}
 .print-snapshot-frame{width:100vw;display:flex;align-items:flex-start;justify-content:center}
 #print-snapshot-cv{zoom:calc(.997 * min(calc(100vw / var(--snapshot-width)),max(.9,calc((100vh - 2px) / var(--snapshot-height)))));flex:none!important}
}

@media screen{#preview{width:534px!important;max-width:none!important;margin-inline:auto}.preview-col{min-width:0}}
@media print{
 #print-snapshot-cv{height:auto!important}
 #print-snapshot-cv .cv-body,#print-snapshot-cv .main-col,#print-snapshot-cv .rail-col{height:auto!important}
 #print-snapshot-cv section{height:auto!important;break-inside:avoid!important}
 #print-snapshot-cv .cv-head{break-inside:avoid!important}
}

/* Stable CV-only fonts: the editor and site UI keep their own fonts. */
@font-face{font-family:"Pebble Sans";font-style:normal;font-weight:400;font-display:block;src:url("/pdf-export/LiberationSans-Regular.ttf") format("truetype")}
@font-face{font-family:"Pebble Sans";font-style:normal;font-weight:700;font-display:block;src:url("/pdf-export/LiberationSans-Bold.ttf") format("truetype")}
@font-face{font-family:"Pebble Sans";font-style:italic;font-weight:400;font-display:block;src:url("/pdf-export/LiberationSans-Italic.ttf") format("truetype")}
@font-face{font-family:"Pebble Sans";font-style:italic;font-weight:700;font-display:block;src:url("/pdf-export/LiberationSans-BoldItalic.ttf") format("truetype")}
@font-face{font-family:"Pebble Serif";font-style:normal;font-weight:400;font-display:block;src:url("/pdf-export/LiberationSerif-Regular.ttf") format("truetype")}
@font-face{font-family:"Pebble Serif";font-style:normal;font-weight:700;font-display:block;src:url("/pdf-export/LiberationSerif-Bold.ttf") format("truetype")}
@font-face{font-family:"Pebble Serif";font-style:italic;font-weight:400;font-display:block;src:url("/pdf-export/LiberationSerif-Italic.ttf") format("truetype")}
@font-face{font-family:"Pebble Serif";font-style:italic;font-weight:700;font-display:block;src:url("/pdf-export/LiberationSerif-BoldItalic.ttf") format("truetype")}
html[lang=ar] .cv,html[lang=ar] .cv h1,html[lang=ar] .cv h2{font-family:"Noto Sans Arabic","Pebble Sans","Noto Sans Arabic",sans-serif}
html.cv-fonts-loading .cv{visibility:hidden}

/* Keep preview width stable when content crosses the scroll threshold. */
@media(min-width:801px){.preview-col{scrollbar-gutter:stable;overflow-y:scroll}}

/* ===== 16 structured layouts (c161): arc banner column split sage dual soft ledger luxe frame onyx bars steel summit blush willow ===== */
/* rail machinery: .cv-body is a grid of direct SECTION[data-section] children */
.cv.arc .cv-body,.cv.banner .cv-body,.cv.column .cv-body,.cv.split .cv-body,.cv.sage .cv-body,.cv.dual .cv-body,.cv.soft .cv-body{display:grid;column-gap:26px;position:relative}
.cv.arc .cv-body,.cv.column .cv-body,.cv.split .cv-body,.cv.sage .cv-body,.cv.dual .cv-body,.cv.soft .cv-body{grid-template-columns:30% 1fr}
.cv.banner .cv-body{grid-template-columns:1fr 30%}
.cv.arc [data-section],.cv.banner [data-section],.cv.column [data-section],.cv.split [data-section],.cv.sage [data-section],.cv.dual [data-section],.cv.soft [data-section]{position:relative;z-index:1;margin-bottom:calc(14px * var(--cv-smm,1))}
/* col2 = main for left-rail variants */
.cv.arc [data-section],.cv.column [data-section],.cv.split [data-section],.cv.sage [data-section],.cv.dual [data-section],.cv.soft [data-section]{grid-column:2}
.cv.arc [data-section=education],.cv.arc [data-section=skills],.cv.arc [data-section=projects],
.cv.sage [data-section=education],.cv.sage [data-section=skills],.cv.sage [data-section=projects],
.cv.dual [data-section=education],.cv.dual [data-section=skills],.cv.dual [data-section=projects],
.cv.soft [data-section=education],.cv.soft [data-section=skills],.cv.soft [data-section=projects],
.cv.column [data-section=skills],.cv.column [data-section=projects],
.cv.split [data-section=skills],.cv.split [data-section=projects]{grid-column:1}
/* v2 right rail */
.cv.banner [data-section]{grid-column:1}
.cv.banner [data-section=skills],.cv.banner [data-section=projects]{grid-column:2}
/* rail band backgrounds */
.cv.arc .cv-body::before,.cv.banner .cv-body::before,.cv.column .cv-body::before,.cv.split .cv-body::before,.cv.sage .cv-body::before,.cv.dual .cv-body::before,.cv.soft .cv-body::before{content:"";position:absolute;top:-6px;bottom:0;width:calc(30% - 13px);border-radius:6px;z-index:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.arc .cv-body::before,.cv.column .cv-body::before,.cv.split .cv-body::before,.cv.sage .cv-body::before,.cv.dual .cv-body::before,.cv.soft .cv-body::before{inset-inline-start:0}
.cv.banner .cv-body::before{inset-inline-end:0}
.cv.arc .cv-body::before{background:#eef3f8}
.cv.banner .cv-body::before{background:#f4f2f8}
.cv.column .cv-body::before{background:#f9f2ee}
.cv.split .cv-body::before{background:#f2f4f8}
.cv.sage .cv-body::before{background:var(--cv-accent-tx,var(--cv-accent,#33463b))}
.cv.dual .cv-body::before{background:var(--cv-accent-tx,var(--cv-accent,#6b4452))}
.cv.soft .cv-body::before{background:var(--cv-accent-tx,var(--cv-accent,#2f6b6b))}
/* rail section inset + single-col lists */
.cv.arc [data-section=education],.cv.arc [data-section=skills],.cv.arc [data-section=projects],
.cv.banner [data-section=skills],.cv.banner [data-section=projects],
.cv.column [data-section=skills],.cv.column [data-section=projects],
.cv.split [data-section=skills],.cv.split [data-section=projects],
.cv.sage [data-section=education],.cv.sage [data-section=skills],.cv.sage [data-section=projects],
.cv.dual [data-section=education],.cv.dual [data-section=skills],.cv.dual [data-section=projects],
.cv.soft [data-section=education],.cv.soft [data-section=skills],.cv.soft [data-section=projects]{padding-inline:8px 12px; /* band ends 13px before the track edge: content >=97px keeps bold rail words intact AND leaves a visible trailing inset */font-size:calc(12.5px * var(--cv-fsm,1));overflow-wrap:break-word;hyphens:auto} /* narrow rail: hyphenate long words (lang-aware) instead of breaking mid-word or crossing the band edge */
.cv.arc [data-section=skills] ul,.cv.banner [data-section=skills] ul,.cv.column [data-section=skills] ul,.cv.split [data-section=skills] ul,.cv.sage [data-section=skills] ul,.cv.dual [data-section=skills] ul,.cv.soft [data-section=skills] ul{display:grid!important;grid-template-columns:1fr!important;gap:4px;padding-inline-start:10px}
/* dark rails: light text */
.cv.sage [data-section=education],.cv.sage [data-section=skills],.cv.sage [data-section=projects],
.cv.dual [data-section=education],.cv.dual [data-section=skills],.cv.dual [data-section=projects],
.cv.soft [data-section=education],.cv.soft [data-section=skills],.cv.soft [data-section=projects]{color:#e9efea}
.cv.sage [data-section=education] h2,.cv.sage [data-section=skills] h2,.cv.sage [data-section=projects] h2{color:#cfe0a8;border:0}
.cv.dual [data-section=education] h2,.cv.dual [data-section=skills] h2,.cv.dual [data-section=projects] h2{color:#ecd9e2;border:0}
.cv.soft [data-section=education] h2,.cv.soft [data-section=skills] h2,.cv.soft [data-section=projects] h2{color:#bfe0d8;border:0}
.cv.dual [data-section=education] h2::after,.cv.dual [data-section=skills] h2::after,.cv.dual [data-section=projects] h2::after{content:none}
/* square markers in rail lists */
.cv.column [data-section=skills] li,.cv.split [data-section=skills] li{list-style:none;position:relative;padding-inline-start:8px}
.cv.column [data-section=skills] li::before,.cv.split [data-section=skills] li::before{content:"";position:absolute;inset-inline-start:0;top:6px;width:6px;height:6px}
.cv.column [data-section=skills] li::before{background:var(--cv-accent-tx,var(--cv-accent,#8a4a3a))}
.cv.split [data-section=skills] li::before{background:var(--cv-accent-tx,var(--cv-accent,#274264))}
/* ---- v1 Arc (model: Circular) ---- */
.cv.arc .cv-head{background:#eaf1f6;margin:-38px -38px 18px;padding:28px 38px 22px;border-bottom:3px solid var(--cv-accent,#4a7396);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.arc .cvname{color:var(--cv-accent-dk,#2c4d68);font-size:calc(27px * var(--cv-fsm,1))}
.cv.arc h2{font-size:calc(12.5px * var(--cv-fsm,1));letter-spacing:.07em;text-transform:uppercase;color:var(--cv-accent-dk,#2c4d68);border-bottom:1px solid #b8c9d6;padding-bottom:3px}
.cv.arc [data-section=experience] .entry{border-inline-start:2px solid #c6d5e1;padding-inline-start:14px;position:relative;margin-inline-start:4px}
.cv.arc [data-section=experience] .entry::before{content:"";position:absolute;inset-inline-start:-6px;top:4px;width:9px;height:9px;background:var(--cv-accent-tx,var(--cv-accent,#4a7396));border-radius:50%}
.cv.arc .entry strong{font-size:0;display:block}
.cv.arc .entry strong bdi{display:block;font-size:calc(13px * var(--cv-fsm,1))}
.cv.arc .entry strong bdi:first-of-type{font-weight:700}
.cv.arc .entry strong>span{display:block;font-size:calc(12px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#4a7396));font-weight:600}
/* ---- v2 Banner (model: Professional) ---- */
.cv.banner .cv-head{background:var(--cv-accent-tx,var(--cv-accent,#37324a));margin:-38px -38px 18px;padding:28px 38px 24px;color:#f4f2f8;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.banner .cvname{color:#fff;font-size:calc(27px * var(--cv-fsm,1))}
.cv.banner .cv-head .contact,.cv.banner .cv-head p{color:#ddd8ea}
.cv.banner h2{font-size:calc(12.5px * var(--cv-fsm,1));letter-spacing:.07em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#37324a));border-bottom:1px solid #c6bfd6;padding-bottom:3px}
.cv.banner [data-section=skills] h2,.cv.banner [data-section=projects] h2{border-bottom-color:#d5cfe0}
.cv.banner .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.banner .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.banner .entry strong bdi:first-of-type{font-weight:700}
.cv.banner .entry strong>span{margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#37324a));font-weight:600}
/* ---- v3 Column (model: Vertical) ---- */
.cv.column .cvname{color:var(--cv-accent-tx,var(--cv-accent,#8a4a3a));font-size:calc(30px * var(--cv-fsm,1))}
.cv.column .cv-head{border-bottom:0;padding-bottom:10px}
.cv.column h2{font-size:calc(13px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#8a4a3a));border:0;font-weight:700}
.cv.column .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.column .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.column .entry strong bdi:first-of-type{font-weight:700}
.cv.column .entry strong bdi:last-of-type{color:var(--cv-accent-tx,var(--cv-accent,#8a4a3a));font-weight:600}
.cv.column .entry strong>span{margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#8a4a3a));font-weight:600}
/* ---- v4 Split (model: Horizontal) ---- */
.cv.split .cvname{color:var(--cv-accent-tx,var(--cv-accent,#274264));font-size:calc(28px * var(--cv-fsm,1))}
.cv.split .cv-head{border-bottom:2px solid var(--cv-accent,#274264);padding-bottom:12px}
.cv.split h2{font-size:calc(12.5px * var(--cv-fsm,1));letter-spacing:.07em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#274264));border-bottom:1px solid #bcc8d8;padding-bottom:3px}
.cv.split .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.split .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.split .entry strong bdi:first-of-type{font-weight:700}
.cv.split .entry strong>span{margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#274264));font-weight:600}
/* ---- v5 Sage (model: Elegant) ---- */
.cv.sage .cv-head{background:#e7f0ec;margin:-38px -38px 18px;padding:28px 38px 22px;border-bottom:3px solid var(--cv-accent,#4a7a63);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.sage .cvname{color:var(--cv-accent-tx,var(--cv-accent,#2c4a3c));font-size:calc(25px * var(--cv-fsm,1));letter-spacing:.14em;text-transform:uppercase}
.cv.sage [data-section=summary] h2,.cv.sage [data-section=experience] h2{display:inline-block;background:#4f7355;color:#fff;font-size:calc(11px * var(--cv-fsm,1));letter-spacing:.16em;text-transform:uppercase;padding:4px 12px;border:0;border-radius:3px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.sage [data-section=education] h2,.cv.sage [data-section=skills] h2,.cv.sage [data-section=projects] h2{font-size:calc(11px * var(--cv-fsm,1));letter-spacing:.16em;text-transform:uppercase}
.cv.sage .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.sage .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.sage .entry strong bdi:first-of-type{font-weight:700}
.cv.sage .entry strong>span{margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1));color:#5a6672}
/* ---- v6 Duo (model: Modern) ---- */
.cv.dual .cvname{color:var(--cv-accent-tx,var(--cv-accent,#6b4452));font-size:calc(28px * var(--cv-fsm,1))}
.cv.dual .cv-head{border-bottom:0;padding-bottom:10px}
.cv.dual [data-section=summary] h2,.cv.dual [data-section=experience] h2{font-size:calc(12.5px * var(--cv-fsm,1));letter-spacing:.06em;text-transform:uppercase;color:var(--cv-accent-dk,#4a2f3a);border:0;display:flex;align-items:center;gap:10px}
.cv.dual [data-section=summary] h2::after,.cv.dual [data-section=experience] h2::after{content:"";flex:1;height:1px;background:#cbb6c0}
.cv.dual [data-section=education] h2,.cv.dual [data-section=skills] h2,.cv.dual [data-section=projects] h2{font-size:calc(12px * var(--cv-fsm,1));letter-spacing:.06em;text-transform:uppercase}
.cv.dual .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.dual .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.dual .entry strong bdi:first-of-type{font-weight:700}
.cv.dual .entry strong bdi:last-of-type{color:var(--cv-accent-tx,var(--cv-accent,#6b4452));font-weight:600}
.cv.dual .entry strong>span{order:-1;flex:0 0 108px;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#6b4452));font-weight:600}
/* ---- v7 Soft (model: Casual) ---- */
.cv.soft .cvname{color:var(--cv-accent-dk,#205a5a);font-size:calc(28px * var(--cv-fsm,1))}
.cv.soft .cv-head{border-bottom:0;padding-bottom:10px}
.cv.soft [data-section=summary] h2,.cv.soft [data-section=experience] h2{font-size:calc(13px * var(--cv-fsm,1));color:var(--cv-accent-dk,#205a5a);border-bottom:1px solid #bcd4d4;padding-bottom:3px}
.cv.soft [data-section=education] h2,.cv.soft [data-section=skills] h2,.cv.soft [data-section=projects] h2{font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.soft .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.soft .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.soft .entry strong bdi:first-of-type{font-weight:700}
.cv.soft .entry strong bdi:last-of-type{color:var(--cv-accent-tx,var(--cv-accent,#2f6b6b));font-weight:600}
.cv.soft .entry strong>span{order:-1;flex:0 0 108px;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#2f6b6b));font-weight:600}
/* ---- v8 Ledger (model: Chrono) ---- */
.cv.ledger .cvname{color:var(--cv-accent-tx,var(--cv-accent,#35618e));font-size:calc(27px * var(--cv-fsm,1))}
.cv.ledger .cv-head{border-bottom:1px solid #d7dfe8;padding-bottom:14px}
.cv.ledger .cv-body section{display:grid;grid-template-columns:140px 1fr;column-gap:20px;border-top:1px solid #e2e8ee;padding-top:10px;margin-top:10px}
.cv.ledger h2{grid-column:1;grid-row:1/60;border:0;font-size:calc(11.5px * var(--cv-fsm,1));letter-spacing:.08em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#35618e));padding-top:2px}
.cv.ledger .cv-body section>:not(h2){grid-column:2}
.cv.ledger .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.ledger .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.ledger .entry strong bdi:first-of-type{font-weight:700}
.cv.ledger .entry strong bdi:last-of-type{color:var(--cv-accent-tx,var(--cv-accent,#35618e));font-weight:600}
.cv.ledger .entry strong>span{order:-1;flex:0 0 108px;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#35618e));font-weight:600}
.cv.ledger [data-section=skills] ul{list-style:none;padding-inline-start:0;display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px 18px}
.cv.ledger [data-section=skills] li{padding-inline-start:12px;position:relative}
.cv.ledger [data-section=skills] li::before{content:"";position:absolute;inset-inline-start:0;top:6px;width:7px;height:7px;background:var(--cv-accent-tx,var(--cv-accent,#35618e))}
/* ---- v9 Mono (model: Luxurious) ---- */
.cv.luxe .cvname{font-size:calc(34px * var(--cv-fsm,1));font-weight:800;letter-spacing:.01em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#111))}
.cv.luxe .cv-head{border-bottom:4px solid var(--cv-accent,#111);padding-bottom:14px}
.cv.luxe h2{display:inline-block;background:var(--cv-accent-tx,var(--cv-accent,#111));color:#fff;font-size:calc(11.5px * var(--cv-fsm,1));letter-spacing:.12em;text-transform:uppercase;padding:4px 12px;border:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.luxe .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.luxe .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.luxe .entry strong bdi:first-of-type{font-weight:700}
.cv.luxe .entry strong bdi:last-of-type{color:#555}
.cv.luxe .entry strong>span{margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1));color:#555}
/* ---- v10 Boxed (model: Classic) ---- */
.cv.frame .cv-head{flex-direction:column;text-align:center;padding-bottom:14px}
.cv.frame .cvname{font-size:calc(27px * var(--cv-fsm,1))}
.cv.frame [data-section]{border:1px solid #9db8ab;border-radius:4px;padding:0 16px 12px;margin:0 0 12px;overflow:hidden}
.cv.frame h2{background:var(--cv-accent-tx,var(--cv-accent,var(--cv-accent,#4a7a63)));color:#fff;font-size:calc(12px * var(--cv-fsm,1));letter-spacing:.08em;text-transform:uppercase;padding:7px 16px;border:0;margin:0 -16px 10px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.frame .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.frame .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.frame .entry strong bdi:first-of-type{font-weight:700}
.cv.frame .entry strong bdi:last-of-type{color:var(--cv-accent-tx,var(--cv-accent,var(--cv-accent,#4a7a63)));font-weight:600}
.cv.frame .entry strong>span{order:-1;flex:0 0 108px;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,var(--cv-accent,#4a7a63)));font-weight:600}
/* explicit rows so rail and main both start at top */
.cv.arc [data-section=summary],.cv.sage [data-section=summary],.cv.dual [data-section=summary],.cv.soft [data-section=summary]{grid-row:1}
.cv.arc [data-section=experience],.cv.sage [data-section=experience],.cv.dual [data-section=experience],.cv.soft [data-section=experience]{grid-row:2}
.cv.arc [data-section=education],.cv.sage [data-section=education],.cv.dual [data-section=education],.cv.soft [data-section=education]{grid-row:1}
.cv.arc [data-section=skills],.cv.sage [data-section=skills],.cv.dual [data-section=skills],.cv.soft [data-section=skills]{grid-row:2}
.cv.arc [data-section=projects],.cv.sage [data-section=projects],.cv.dual [data-section=projects],.cv.soft [data-section=projects]{grid-row:3}
.cv.banner [data-section=summary],.cv.column [data-section=summary],.cv.split [data-section=summary]{grid-row:1}
.cv.banner [data-section=experience],.cv.column [data-section=experience],.cv.split [data-section=experience]{grid-row:2}
.cv.banner [data-section=education],.cv.column [data-section=education],.cv.split [data-section=education]{grid-row:3}
.cv.banner [data-section=skills],.cv.column [data-section=skills],.cv.split [data-section=skills]{grid-row:1}
.cv.banner [data-section=projects],.cv.column [data-section=projects],.cv.split [data-section=projects]{grid-row:2}
.cv.banner [data-section=skills] h2,.cv.banner [data-section=projects] h2{border-bottom:0}



.cv,.cv *,.cv *::before,.cv *::after{transition:none!important;animation:none!important}

/* ---- v11 Onyx (ref: Damien dark-rail timeline model) ---- */
.cv.onyx{position:relative}
.cv.onyx .cv-body{display:grid;grid-template-columns:34% 1fr;column-gap:26px;position:relative}
.cv.onyx .cv-body::before{content:"";position:absolute;top:-38px;bottom:-38px;inset-inline-start:-38px;width:calc(34% + 44px);background:#33383e;z-index:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.onyx .cv-body::after{content:"";position:absolute;top:-38px;inset-inline-start:-38px;width:0;height:0;border-style:solid;border-width:64px 64px 0 0;border-color:var(--cv-accent,#b58a4e) transparent transparent transparent;z-index:1}
.cv.onyx [data-section]{position:relative;z-index:1;margin-bottom:calc(16px * var(--cv-smm,1))}
.cv.onyx [data-section=summary],.cv.onyx [data-section=experience]{grid-column:2}
.cv.onyx [data-section=education],.cv.onyx [data-section=skills],.cv.onyx [data-section=projects]{grid-column:1;color:#e8e6e1}
.cv.onyx .cv-head{grid-column:2;grid-row:1;position:relative;z-index:1;padding-inline-start:150px;min-height:128px}
.cv.onyx .cv-head img{position:absolute;top:0;inset-inline-start:0;width:118px;height:118px;border-radius:50%;border:5px solid #fff;object-fit:cover}
.cv.onyx:has(.cv-head.photo-left) .cv-rail-first{margin-top:146px}
.cv.onyx:has(.cv-head img) .cv-rail-first{margin-top:146px} /* photo straddles the rail edge: first VISIBLE rail section (tagged at render) clears the 128px circle + gap */
.cv.onyx .cvname{font-size:calc(26px * var(--cv-fsm,1))}
.cv.onyx .cvname b{color:var(--cv-accent-tx,var(--cv-accent,#b58a4e))}
.cv.onyx h2{font-size:calc(12.5px * var(--cv-fsm,1));letter-spacing:.14em;text-transform:uppercase;display:flex;align-items:center;gap:9px}
.cv.onyx h2::before{content:"";width:22px;height:22px;border-radius:50%;background:var(--cv-accent-tx,var(--cv-accent,#b58a4e));flex:0 0 22px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.onyx [data-section=education] h2,.cv.onyx [data-section=skills] h2,.cv.onyx [data-section=projects] h2{color:#fff;border:0}
.cv.onyx [data-section=education],.cv.onyx [data-section=skills]{border-inline-start:2px solid #565d64;padding-inline-start:14px}
.cv.onyx [data-section=summary] h2,.cv.onyx [data-section=experience] h2{color:#33383e;border:0;border-bottom:1px solid #ddd;padding-bottom:4px}
.cv.onyx .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.onyx .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.onyx .entry strong bdi:first-of-type{font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.cv.onyx .entry strong>span{margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1));color:#8a939c;font-weight:600}
.cv.onyx [data-section=skills] ul{list-style:none;padding:0}
.cv.onyx [data-section=skills] li{position:relative;padding-bottom:10px;margin-bottom:6px;font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.onyx [data-section=skills] li::before{content:"";position:absolute;bottom:0;inset-inline-start:0;width:100%;height:4px;background:#565d64;border-radius:2px}
.cv.onyx [data-section=skills] li::after{content:"";position:absolute;bottom:0;inset-inline-start:0;height:4px;background:var(--cv-accent-tx,var(--cv-accent,#b58a4e));border-radius:2px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.onyx [data-section=skills] li:nth-child(1)::after{width:88%}
.cv.onyx [data-section=skills] li:nth-child(2)::after{width:72%}
.cv.onyx [data-section=skills] li:nth-child(3)::after{width:80%}
.cv.onyx [data-section=skills] li:nth-child(4)::after{width:64%}
.cv.onyx [data-section=skills] li:nth-child(5)::after{width:76%}

/* ---- v12 Bars (skill-bar rail, ref: magnific mg-bars) ---- */
.cv.bars .cv-body{display:grid;grid-template-columns:32% 1fr;column-gap:26px;position:relative}
.cv.bars .cv-body::before{content:"";position:absolute;top:-38px;bottom:-38px;inset-inline-start:-38px;width:calc(32% + 60px);background:var(--cv-accent-tx,var(--cv-accent,#2e4055));z-index:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.bars [data-section]{position:relative;z-index:1;margin-bottom:calc(16px * var(--cv-smm,1))}
.cv.bars [data-section=summary],.cv.bars [data-section=experience],.cv.bars [data-section=projects]{grid-column:2}
.cv.bars [data-section=education],.cv.bars [data-section=skills]{grid-column:1;color:#eef1f4}
.cv.bars .cv-head{grid-column:1/-1;border-bottom:3px solid var(--cv-accent,#2e4055);padding-bottom:12px;margin-bottom:16px}
.cv.bars .cvname{color:var(--cv-accent-tx,var(--cv-accent,#2e4055));font-size:calc(28px * var(--cv-fsm,1))}
.cv.bars h2{font-size:calc(12.5px * var(--cv-fsm,1));letter-spacing:.1em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#2e4055));border-bottom:1px solid #c8d2dc;padding-bottom:3px}
.cv.bars [data-section=education] h2,.cv.bars [data-section=skills] h2{color:#fff;border-bottom-color:#4d6076}
.cv.bars [data-section=skills] ul{list-style:none;padding:0}
.cv.bars [data-section=skills] li{position:relative;padding-bottom:10px;margin-bottom:7px;font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.bars [data-section=skills] li::before{content:"";position:absolute;bottom:0;inset-inline-start:0;width:100%;height:5px;background:#4d6076;border-radius:3px}
.cv.bars [data-section=skills] li::after{content:"";position:absolute;bottom:0;inset-inline-start:0;height:5px;background:#d9a05b;border-radius:3px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.bars [data-section=skills] li:nth-child(1)::after{width:90%}
.cv.bars [data-section=skills] li:nth-child(2)::after{width:75%}
.cv.bars [data-section=skills] li:nth-child(3)::after{width:82%}
.cv.bars [data-section=skills] li:nth-child(4)::after{width:66%}
.cv.bars [data-section=skills] li:nth-child(5)::after{width:78%}
.cv.bars .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.bars .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.bars .entry strong bdi:first-of-type{font-weight:700}
.cv.bars .entry strong>span{margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#2e4055));font-weight:600}

/* ---- v13 Slate (ref: Damien blue-grey rail model) ---- */
.cv.steel .cv-body{display:grid;grid-template-columns:33% 1fr;column-gap:28px;position:relative}
.cv.steel .cv-body::before{content:"";position:absolute;top:-38px;bottom:-38px;inset-inline-start:-38px;width:calc(33% + 60px);background:#7d8fa0;z-index:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.steel [data-section]{position:relative;z-index:1;margin-bottom:calc(16px * var(--cv-smm,1))}
.cv.steel .cv-head{grid-column:1;text-align:center;color:#fff;padding-top:6px}
.cv.steel .cv-head img{width:110px;height:110px;border-radius:50%;border:4px solid rgba(255,255,255,.85);object-fit:cover;margin:0 auto 10px;display:block}
.cv.steel .cvname{color:#fff;font-size:calc(26px * var(--cv-fsm,1));font-style:italic}
.cv.steel .cv-head p{color:#eef2f5}
.cv.steel [data-section=summary],.cv.steel [data-section=education]{grid-column:1;color:#f2f5f7}
.cv.steel [data-section=experience],.cv.steel [data-section=projects]{grid-column:2}
.cv.steel [data-section=skills]{grid-column:2;background:#eef1f4;margin:-6px -10px 14px;padding:12px 16px;border-radius:4px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.steel [data-section=skills] ul{display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px 22px;padding-inline-start:16px}
.cv.steel h2{font-size:calc(12px * var(--cv-fsm,1));letter-spacing:.22em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#3f5364));border:0;border-bottom:1px solid #c3ccd4;padding-bottom:4px}
.cv.steel .cv-head h2{color:#fff}
.cv.steel [data-section=summary] h2,.cv.steel [data-section=education] h2{color:#fff;border-bottom-color:rgba(255,255,255,.5)}
.cv.steel .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.steel .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.steel .entry strong bdi:first-of-type{font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--cv-accent-dk,#2f3f4c)}
.cv.steel .entry strong>span{margin-inline-start:auto;font-size:calc(12px * var(--cv-fsm,1));color:#5a6b7a;font-weight:600}
.cv.steel [data-section=education] .entry strong bdi:first-of-type,.cv.steel [data-section=education] .entry strong>span{color:#fff}

/* Fixed-width CV preview: document styling does not collapse with device viewport. */

/* ---- v14 Banner (ref: Damien photo + accent banner model) ---- */
.cv.summit .cv-body{display:grid;grid-template-columns:36% 1fr;column-gap:26px;position:relative}
.cv.summit [data-section]{position:relative;z-index:1;margin-bottom:calc(16px * var(--cv-smm,1))}
.cv.summit .cv-head{grid-column:1;margin:-38px 0 18px;margin-inline-start:-38px;padding:0}
.cv.summit .cv-head img{width:100%;height:auto;display:block;border-radius:0}
.cv.summit .cvname{background:var(--cv-accent-tx,var(--cv-accent,#a87f43));color:#fff;font-size:calc(23px * var(--cv-fsm,1));letter-spacing:.04em;padding:12px 18px;margin:0;margin-inline-end:-26px;position:relative;z-index:2;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.summit .cv-head .headline,.cv.summit .cv-head p:first-of-type{background:var(--cv-accent-tx,var(--cv-accent,#a87f43));color:#f3e8d8;margin:0;margin-inline-end:-26px;padding:0 18px 12px;letter-spacing:.22em;text-transform:uppercase;font-size:calc(11px * var(--cv-fsm,1));position:relative;z-index:2;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.summit .cv-head .contact{display:grid;gap:6px;padding:14px 4px 0;font-size:calc(12.5px * var(--cv-fsm,1));color:#3c3c3c}
.cv.summit [data-section=skills]{grid-column:1;background:#33383e;color:#ece9e4;margin-inline-start:-38px;padding:16px 20px 16px 20px;padding-inline-start:24px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.summit [data-section=skills] h2{color:#fff;border:0;letter-spacing:.18em}
.cv.summit [data-section=skills] ul{list-style:none;padding:0;display:grid!important;grid-template-columns:1fr!important;gap:7px;font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.summit [data-section=education],.cv.summit [data-section=projects]{grid-column:1}
.cv.summit [data-section=summary],.cv.summit [data-section=experience]{grid-column:2}
.cv.summit h2{font-size:calc(12.5px * var(--cv-fsm,1));letter-spacing:.16em;text-transform:uppercase;color:#4a4a4a;border-bottom:1px solid #d8d2c8;padding-bottom:4px}
.cv.summit .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.summit .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.summit .entry strong bdi:first-of-type{font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.cv.summit .entry strong bdi:last-of-type{color:#7a6a4e;font-weight:600}
.cv.summit .entry strong>span{margin-inline-start:auto;font-size:calc(12px * var(--cv-fsm,1));color:#8a8a8a;font-weight:600}
/* Fixed-width CV preview: document styling does not collapse with device viewport. */

/* ---- v15 Blush (ref: Damien blush rail + dark banner model) ---- */
.cv.blush .cv-body{display:grid;grid-template-columns:32% 1fr;column-gap:28px;position:relative}
.cv.blush .cv-body::before{content:"";position:absolute;top:-38px;bottom:-38px;inset-inline-start:-38px;width:calc(32% + 60px);background:#ecdcd5;z-index:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.blush [data-section]{position:relative;z-index:1;margin-bottom:calc(18px * var(--cv-smm,1))}
.cv.blush .cv-head{grid-column:1/-1;display:grid;grid-template-columns:32% 1fr;column-gap:28px;margin:0;margin-top:-38px;padding:0 0 18px}
.cv.blush .cv-head img{width:130px;height:130px;border-radius:50%;border:5px solid #fff;object-fit:cover;margin:24px auto 0;display:block;grid-column:1;grid-row:1}
.cv.blush .cvname{grid-column:2;grid-row:1;background:var(--cv-accent-tx,var(--cv-accent,#3c3a3c));color:#fff;font-size:calc(25px * var(--cv-fsm,1));letter-spacing:.3em;text-transform:uppercase;text-align:center;margin:0;margin-inline-end:-38px;padding:34px 24px 4px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.blush .cv-head .headline,.cv.blush .cv-head p:first-of-type:not(.cvname){grid-column:2;background:var(--cv-accent-tx,var(--cv-accent,#3c3a3c));color:#e6dcd4;text-align:center;letter-spacing:.34em;text-transform:uppercase;font-size:calc(10.5px * var(--cv-fsm,1));margin:0;margin-inline-end:-38px;padding:6px 24px 26px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.blush .cv-head .contact{grid-column:1;display:grid;gap:9px;padding:16px 6px 0;font-size:calc(12.5px * var(--cv-fsm,1));color:var(--cv-accent-tx,var(--cv-accent,#3c3a3c))}
.cv.blush h2{background:var(--cv-accent-tx,var(--cv-accent,#3c3a3c));color:#fff;font-size:calc(11.5px * var(--cv-fsm,1));letter-spacing:.24em;text-transform:uppercase;text-align:center;padding:8px 10px;border:0;margin-bottom:12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.blush [data-section=skills],.cv.blush [data-section=projects]{grid-column:1}
.cv.blush [data-section=summary],.cv.blush [data-section=experience],.cv.blush [data-section=education]{grid-column:2}
.cv.blush [data-section=skills] ul{list-style:none;padding:0 6px;display:grid!important;grid-template-columns:1fr!important;gap:7px;font-size:calc(12.5px * var(--cv-fsm,1));color:#4a4446}
.cv.blush [data-section=experience] .entry strong{display:block;text-align:center;font-size:0}
.cv.blush [data-section=experience] .entry strong bdi{display:block;font-size:calc(13px * var(--cv-fsm,1))}
.cv.blush [data-section=experience] .entry strong bdi:first-of-type{font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--cv-accent-tx,var(--cv-accent,#3c3a3c));margin-bottom:2px}
.cv.blush [data-section=experience] .entry strong bdi:last-of-type,.cv.blush [data-section=experience] .entry strong>span{font-weight:600;font-size:calc(12.5px * var(--cv-fsm,1));color:#6b5a55}
.cv.blush [data-section=experience] .entry .entry-text{margin-top:8px}
.cv.blush [data-section=education] .entry strong{display:block;text-align:center;font-size:0}
.cv.blush [data-section=education] .entry strong bdi{display:block;font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.blush [data-section=education] .entry strong bdi:first-of-type{font-weight:700;color:var(--cv-accent-tx,var(--cv-accent,#3c3a3c))}
/* Fixed-width CV preview: document styling does not collapse with device viewport. */

/* ---- v16 Sage (ref: Damien sage top bar + serif name model) ---- */
.cv.willow .cv-body{display:grid;grid-template-columns:32% 1fr;column-gap:28px;position:relative}
.cv.willow .cv-body::after{content:"";position:absolute;top:8px;bottom:0;inset-inline-start:calc(30% + 15px);width:1px;background:#d9dfd8}
.cv.willow [data-section]{position:relative;z-index:1;margin-bottom:calc(16px * var(--cv-smm,1))}
.cv.willow .cv-head{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:24px;position:relative;border-bottom:1px solid #cfd8cf;padding-bottom:20px;margin-bottom:20px}
.cv.willow .cv-head::before{content:"";position:absolute;top:-38px;inset-inline-start:-38px;inset-inline-end:-38px;height:12px;background:var(--cv-accent-lt,#8ba88b);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.willow .cvname{grid-column:1;font-size:calc(34px * var(--cv-fsm,1));letter-spacing:.18em;color:var(--cv-accent-tx,#5b765b);font-weight:500;text-transform:uppercase;line-height:calc(1.15 * var(--cv-lh,1))}
.cv.willow .cv-head .headline,.cv.willow .cv-head p:first-of-type:not(.cvname){grid-column:1;letter-spacing:.3em;text-transform:uppercase;font-size:calc(11px * var(--cv-fsm,1));color:#4a5a4a;margin:6px 0 0}
.cv.willow .cv-head .contact{grid-column:1;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:calc(12px * var(--cv-fsm,1));color:#5a6a5a;margin-top:8px}
.cv.willow .cv-head img{grid-column:2;grid-row:1/span 3;width:108px;height:108px;border-radius:50%;border:7px solid #e6ece6;object-fit:cover}
.cv.willow h2{font-size:calc(12px * var(--cv-fsm,1));letter-spacing:.24em;text-transform:uppercase;color:var(--cv-accent-tx,var(--cv-accent,#536f53));border:0;margin-bottom:10px}
.cv.willow [data-section=skills],.cv.willow [data-section=projects]{grid-column:1}
.cv.willow [data-section=summary],.cv.willow [data-section=experience],.cv.willow [data-section=education]{grid-column:2}
.cv.willow [data-section=skills] ul{display:grid!important;grid-template-columns:1fr!important;gap:7px;font-size:calc(12.5px * var(--cv-fsm,1));color:#3f4a3f}
.cv.willow .entry strong{display:block;font-size:0}
.cv.willow .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.willow .entry strong bdi:first-of-type{font-weight:700;color:#33402f}
.cv.willow .entry strong bdi:last-of-type{font-size:calc(12.5px * var(--cv-fsm,1));color:#5a6a55}
.cv.willow .entry strong bdi:last-of-type::before{content:" | "}
.cv.willow .entry strong>span{font-size:calc(12.5px * var(--cv-fsm,1));color:#8a978a}
.cv.willow .entry strong>span::before{content:" | "}
/* Fixed-width CV preview: document styling does not collapse with device viewport. */

/* ---- REVISIONS: header moved into .cv-body for v11+ ---- */
.cv-body .cv-head{position:relative;z-index:1}
.cv.onyx .cv-body::before{top:-38px;width:calc(34% + 44px)}
.cv.onyx .cv-body::after{top:-38px}
.cv.onyx .cv-head{grid-column:2;grid-row:1;padding-inline-start:0;min-height:140px;margin-bottom:16px}
.cv.onyx .cv-head img{position:absolute;top:10px;inset-inline-start:calc(-100% - 8px);width:118px;height:118px;border-radius:50%;border:5px solid #fff;object-fit:cover}
.cv.steel .cv-head{display:flex;flex-direction:column;align-items:center;grid-column:1;grid-row:1;text-align:center}
.cv.steel .cv-head img{order:-1;margin:0 auto 10px}
.cv.steel .cv-head .contact{color:#eef2f5}
.cv.steel [data-section=summary]{grid-column:1;grid-row:2}
.cv.steel [data-section=education]{grid-column:1;grid-row:3}
.cv.steel [data-section=skills]{grid-column:2;grid-row:1}
.cv.steel [data-section=experience]{grid-column:2;grid-row:2}
.cv.steel [data-section=projects]{grid-column:2;grid-row:3}
.cv.summit .cv-head{display:flex;flex-direction:column;grid-column:1;grid-row:1}
.cv.summit .cv-head img{order:-1}
.cv.summit [data-section=skills]{grid-column:1;grid-row:2}
.cv.summit [data-section=education]{grid-column:1;grid-row:3}
.cv.summit [data-section=projects]{grid-column:1;grid-row:4}
.cv.summit [data-section=summary]{grid-column:2;grid-row:1}
.cv.summit [data-section=experience]{grid-column:2;grid-row:2}
.cv.blush .cv-head{display:grid;grid-template-columns:32% 1fr;column-gap:28px;grid-column:1/-1;grid-row:1;margin:0 0 18px;padding:0}
.cv.blush .cv-head .identity{grid-column:2;background:var(--cv-accent-tx,var(--cv-accent,#3c3a3c));margin-top:-38px;margin-inline-end:-38px;padding:36px 24px 24px;text-align:center;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.blush .cvname{background:none;margin:0;padding:0;color:#fff;font-size:calc(24px * var(--cv-fsm,1));letter-spacing:.3em;text-transform:uppercase}
.cv.blush .cv-head .headline,.cv.blush .cv-head p:first-of-type:not(.cvname){background:none;margin:6px 0 0;padding:0;color:#e6dcd4;letter-spacing:.34em;text-transform:uppercase;font-size:calc(10.5px * var(--cv-fsm,1))}
.cv.blush .cv-head .contact{position:static;display:grid;gap:8px;margin-top:14px;font-size:calc(12px * var(--cv-fsm,1));color:#cfc4bc;padding:0}
.cv.blush .cv-head img{grid-column:1;grid-row:1;width:128px;height:128px;border-radius:50%;border:5px solid #fff;object-fit:cover;margin:18px auto 0;display:block}
.cv.willow .cv-head{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:24px;grid-column:1/-1;grid-row:1}
.cv.willow .cv-head .identity{grid-column:1}
.cv.willow .cv-head img{grid-column:2;grid-row:1}

/* ---- explicit grid rows (sparse auto-placement left rails empty) ---- */
.cv.onyx .cv-head{grid-row:1}
.cv.onyx [data-section=summary]{grid-column:2;grid-row:2}
.cv.onyx [data-section=experience]{grid-column:2;grid-row:3}
.cv.onyx [data-section=education]{grid-column:1;grid-row:1}
.cv.onyx [data-section=skills]{grid-column:1;grid-row:2}
.cv.onyx [data-section=projects]{grid-column:1;grid-row:3}
.cv.onyx .cv-head img{inset-inline-start:-60%}
.cv.bars .cv-head{grid-row:1}
.cv.bars [data-section=summary]{grid-column:2;grid-row:2}
.cv.bars [data-section=experience]{grid-column:2;grid-row:3}
.cv.bars [data-section=projects]{grid-column:2;grid-row:4}
.cv.bars [data-section=education]{grid-column:1;grid-row:2}
.cv.bars [data-section=skills]{grid-column:1;grid-row:3}
.cv.blush [data-section=skills]{grid-column:1;grid-row:2}
.cv.blush [data-section=projects]{grid-column:1;grid-row:3}
.cv.blush [data-section=summary]{grid-column:2;grid-row:2}
.cv.blush [data-section=experience]{grid-column:2;grid-row:3}
.cv.blush [data-section=education]{grid-column:2;grid-row:4}
.cv.willow [data-section=skills]{grid-column:1;grid-row:2}
.cv.willow [data-section=projects]{grid-column:1;grid-row:3}
.cv.willow [data-section=summary]{grid-column:2;grid-row:2}
.cv.willow [data-section=experience]{grid-column:2;grid-row:3}
.cv.willow [data-section=education]{grid-column:2;grid-row:4}

/* v11 rail rows below photo */
.cv.onyx [data-section=education]{grid-row:2}
.cv.onyx [data-section=skills]{grid-row:3}
.cv.onyx [data-section=projects]{grid-row:4}
.cv.onyx [data-section=summary]{grid-row:2}
.cv.onyx [data-section=experience]{grid-row:3}

.cv.onyx [data-section=skills] ul,.cv.bars [data-section=skills] ul{grid-template-columns:1fr!important}

/* ---- fixes round 2 ---- */
.cv.bars .cv-head{position:relative;min-height:132px}
.cv.bars .cv-head .identity{padding-inline-start:calc(32% + 40px)}
.cv.bars .cv-head img{position:absolute;top:6px;inset-inline-start:6px;width:106px;height:106px;border-radius:50%;border:4px solid #fff;object-fit:cover}
.cv.willow .entry strong{font-size:calc(13px * var(--cv-fsm,1))}
.cv.willow .entry strong bdi:last-of-type::before,.cv.willow .entry strong>span::before{content:none}
.cv.blush .cv-head .contact{display:block}

/* ---- fixes round 3 (parent review) ---- */
.cv.onyx .cv-body{grid-template-columns:36% 1fr}
.cv.onyx .cv-body::before{width:calc(36% + 44px)}
.cv.bars .cv-body{grid-template-columns:34% 1fr}
.cv.bars .cv-body::before{width:calc(34% + 60px)}
.cv.bars .cv-head .identity{padding-inline-start:calc(34% + 40px)}
.cv.onyx [data-section=skills] li,.cv.bars [data-section=skills] li{font-size:calc(11px * var(--cv-fsm,1));padding-bottom:9px;margin-bottom:5px;word-break:keep-all;overflow-wrap:normal;hyphens:none}
.cv.summit .cv-head img{height:180px;object-fit:cover;object-position:top}
.cv.summit .cv-head .contact{display:block;font-size:calc(12px * var(--cv-fsm,1))}
.cv.steel .cv-head{padding-top:0}
.cv.steel .cv-head img{width:92px;height:92px}
.cv.steel .cvname{font-size:calc(22px * var(--cv-fsm,1))}
.cv.steel [data-section=skills]{align-self:start;padding:16px 18px}
.cv.steel [data-section=skills] li{font-size:calc(12px * var(--cv-fsm,1))}
.cv.blush [data-section=experience] .entry{margin-bottom:16px}
.cv.blush [data-section=experience] .entry .entry-text{line-height:calc(1.55 * var(--cv-lh,1));margin-top:6px}
.cv.blush [data-section=experience] .entry strong>span{display:block;margin-top:3px}
.cv.blush [data-section=education] .entry{margin-bottom:10px}

/* ---- fixes round 4 ---- */
.cv.onyx [data-section=skills] ul,.cv.bars [data-section=skills] ul{display:grid!important;grid-template-columns:1fr!important;column-count:1!important;columns:auto!important}
.cv.steel [data-section=skills]{height:100%;box-sizing:border-box}
.cv.summit .cv-head .identity{margin-inline-end:-26px}
.cv.willow .cv-head .contact{display:flex;flex-wrap:wrap;gap:3px 10px}
.cv.steel .cv-head .contact{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 8px}

.cv.steel [data-section=skills]{align-self:stretch;height:auto}

/* ---- fixes round 5 (parent pixel review) ---- */
.cv.onyx .entry strong,.cv.bars .entry strong{display:block;font-size:calc(13px * var(--cv-fsm,1))}
.cv.onyx .entry strong bdi:first-of-type,.cv.bars .entry strong bdi:first-of-type{display:block;font-weight:700;text-transform:uppercase;letter-spacing:.02em;margin-bottom:1px}
.cv.onyx .entry strong>span,.cv.bars .entry strong>span{margin-inline-start:0;font-weight:600}
.cv.onyx [data-section],.cv.bars [data-section]{margin-bottom:calc(10px * var(--cv-smm,1))}
.cv.onyx h2,.cv.bars h2{margin-bottom:7px}
.cv.onyx .entry,.cv.bars .entry{margin-bottom:6px}
.cv.onyx .cv-head{min-height:126px}
.cv.steel .cvname{font-size:calc(19px * var(--cv-fsm,1));white-space:nowrap}
.cv.steel .cv-head img{width:88px;height:88px}
.cv.steel .cv-head .headline,.cv.steel .cv-head p:first-of-type{font-size:calc(10.5px * var(--cv-fsm,1))}
.cv.steel .cv-head .contact{font-size:calc(11.5px * var(--cv-fsm,1));gap:2px 6px}
.cv.summit .cv-head img{height:150px;object-position:center 25%}
.cv.summit .cv-head .identity{margin-top:-16px;position:relative;z-index:2}

/* ---- fixes round 6 ---- */
.cv.steel .cv-body{grid-template-columns:38% 1fr}
.cv.steel .cv-body::before{width:calc(38% + 60px)}
.cv.steel .cvname{font-size:calc(22px * var(--cv-fsm,1));letter-spacing:-.01em}

/* v14: smaller clean photo, banner fully below, no overlap */
.cv.summit .cv-head img{height:150px;object-position:center 38%}
.cv.summit .cv-head .identity{margin-top:0;position:static}

/* v14 banner as one solid block */
.cv.summit .cv-head .identity{background:var(--cv-accent-tx,var(--cv-accent,#a87f43));padding:12px 18px 6px;margin-inline-end:-12px;align-self:stretch;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.summit .cvname{background:none;padding:0;margin:0;color:#fff}
.cv.summit .cv-head .headline,.cv.summit .cv-head p:first-of-type{background:none;padding:0 0 6px;margin:0;color:#f3e8d8}
.cv.summit .cv-head .contact{background:#fff;margin:8px -18px -6px;padding:10px 4px 8px;color:#3c3c3c}
.cv.summit [data-section=summary],.cv.summit [data-section=experience]{margin-inline-start:14px}

/* print safety for editor chrome */
@media print{#cvpbar,#cvpswitch{display:none!important}}

/* ===== full-screen editor chrome (c161) ===== */
body.cvpeditor>header,body.cvpeditor footer.cvp-foot,.cvpeditor #cvp-top,.cvpeditor .page-hero,.cvpeditor .builder-intro,.cvpeditor #preview-fab,body.cvpeditor a.skip{display:none!important}
html.cvpeditor-html,body.cvpeditor{background:#f2f3f4!important}
.cvpeditor main.pg-3{padding:0!important;margin:0!important;max-width:none!important}
body.cvpeditor{padding-top:56px!important}
#cvpbar{position:fixed;top:0;left:0;right:0;height:52px;display:flex;align-items:center;gap:14px;background:#33383e;padding:0 18px;z-index:60;box-shadow:0 2px 10px rgba(20,24,28,.25);font-family:inherit}
#cvpbar .logo{display:flex;align-items:center;gap:8px;text-decoration:none}
#cvpbar .logo .mark{width:22px;height:22px;border-radius:6px;background:#4a7a63;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700}
#cvpbar .logo .word{color:#f2f0eb;font-size:15.5px;font-weight:600;letter-spacing:.2px}
#cvpbar .rule{width:1px;height:20px;background:#565c63}
#cvpbar .t{font-size:14px;font-weight:600;color:#e8e6e1;white-space:nowrap}
#cvpbar .saved{font-size:12px;color:#a8a29a;display:flex;align-items:center;gap:6px;white-space:nowrap}
#cvpbar .saved i{width:6px;height:6px;border-radius:50%;background:#7db39a;display:inline-block}
#cvpbar .grow{flex:1}
#cvpbar .lang{border:1px solid #565c63;background:transparent;border-radius:6px;padding:4px 10px;font-size:12px;color:#cfd3d8}
#cvpbar .dl{background:#4a7a63;color:#fff;border:0;border-radius:6px;padding:8px 20px;font-size:13px;font-weight:600;text-decoration:none}
.cvpeditor .builder{display:grid!important;grid-template-columns:minmax(420px,500px) minmax(0,1fr)!important;gap:26px!important;max-width:1240px!important;margin:0 auto!important;padding:22px 24px 70px!important}
.cvpeditor form#cv-form.editor{background:#fff!important;border:1px solid #e2e4e6!important;border-radius:10px!important;padding:18px 20px!important;align-self:start}
.cvpeditor #cv-form>h2{font-size:calc(12px * var(--cv-fsm,1));font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#7d8fa0;background:transparent;border:0;padding:0 0 14px;margin:0;border-bottom:1px solid #ecedee}
.cvpgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;margin:14px 0 4px}
.cvpgrid .f{display:flex;flex-direction:column;gap:5px}
.cvpgrid label{font-size:calc(11px * var(--cv-fsm,1));font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#8a94a0}
.cvpeditor #cv-form input[type=text],.cvpeditor #cv-form input:not([type]),.cvpeditor #cv-form input[type=email],.cvpeditor #cv-form input[type=tel],.cvpeditor #cv-form input[type=url],.cvpeditor #cv-form textarea,.cvpeditor .sec-title{background:#f7f8f9!important;border:1px solid #e2e4e6!important;border-radius:6px!important;padding:9px 11px!important;font-size:calc(13.5px * var(--cv-fsm,1))!important;color:#33383e!important}
.cvpeditor #cv-form input:focus,.cvpeditor #cv-form textarea:focus{border-color:#7d8fa0!important;box-shadow:0 0 0 3px rgba(125,143,160,.18)!important;outline:none!important}
.cvpeditor #cv-form>label,.cvpeditor #cv-form>p.meta,.cvpeditor #cv-form>p.lay-link,.cvpeditor #cv-form .photo-ctl,.cvpeditor #cv-form>.bb-custom-select-container{background:transparent;border:0;padding:4px 0;margin:0}
.cvpeditor #cv-form>p.lay-link a{color:#5b7186;font-size:calc(13px * var(--cv-fsm,1))}
.cvpeditor .sec-list>*{background:#fff;border:1px solid #e2e4e6;border-radius:10px;margin:10px 0;padding:12px 16px}
.cvpeditor .sec-list .sec-head{display:flex;align-items:center;justify-content:space-between;font-size:calc(14px * var(--cv-fsm,1));font-weight:700;color:#33383e;margin-bottom:8px}
.cvpeditor .sec-list .sec-tools{display:inline-flex;gap:6px}
.cvpeditor .sec-list .sec-tools button{background:#f2f3f4;border:1px solid #e2e4e6;border-radius:6px;font-size:calc(12px * var(--cv-fsm,1))}
.cvpeditor .sec-add{background:#fff!important;border:1.5px dashed #c3c9cf!important;border-radius:10px!important;color:#7d8fa0!important;padding:11px!important;font-size:calc(13px * var(--cv-fsm,1))!important}
.cvpeditor .actions{margin-top:12px}
.cvpeditor #preview-col{align-self:start;position:sticky;top:74px;max-height:calc(100vh - 86px);overflow-y:auto;overscroll-behavior:contain} /* tall sheets must stay reachable: the app shell is viewport-locked, so the column scrolls internally */
.cvpeditor .preview-col h2{font-size:calc(12px * var(--cv-fsm,1));font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#7d8fa0;margin:0 0 8px}
.cvpeditor #sample-badge{background:#f0f4f8;border:1px solid #d8e0e8;border-radius:6px;padding:7px 11px;font-size:calc(11.5px * var(--cv-fsm,1));color:#5b7186}
.cvpeditor table.psheet{border:1px solid #d5dade;border-radius:4px;box-shadow:0 12px 34px rgba(20,24,28,.12);margin:0}
#cvpswitch{display:none}
@media(max-width:900px){
.cvpeditor .builder{grid-template-columns:1fr!important;padding:16px 14px 110px!important}
.cvpeditor #preview-col{position:static}
body.cvpeditor.cvpview-preview form#cv-form{display:none!important}
body:not(.cvpview-preview) .cvpeditor #preview-col{display:none!important}
#cvpswitch{display:flex;position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#33383e;border-radius:999px;padding:5px;gap:4px;z-index:70;box-shadow:0 8px 24px rgba(20,24,28,.35)}
#cvpswitch button{border:0;background:transparent;color:#cfd3d8;font-size:13.5px;font-weight:600;padding:9px 26px;border-radius:999px}
#cvpswitch button.on{background:#4a7a63;color:#fff}
#cvpbar .saved span{display:none}
#cvpbar{padding:0 14px;gap:10px}
}
html[data-theme=dark] body.cvpeditor,html[data-theme=dark].cvpeditor-html{background:#191b1e!important}
html[data-theme=dark] #cvpbar{background:#141619;box-shadow:0 2px 10px rgba(0,0,0,.5)}
html[data-theme=dark] #cvpbar .rule{background:#3a3e44}
html[data-theme=dark] #cvpbar .saved{color:#8a8478}
html[data-theme=dark] .cvpeditor form#cv-form.editor,html[data-theme=dark] .cvpeditor .sec-list>*,html[data-theme=dark] .cvpeditor .sec-add{background:#22252a!important;border-color:#36393f!important}
html[data-theme=dark] .cvpeditor #cv-form>h2{color:#8fa3b8;border-bottom-color:#33363c}
html[data-theme=dark] .cvpeditor .sec-list .sec-head{color:#e6e3dc}
html[data-theme=dark] .cvpeditor .sec-list .sec-tools button{background:#1b1d21;border-color:#36393f;color:#c9cdd3}
html[data-theme=dark] .cvpeditor .cvpgrid label{color:#8a94a0}
html[data-theme=dark] .cvpeditor #cv-form input,html[data-theme=dark] .cvpeditor #cv-form textarea,html[data-theme=dark] .cvpeditor .sec-title{background:#1b1d21!important;border-color:#36393f!important;color:#e6e3dc!important}
html[data-theme=dark] .cvpeditor #cv-form>p.lay-link a{color:#7fa3c4}
html[data-theme=dark] .cvpeditor .preview-col h2{color:#8fa3b8}
html[data-theme=dark] .cvpeditor #sample-badge{background:#232a33;border-color:#33404d;color:#8fa8bd}
html[data-theme=dark] .cvpeditor table.psheet{border-color:#3a3e44;box-shadow:0 12px 34px rgba(0,0,0,.45)}
html[data-theme=dark] #cvpswitch{background:#141619}
.cvpeditor table.psheet{margin:0 auto!important}
html[data-theme=dark] .cvpeditor .photo-ctl button,html [data-theme] .cvpeditor .photo-ctl button{background:#f2f3f4;border:1px solid #e2e4e6;border-radius:6px;padding:6px 12px;font-size:calc(12.5px * var(--cv-fsm,1))}
@media(max-width:520px){.cvpgrid{grid-template-columns:1fr}}
@media(max-width:900px){
#cvpbar{padding:0 10px;gap:8px}
#cvpbar .logo .word{display:none}
#cvpbar .rule{display:none}
#cvpbar .t{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:32vw}
#cvpbar .lang{padding:4px 8px}
#cvpbar .dl{padding:7px 14px;font-size:12.5px;margin-inline-end:2px;white-space:nowrap}
.cvpeditor #cv-form .bb-custom-select-container{max-width:100%;overflow:hidden}
.cvpeditor #cv-form .bb-custom-select-container .bb-custom-select-display,.cvpeditor #cv-form .bb-custom-select-container>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
}
/* real controls moved into the bar */
#cvpbar .saved #status{background:none;border:0;padding:0;margin:0;font-size:12px;color:#a8a29a}
#cvpbar .lang-menu{position:relative;flex:none}
#cvpbar .lang-menu>summary{list-style:none;cursor:pointer;border:1px solid #565c63;background:transparent;border-radius:6px;padding:4px 10px;font-size:12px;color:#cfd3d8}
#cvpbar .lang-menu>summary::-webkit-details-marker{display:none}
#cvpbar .lang-menu[open]>summary{border-color:#7d8fa0;color:#fff}
#cvpbar .lang-menu>div{position:absolute;top:34px;inset-inline-end:0;background:#fff;border:1px solid #e2e4e6;border-radius:8px;box-shadow:0 10px 26px rgba(20,24,28,.25);padding:6px;display:flex;flex-direction:column;min-width:120px;z-index:80}
#cvpbar .lang-menu>div a{padding:7px 10px;border-radius:6px;font-size:13px;color:#33383e;text-decoration:none;white-space:nowrap}
#cvpbar .lang-menu>div a:hover{background:#f2f3f4}
#cvpbar .lang-menu>div a[aria-current]{font-weight:700;color:#4a7a63}
#cvpbar .theme-toggle{flex:none;width:32px;height:32px;border:1px solid #565c63;background:transparent;border-radius:6px;color:#cfd3d8;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
#cvpbar #print.dl{background:#4a7a63;color:#fff;border:0;border-radius:6px;padding:8px 20px;font-size:13px;font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap;font-family:inherit}
#cvpbar #print.dl:hover{background:#3d6a55}
html[data-theme=dark] #cvpbar .lang-menu>div{background:#22252a;border-color:#36393f}
html[data-theme=dark] #cvpbar .lang-menu>div a{color:#e6e3dc}
html[data-theme=dark] #cvpbar .lang-menu>div a:hover{background:#1b1d21}
@media(max-width:900px){
#cvpbar .saved #status{display:none}
#cvpbar .lang-menu>summary{padding:4px 8px}
#cvpbar .theme-toggle{width:28px;height:28px}
#cvpbar #print.dl{padding:7px 14px;font-size:12.5px;margin-inline-end:2px}
}

/* ---- mobile collapse for the 7 rail-band layouts (restored c161.1, with rail color fixes) ---- */
/* Fixed-width CV preview: document styling does not collapse with device viewport. */

/* ===== c162 defect fixes (36-layout pass) ===== */
/* wrap at word boundaries; unbroken strings still wrap when they overflow */
.cv{overflow-wrap:break-word}
.cv .entry strong>*{min-width:0} /* flex items: let long unbroken words shrink and wrap instead of crossing the column edge */
/* stretch body so rail bands reach the sheet bottom with sparse data */
@media screen{
 .cv{display:flex;flex-direction:column}
 .cv .cv-body{flex:1 0 auto}
}
/* dual + soft dark rails: entry parts rendered accent-on-accent (invisible) */
.cv.dual [data-section=education] .entry strong bdi:last-of-type,.cv.dual [data-section=skills] .entry strong bdi:last-of-type,.cv.dual [data-section=projects] .entry strong bdi:last-of-type{color:#e8ccd9}
.cv.dual [data-section=education] .entry strong>span,.cv.dual [data-section=skills] .entry strong>span,.cv.dual [data-section=projects] .entry strong>span{order:0;flex:none;margin-inline-start:auto;color:#d8b6c6}
.cv.soft [data-section=education] .entry strong bdi:last-of-type,.cv.soft [data-section=skills] .entry strong bdi:last-of-type,.cv.soft [data-section=projects] .entry strong bdi:last-of-type{color:#cde8e0}
.cv.soft [data-section=education] .entry strong>span,.cv.soft [data-section=skills] .entry strong>span,.cv.soft [data-section=projects] .entry strong>span{order:0;flex:none;margin-inline-start:auto;color:#aed8cd}
/* willow: hide the gutter divider where it crosses the header */
.cv.willow .cv-head{background:#fff;z-index:2;-webkit-print-color-adjust:exact;print-color-adjust:exact}
/* summit: align banner/photo/rail edges, consistent rail inset, calm one-line entries */
.cv.summit .cvname,.cv.summit .cv-head .headline,.cv.summit .cv-head p:first-of-type{margin-inline-end:0}
.cv.summit .cv-head .contact{padding:14px 18px 0}
.cv.summit [data-section=skills]{padding-inline:18px}
.cv.summit [data-section=education],.cv.summit [data-section=projects]{padding-inline:18px}
.cv.summit .entry strong bdi:only-of-type{text-transform:none;color:#4a4a4a;font-weight:600}
/* narrow rails: keep long section-title words and skill words whole */
.cv.arc [data-section=education] h2,.cv.arc [data-section=skills] h2,.cv.arc [data-section=projects] h2,.cv.banner [data-section=skills] h2,.cv.banner [data-section=projects] h2,.cv.column [data-section=skills] h2,.cv.column [data-section=projects] h2,.cv.split [data-section=skills] h2,.cv.split [data-section=projects] h2,.cv.soft [data-section=education] h2,.cv.soft [data-section=skills] h2,.cv.soft [data-section=projects] h2{font-size:calc(11.5px * var(--cv-fsm,1));letter-spacing:.05em}
.cv.column [data-section=skills] li,.cv.split [data-section=skills] li{font-size:calc(11.5px * var(--cv-fsm,1));padding-inline-start:10px}
/* summit: hug the oak identity when there is no headline (no stray band) */
.cv.summit .cv-head .identity:not(:has(.headline)){flex-grow:0;background:0 0;padding-bottom:0}
.cv.summit .cv-head .identity:not(:has(.headline)) .cvname{background:var(--cv-accent-tx,var(--cv-accent,#a87f43));color:#fff;font-size:calc(23px * var(--cv-fsm,1));letter-spacing:.04em;text-transform:uppercase;padding:12px 18px;margin-inline-end:-26px}
/* summit: banners live on name/headline elements, identity transparent (no stretch strip in any state) */
.cv.summit .cv-head .identity{background:0 0;padding:0}
.cv.summit .cv-head .contact{margin:0;padding:10px 18px 12px}
/* summit: restore element-level oak banners over c161.3 background:none */
.cv.summit .cv-head p.cvname{background:var(--cv-accent-tx,var(--cv-accent,#a87f43));color:#fff;font-size:calc(23px * var(--cv-fsm,1));letter-spacing:.04em;padding:12px 18px;margin-inline-end:-26px}
.cv.summit .cv-head p.headline{background:var(--cv-accent-tx,var(--cv-accent,#a87f43));padding:0 18px 12px;margin-inline-end:-26px}
/* summit: contact stacks one item per line, no separators (font-size:0 hides the bullet text nodes) */
.cv.summit .cv-head .contact{display:grid;gap:5px;font-size:0}
.cv.summit .cv-head .contact bdi{font-size:calc(12px * var(--cv-fsm,1))}
/* summit: rail sections share one left edge with the skills band */
.cv.summit [data-section=education],.cv.summit [data-section=projects]{margin-inline-start:-38px;padding-inline-start:18px}
/* summit: rail entries flow as text (no ragged flex wraps in the narrow rail) */
.cv.summit [data-section=education] .entry strong,.cv.summit [data-section=projects] .entry strong{display:block;font-size:0}
.cv.summit [data-section=education] .entry strong bdi,.cv.summit [data-section=projects] .entry strong bdi{display:block;font-size:calc(13px * var(--cv-fsm,1))}
.cv.summit [data-section=education] .entry strong>.entry-date,.cv.summit [data-section=projects] .entry strong>.entry-date{display:block;margin-inline-start:0;font-size:calc(13px * var(--cv-fsm,1))}
@media print{.cv.summit .cv-body{display:grid;grid-template-columns:36% 1fr}}

/* c166 repair pack */
.cv .cv-body{align-content:start}
/* Fixed-width CV preview: document styling does not collapse with device viewport. */

/* ===== c166 Studio chrome ===== */
@font-face{font-family:"DejaVu Serif";src:url("/pdf-export/DejaVuSerif.ttf") format("truetype");font-weight:400}
@font-face{font-family:"DejaVu Serif";src:url("/pdf-export/DejaVuSerif-Bold.ttf") format("truetype");font-weight:700}
@font-face{font-family:"DejaVu Serif";src:url("/pdf-export/DejaVuSerif-Italic.ttf") format("truetype");font-style:italic}
@font-face{font-family:"DejaVu Serif";src:url("/pdf-export/DejaVuSerif-BoldItalic.ttf") format("truetype");font-weight:700;font-style:italic}
body.studio{margin:0;background:#eceae4}
body.studio .preview-col{position:static;max-height:none;overflow:visible;scrollbar-gutter:auto} /* the stage is the scroll container: neutralize the marketing-page sticky/max-height rules or tall sheets are unreachable */
body.studio #app{display:flex;flex-direction:column;height:100vh;height:100dvh}
.st-top{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #dcd8cf;flex-wrap:wrap}
.st-back{color:#286b5b;text-decoration:none;font:600 13px/1 "Pebble Sans",Arial,sans-serif;white-space:nowrap}
.st-docname{flex:0 1 240px;min-width:100px;border:1px solid transparent;border-radius:8px;padding:6px 10px;font:600 14px/1.2 "Pebble Sans",Arial,sans-serif;background:transparent}
.st-docname:hover,.st-docname:focus{border-color:#c8d2dc;background:#fff;outline:none}
.st-saved{font:12px/1.4 Arial,sans-serif;color:#6b7280}
.st-icon{border:1px solid #dcd8cf;background:#fff;border-radius:8px;width:32px;height:32px;font-size:16px;cursor:pointer}
.st-icon:disabled{opacity:.4;cursor:default}
.st-lang,.st-kebab{position:relative}
.st-lang summary,.st-kebab summary{list-style:none;cursor:pointer;border:1px solid #dcd8cf;border-radius:8px;padding:6px 10px;font:600 13px/1 "Pebble Sans",Arial,sans-serif;background:#fff}
.st-lang summary::-webkit-details-marker,.st-kebab summary::-webkit-details-marker{display:none}
.st-menu{position:absolute;inset-inline-end:0;top:calc(100% + 4px);background:#fff;border:1px solid #dcd8cf;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:8px;display:flex;flex-direction:column;gap:4px;min-width:200px;z-index:60}
.st-menu a{padding:6px 8px;border-radius:6px;color:#222;text-decoration:none;font:13px/1.3 Arial,sans-serif}
.st-menu a:hover{background:#f0ede6}
.st-kitem{display:flex;justify-content:space-between;align-items:center;gap:10px;font:13px/1.4 Arial,sans-serif;padding:4px 8px}
.st-kitem select{max-width:120px}
.st-remember{justify-content:flex-start;cursor:pointer}
.st-kbtn{border:1px solid #dcd8cf;background:#fff;border-radius:8px;padding:6px 10px;font:13px/1.2 Arial,sans-serif;cursor:pointer;text-align:start}
.st-kbtn:hover{background:#f0ede6}
.st-danger{color:#b3261e}
.st-download{margin-inline-start:auto;border:0;background:#286b5b;color:#fff;border-radius:10px;padding:9px 18px;font:700 14px/1 "Pebble Sans",Arial,sans-serif;cursor:pointer}
.st-download:disabled{opacity:.6;cursor:wait}
.st-main{flex:1;display:flex;min-height:0}
.st-rail{width:370px;flex:0 0 auto;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:12px;background:#f6f4ef;border-inline-end:1px solid #dcd8cf}
.st-stage{flex:1;overflow:auto;position:relative;padding:18px}
.st-stage:fullscreen{background:#eceae4}
.st-card{background:#fff;border:1px solid #e2ddd2;border-radius:12px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.st-cardh{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid #eee9de}
.st-cardh h3{margin:0;font:700 14px/1.2 "Pebble Sans",Arial,sans-serif;flex:1}
.st-cardb{padding:12px;display:flex;flex-direction:column;gap:10px}
.st-cardb.st-collapsed{display:none}
.st-grip{cursor:grab;color:#9aa1a8;font-size:14px;user-select:none;touch-action:none}
.st-mini{border:1px solid #dcd8cf;background:#fff;border-radius:7px;padding:4px 9px;font:12px/1.2 Arial,sans-serif;cursor:pointer}
.st-mini:hover{background:#f0ede6}
.st-f{display:flex;flex-direction:column;gap:4px;font:600 12px/1.3 "Pebble Sans",Arial,sans-serif;color:#3c4146}
.st-f input[type=text],.st-ef,.st-sectitle{border:1px solid #d5cfc2;border-radius:8px;padding:7px 9px;font:400 13px/1.4 Arial,sans-serif;width:100%;box-sizing:border-box;background:#fff}
.st-f input:focus,.st-ef:focus,.st-sectitle:focus,.st-rte:focus{border-color:#286b5b;outline:none}
.st-headline{flex-direction:row;align-items:flex-end;gap:8px}
.st-headline .st-f{flex:1}
.st-mini-toggle{display:flex;align-items:center;gap:4px;font:12px Arial,sans-serif;color:#6b7280;cursor:pointer;padding-bottom:8px}
.st-ph-lab{font:600 12px/1.3 "Pebble Sans",Arial,sans-serif;color:#3c4146}
.st-ph-ctl{display:flex;align-items:center;gap:8px;margin-top:4px;flex-wrap:wrap}
.st-ph-thumb{width:44px;height:56px;object-fit:cover;border-radius:6px;border:1px solid #d5cfc2}
.st-hint{margin:2px 0 0;font:11.5px/1.4 Arial,sans-serif;color:#6b7280}
.st-xfields{display:flex;flex-direction:column;gap:6px;border-top:1px dashed #e2ddd2;padding-top:10px}
.st-xf{display:flex;align-items:center;gap:8px;font:12.5px/1.4 Arial,sans-serif;cursor:pointer;flex-wrap:wrap}
.st-xf input[type=text]{flex:1 1 100%;margin-inline-start:22px}
.st-cfields{display:flex;flex-direction:column;gap:6px}
.st-cfield{display:flex;gap:6px;align-items:center}
.st-cfield input{border:1px solid #d5cfc2;border-radius:8px;padding:6px 8px;font:13px Arial,sans-serif;min-width:0}
.st-cfield input:first-child{flex:0 0 35%}
.st-cfield input:nth-child(2){flex:1}
.st-seclist{display:flex;flex-direction:column;gap:12px}
.st-flash{outline:2px solid #286b5b;outline-offset:2px;transition:outline-color .8s}
.st-entries{display:flex;flex-direction:column;gap:10px}
.st-entry{border:1px solid #eee9de;border-radius:10px;background:#fcfbf8}
.st-entryh{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-bottom:1px solid #f0ece2}
.st-entryb{padding:8px;display:flex;flex-direction:column;gap:8px}
.st-dates{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.st-dsep{color:#9aa1a8}
.st-my{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}
.st-mo,.st-yr,.st-lvsel{border:1px solid #d5cfc2;border-radius:7px;padding:5px 6px;font:12.5px Arial,sans-serif;background:#fff;max-width:130px}
.st-yr{max-width:84px}
.st-present{font:12px Arial,sans-serif;color:#3c4146;display:inline-flex;gap:4px;align-items:center;cursor:pointer}
.st-rich{border:1px solid #d5cfc2;border-radius:8px;overflow:hidden;background:#fff}
.st-richtb{display:flex;gap:4px;padding:5px 6px;border-bottom:1px solid #eee9de;background:#faf8f3}
.st-rte{min-height:64px;max-height:220px;overflow-y:auto;padding:8px 9px;font:13px/1.5 Arial,sans-serif}
.st-rte:empty::before{content:attr(data-placeholder);color:#9aa1a8}
.st-chips{display:flex;flex-wrap:wrap;gap:6px}
.st-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid #d5cfc2;border-radius:999px;padding:3px 6px;background:#faf8f3}
.st-chip input{border:0;background:transparent;font:12.5px Arial,sans-serif;width:110px}
.st-chip input:focus{outline:none}
.st-lvsel{max-width:76px;padding:2px 3px;font-size:11px}
.st-chipadd{flex:1 1 140px;border:1px dashed #c8d2dc;border-radius:999px;padding:6px 10px;font:12.5px Arial,sans-serif;background:#fff}
.st-add summary{list-style:none;cursor:pointer;text-align:center;padding:11px;border:1.5px dashed #a9b6ae;border-radius:12px;color:#286b5b;font:700 13.5px/1 "Pebble Sans",Arial,sans-serif;background:#fff}
.st-add summary::-webkit-details-marker{display:none}
.st-addmenu{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:10px 2px 2px}
.st-addopt{border:1px solid #dcd8cf;background:#fff;border-radius:8px;padding:8px 6px;font:12.5px/1.25 Arial,sans-serif;cursor:pointer}
.st-addopt:hover{background:#f0ede6;border-color:#286b5b}
.st-pill{position:absolute;inset-inline:0;bottom:14px;margin:0 auto;width:max-content;max-width:96vw;display:flex;gap:2px;align-items:center;background:#20242a;border-radius:999px;padding:6px 8px;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:50}
.st-pbtn{border:0;background:transparent;color:#eef1f4;border-radius:999px;padding:8px 14px;font:600 13px/1 "Pebble Sans",Arial,sans-serif;cursor:pointer;white-space:nowrap}
.st-pbtn:hover{background:#31363e}
.st-pop{position:absolute;bottom:calc(100% + 10px);inset-inline-start:0;background:#fff;border-radius:14px;box-shadow:0 12px 36px rgba(0,0,0,.28);padding:12px;min-width:260px;max-width:min(560px,92vw);max-height:60vh;overflow-y:auto;color:#222}
.st-tplgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;min-width:min(480px,84vw)}
.st-tpl{border:1px solid #e2ddd2;border-radius:10px;padding:4px;background:#fff;cursor:pointer;display:flex;flex-direction:column;gap:3px;align-items:center}
.st-tpl img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:top;border-radius:6px;background:#f0ede6}
.st-tpl span{font:11px/1.2 Arial,sans-serif;color:#3c4146}
.st-tpl.on{border-color:#286b5b;outline:2px solid #286b5b}
.st-opts{display:flex;flex-direction:column;gap:6px;min-width:230px}
.st-poph{margin:6px 0 2px;font:700 12px/1.2 "Pebble Sans",Arial,sans-serif;color:#3c4146}
.st-seg{display:flex;gap:4px}
.st-opt{border:1px solid #dcd8cf;background:#fff;border-radius:8px;padding:8px 10px;font:13px/1.2 Arial,sans-serif;cursor:pointer;flex:1}
.st-opt.on{border-color:#286b5b;background:#e9f3ef;color:#1d5347}
.st-swatches{display:flex;gap:6px;flex-wrap:wrap}
.st-swatch{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #c8c2b4;cursor:pointer}
.st-swatch.on{box-shadow:0 0 0 2px #286b5b}
.st-swatch.auto{background:#fff;color:#9aa1a8;font-size:13px;line-height:1}
.st-custom{display:flex;align-items:center;gap:8px;font:12.5px Arial,sans-serif;margin-top:4px}
.st-mobtabs{display:none}
/* design variables consumed by templates */
.cv.cv-font-sans{font-family:"Pebble Sans","Noto Sans Arabic",Arial,sans-serif}
.cv.cv-font-serif{font-family:"Pebble Serif","Noto Sans Arabic",Georgia,serif}
.cv.cv-font-slab{font-family:"DejaVu Serif","Noto Sans Arabic",Georgia,serif}
.cv.cv-size-s{--cv-fsm:.9}
.cv.cv-size-m{--cv-fsm:1}
.cv.cv-size-l{--cv-fsm:1.12}
.cv.cv-space-compact{--cv-lh:.9;--cv-smm:.75}
.cv.cv-space-standard{--cv-lh:1;--cv-smm:1}
.cv.cv-space-roomy{--cv-lh:1.1;--cv-smm:1.35}
/* truthful skill meters: track always, fill only at explicit level */
.cv.onyx [data-section=skills] li.has-lv::after{width:var(--lv)}
.cv.onyx [data-section=skills] li.no-lv::after{display:none}
.cv.bars [data-section=skills] li.has-lv::after{width:var(--lv)}
.cv.bars [data-section=skills] li.no-lv::after{display:none}
/* dangling-pipe fix: date span never wraps away from its title */
.entry-date{white-space:nowrap}
@media (max-width:900px){
  .st-mobtabs{display:flex;gap:4px;background:#fff;border-top:1px solid #dcd8cf;padding:8px;position:fixed;inset-inline:0;bottom:0;z-index:800;overflow-x:auto}
  .st-mobtabs button{flex:1 0 auto;min-width:max-content;border:1px solid #dcd8cf;background:#fff;border-radius:9px;padding:9px;font:600 13px/1 "Pebble Sans",Arial,sans-serif;cursor:pointer;color:#222;white-space:nowrap}
  .st-mobtabs button.on{background:#286b5b;color:#fff;border-color:#286b5b}
  .st-main{padding-bottom:120px} /* clears the fixed tab bar (50px) + pill (41px at bottom:62) + gaps when scrolled to the end */
  .st-main{flex:1;min-height:0}
  body[data-mob=edit] .st-stage{display:none}
  body[data-mob=preview] .st-rail{display:none}
  body[data-mob=preview] .st-stage{padding:8px}
  .st-main,.st-stage{min-width:0}
  .st-main{width:100%}
  body[data-mob=design] .st-stage{display:none}
  .st-rail{width:100%;border-inline-end:0;padding-bottom:90px}
  .st-pill{bottom:62px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .st-pill::-webkit-scrollbar{display:none}
  .st-docname{flex:1}
  .st-back{display:none}
}
@media print{.st-mobtabs{display:none!important}}
/* c166b: site-wide button rule overrides UA hidden and colors; restore */
[hidden]{display:none!important}
.st-mini,.st-opt,.st-kbtn,.st-addopt,.st-add{color:#222}
.st-mini-toggle{color:#3c4146}
.st-icon{width:auto;min-width:32px;padding:0 8px;font:600 12px/1 "Pebble Sans",Arial,sans-serif}
/* c166c: parent-review fixes */
.st-icon{color:#222}
.cv.onyx [data-section=skills] li.no-lv::before,.cv.bars [data-section=skills] li.no-lv::before{display:none}
.cv.onyx [data-section=skills] li.no-lv,.cv.bars [data-section=skills] li.no-lv{padding-bottom:0}
.cv.onyx .entry strong .sep,.cv.bars .entry strong .sep{display:none}
.cv.onyx .entry strong .entry-date,.cv.bars .entry strong .entry-date{display:block}
.st-pill{z-index:900}
.preview-label{font:600 13px/1.2 "Pebble Sans",Arial,sans-serif!important;margin:0 0 6px!important;color:#6b7280}
.st-stage{padding:12px}
.st-f input::placeholder,.st-ef::placeholder,.st-rte:empty::before{font-style:italic;color:#a9b0b8}
.st-card{box-shadow:0 1px 4px rgba(30,30,30,.08)}
.st-cardh{background:#faf8f3;border-radius:12px 12px 0 0}
/* c166d: pill anchors to viewport, not document bottom */
.st-pill{position:fixed}
/* c166e: sage Phase E — real rail column, no shared rows, pipe-free stacked entry heads */
.cv.sage.cv-railed .cv-body{display:grid!important;grid-template-columns:30% 1fr;column-gap:26px;align-items:start}
.cv.sage.cv-railed .cv-body::before{display:none!important}
.cv.sage.cv-railed .rail-col{grid-column:1;background:var(--cv-accent-tx,var(--cv-accent,#33463b));border-radius:6px;padding:18px 16px;min-height:100%;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.sage.cv-railed .main-col{grid-column:2}
.cv.sage.cv-railed [data-section]{grid-column:auto!important;grid-row:auto!important}
.cv.sage.cv-railed .rail-col [data-section]{margin-bottom:calc(18px * var(--cv-smm,1))}
.cv.sage.cv-railed .entry strong{display:block;font-size:calc(13px * var(--cv-fsm,1))}
.cv.sage.cv-railed .entry strong bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.sage.cv-railed .entry strong bdi:first-of-type{display:block;font-weight:700}
.cv.sage.cv-railed .entry strong .sep{display:none}
/* sidebar: same independent-column conversion as sage - main and rail flow separately,
   no avoidable gap from the taller adjacent column */
/* Independent body columns preserve the designed header/rail while avoiding grid-row stretch. */
.cv.blush.cv-railed .cv-body,.cv.willow.cv-railed .cv-body{align-items:start}
.cv.blush.cv-railed .cv-head,.cv.willow.cv-railed .cv-head{grid-column:1/-1;grid-row:1}
.cv.blush.cv-railed .rail-col,.cv.willow.cv-railed .rail-col{grid-column:1;grid-row:2;min-width:0;padding-inline:0;font-size:inherit}
.cv.blush.cv-railed .main-col,.cv.willow.cv-railed .main-col{grid-column:2;grid-row:2;min-width:0}
.cv.blush.cv-railed [data-section],.cv.willow.cv-railed [data-section]{grid-column:auto!important;grid-row:auto!important}
.cv.sidebar.cv-railed .cv-body{align-items:start}
.cv.sidebar.cv-railed .main-col{grid-column:1;min-width:0}
.cv.sidebar.cv-railed .rail-col{grid-column:2}
.cv.sidebar.cv-railed [data-section]{grid-column:auto!important;grid-row:auto!important}
.cv.sage.cv-railed .entry strong>span.entry-date{margin-inline-start:0;display:block;font-size:calc(12.5px * var(--cv-fsm,1));color:#5a6672;font-weight:600}
.cv.sage.cv-railed .rail-col .entry strong>span.entry-date{color:#a9c0b4}
.cv.sage.cv-railed .rail-col .entry-date{white-space:normal}
@media print{.cv.sage.cv-railed .cv-body{display:grid!important}.cv.sage.cv-railed .cv-body::before{display:none!important}}
/* c166f: sage rail headings — fill column, break at words only */
.cv.sage.cv-railed .rail-col h2{width:100%;overflow-wrap:break-word;hyphens:auto;letter-spacing:.12em}
/* c166g: sage/dual/soft Phase E — restore right-aligned dates, stretch rail bg, dual+soft rails */
.cv.sage.cv-railed .rail-col,.cv.dual.cv-railed .rail-col,.cv.soft.cv-railed .rail-col{align-self:stretch}
.cv.sage.cv-railed .entry strong{display:flex;flex-wrap:wrap;font-size:0;gap:2px 12px}
.cv.sage.cv-railed .entry strong bdi:first-of-type{display:inline}
.cv.sage.cv-railed .entry strong>span.entry-date{display:inline;margin-inline-start:auto;font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.sage.cv-railed .entry strong .sep{display:none}
.cv.dual.cv-railed .cv-body,.cv.soft.cv-railed .cv-body{display:grid!important;grid-template-columns:30% 1fr;column-gap:26px;align-items:start}
.cv.dual.cv-railed .cv-body::before,.cv.soft.cv-railed .cv-body::before{display:none!important}
.cv.dual.cv-railed .rail-col{grid-column:1;background:var(--cv-accent-tx,var(--cv-accent,#6b4452));border-radius:6px;padding:18px 16px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.soft.cv-railed .rail-col{grid-column:1;background:var(--cv-accent-tx,var(--cv-accent,#2f6b6b));border-radius:6px;padding:18px 16px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.dual.cv-railed .main-col,.cv.soft.cv-railed .main-col{grid-column:2}
.cv.arc.cv-railed .rail-col,.cv.column.cv-railed .rail-col,.cv.split.cv-railed .rail-col{grid-column:1}
.cv.arc.cv-railed .main-col,.cv.column.cv-railed .main-col,.cv.split.cv-railed .main-col{grid-column:2}
.cv.banner.cv-railed .main-col{grid-column:1}
.cv.banner.cv-railed .rail-col{grid-column:2}
.cv.dual.cv-railed [data-section],.cv.soft.cv-railed [data-section]{grid-column:auto!important;grid-row:auto!important}
.cv.dual.cv-railed .rail-col [data-section],.cv.soft.cv-railed .rail-col [data-section]{margin-bottom:calc(18px * var(--cv-smm,1))}
.cv.dual.cv-railed .rail-col h2,.cv.soft.cv-railed .rail-col h2{width:100%;overflow-wrap:break-word;hyphens:auto}
.cv.dual.cv-railed .entry strong .sep,.cv.soft.cv-railed .entry strong .sep{display:none}
@media print{.cv.dual.cv-railed .cv-body,.cv.soft.cv-railed .cv-body{display:grid!important}.cv.dual.cv-railed .cv-body::before,.cv.soft.cv-railed .cv-body::before{display:none!important}}
/* c166h: sage/dual/soft rail width balance (review: 30% cramped headings) */
.cv.sage.cv-railed .cv-body,.cv.dual.cv-railed .cv-body,.cv.soft.cv-railed .cv-body{grid-template-columns:34% 1fr}
.cv.sage.cv-railed .rail-col,.cv.dual.cv-railed .rail-col,.cv.soft.cv-railed .rail-col{padding:18px 14px}
/* c166i: onyx/bars/steel Phase E — real rail columns, full-bleed rail bg via negative margins */
.cv-headspan{order:-1;grid-column:1/-1}
.cv.onyx.cv-railed .cv-body,.cv.steel.cv-railed .cv-body{display:grid!important;grid-template-columns:34% 1fr;column-gap:26px;align-items:start}
.cv.bars.cv-railed .cv-body{display:grid!important;grid-template-columns:32% 1fr;column-gap:26px;align-items:start}
.cv.onyx.cv-railed .cv-body::before,.cv.bars.cv-railed .cv-body::before,.cv.steel.cv-railed .cv-body::before{display:none!important}
.cv.onyx.cv-railed .rail-col{grid-column:1;background:#33383e;margin-block:-38px;margin-inline-start:-38px;padding:100px 18px 44px 38px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.bars.cv-railed .rail-col{grid-column:1;background:var(--cv-accent-tx,var(--cv-accent,#2e4055));margin-block:-38px;margin-inline-start:-38px;padding:44px 22px 44px 38px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.steel.cv-railed .rail-col{grid-column:1;background:#39424e;margin-block:-38px;margin-inline-start:-38px;padding:44px 22px 44px 38px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.onyx.cv-railed .rail-col,.cv.bars.cv-railed .rail-col,.cv.steel.cv-railed .rail-col{align-self:stretch}
.cv.onyx.cv-railed .main-col,.cv.steel.cv-railed .main-col,.cv.bars.cv-railed .main-col{grid-column:2}
.cv.onyx.cv-railed [data-section],.cv.bars.cv-railed [data-section],.cv.steel.cv-railed [data-section]{grid-column:auto!important;grid-row:auto!important}
.cv.onyx.cv-railed .rail-col [data-section],.cv.bars.cv-railed .rail-col [data-section],.cv.steel.cv-railed .rail-col [data-section]{margin-bottom:calc(18px * var(--cv-smm,1))}
@media print{.cv.onyx.cv-railed .cv-body,.cv.bars.cv-railed .cv-body,.cv.steel.cv-railed .cv-body{display:grid!important}}
/* c166j: steel corrections — rail is summary+education, light slate 33% */
.cv.steel.cv-railed .cv-body{grid-template-columns:33% 1fr}
.cv.steel.cv-railed .rail-col{background:#7d8fa0}
/* c166k: bars/onyx/steel identity alignment after ground-truth capture review */
.cv.bars.cv-railed .cv-body{grid-template-columns:32% 1fr}
.cv.bars.cv-railed .cv-head{padding-inline-start:calc(32% + 25px)}
.cv.bars.cv-railed .rail-col h2{width:100%}
.cv.onyx.cv-railed .cv-body::after{display:none}
.cv.onyx.cv-railed .rail-col{position:relative;overflow:visible}
.cv.onyx.cv-railed .rail-col::before{content:"";position:absolute;top:0;inset-inline-start:0;width:0;height:0;border-style:solid;border-width:64px 64px 0 0;border-color:var(--cv-accent,#b58a4e) transparent transparent transparent;z-index:1}
.cv.onyx.cv-railed .rail-col>*,.cv.bars.cv-railed .rail-col>*,.cv.steel.cv-railed .rail-col>*{position:relative}
.cv.onyx.cv-railed .rail-col h2{width:100%;overflow-wrap:break-word;hyphens:auto}
.cv.steel.cv-railed .rail-col{padding-top:26px}
/* c166m: meter-template identity corrections (round-3 grids, steel order/pipes, bars head/dates, onyx corner) */
.cv.onyx.cv-railed .cv-body{grid-template-columns:36% 1fr}
.cv.bars.cv-railed .cv-body{grid-template-columns:34% 1fr}
.cv.onyx.cv-railed .rail-col::before{content:none}
.cv.onyx.cv-railed .rail-col .cv-corner{position:absolute;top:0;inset-inline-start:0;width:0;height:0;border-style:solid;border-width:64px 64px 0 0;border-color:var(--cv-accent,#b58a4e) transparent transparent transparent;z-index:2}
.cv.bars.cv-railed .cv-head{margin-inline:0;padding-inline:0;display:grid;grid-template-columns:34% 1fr;column-gap:26px}
.cv.bars.cv-railed .cv-head>.identity{grid-column:2;padding-inline-start:0}
.cv.bars.cv-railed .rail-col .entry strong>span{color:#b9c7d6}
.cv.steel.cv-railed .entry strong .sep{display:none}
.cv.steel.cv-railed .entry strong bdi:first-of-type{flex-basis:100%}
/* c166n: rightrail rail - date on own line, no leading pipe */
.cv.rightrail.cv-railed .rail-col .entry strong .entry-date{display:block;margin-inline-start:0}
.cv.rightrail.cv-railed .rail-col .entry-date .sep{display:none}
/* c166o: arc + banner identity - stacked pipeless entry heads */
.cv.arc .entry strong .sep,.cv.banner .entry strong .sep{display:none}
.cv.arc .entry strong .entry-date{display:block;margin-inline-start:0}
/* c166p: all flex-strong templates intend hidden separators (font-size:0 design) */
.cv.banner .entry strong .sep,.cv.bars .entry strong .sep,.cv.column .entry strong .sep,.cv.dual .entry strong .sep,.cv.frame .entry strong .sep,.cv.ledger .entry strong .sep,.cv.luxe .entry strong .sep,.cv.onyx .entry strong .sep,.cv.sage .entry strong .sep,.cv.soft .entry strong .sep,.cv.split .entry strong .sep,.cv.steel .entry strong .sep,.cv.summit .entry strong .sep{display:none}
/* c166q: blush intends pipeless stacked entry heads (font-size:0 design) */
.cv.blush [data-section] .entry strong .sep{display:none}
/* c166r: blush rail entries stack one part per line */
.cv.blush [data-section=projects] .entry strong bdi,.cv.blush [data-section=projects] .entry strong>.entry-date{display:block}

/* c166s: Type tool - user-chosen font overrides template typography */
.cv.cv-font-sans,.cv.cv-font-sans h1,.cv.cv-font-sans .cvname,.cv.cv-font-sans h2{font-family:"Pebble Sans","Noto Sans Arabic",Arial,sans-serif}
.cv.cv-font-serif,.cv.cv-font-serif h1,.cv.cv-font-serif .cvname,.cv.cv-font-serif h2{font-family:"Pebble Serif","Noto Sans Arabic",Georgia,serif}
.cv.cv-font-slab,.cv.cv-font-slab h1,.cv.cv-font-slab .cvname,.cv.cv-font-slab h2{font-family:"DejaVu Serif","Noto Sans Arabic",Georgia,serif}
/* c166t2: onyx rail h2 long-word wrap — keep flex marker alignment, allow the text item to break */
.cv.onyx.cv-railed .rail-col h2 .h2-label{min-width:0;hyphens:auto;overflow-wrap:break-word}

/* c166u: accent consumption for neutral templates - headings take accent only when set */
.cv.compact h2{color:var(--cv-accent-tx,var(--cv-accent,inherit));border-color:var(--cv-accent,#ccc)}
.cv.sidebar h2{color:var(--cv-accent-tx,var(--cv-accent,inherit));border-color:var(--cv-accent,#ccc)}
/* c166t3: damp rail h2 growth at large size so normal words fit; extreme words still wrap contained */
.cv.onyx.cv-railed .rail-col h2{font-size:calc(12.5px * min(var(--cv-fsm,1),1.06))}
.cv.sage.cv-railed .rail-col h2{font-size:calc(11px * min(var(--cv-fsm,1),1.06))}
.cv.dual.cv-railed .rail-col h2{font-size:calc(12px * min(var(--cv-fsm,1),1.06))}
.cv.soft.cv-railed .rail-col h2{font-size:calc(10.5px * min(var(--cv-fsm,1),1.06))}
/* c166t4: measured rail heading fit - tighter tracking so built-in labels wrap at word boundaries */
.cv.onyx.cv-railed .rail-col h2{letter-spacing:.05em}
.cv.sage.cv-railed .rail-col h2{letter-spacing:.06em;padding-inline:8px}
/* c166t5: open rail heading budgets so built-in labels wrap at word boundaries (measured: sage/dual/soft sections double-inset 14px; steel .22em tracking; rightrail undamped) */
.cv.sage.cv-railed .rail-col section,.cv.dual.cv-railed .rail-col section,.cv.soft.cv-railed .rail-col section{padding-inline:4px}
.cv.steel.cv-railed .rail-col h2{font-size:calc(12px * min(var(--cv-fsm,1),1.06));letter-spacing:.14em}
.cv.rightrail .rail-col h2{font-size:calc(13px * min(var(--cv-fsm,1),1.06));letter-spacing:.04em}
.cv.rightrail .rail-col{padding-inline:10px}
/* c166t6: narrow-column heading fit - damp + tighter tracking so built-in labels wrap at word boundaries */
.cv.arc [data-section=education] h2,.cv.arc [data-section=skills] h2,.cv.arc [data-section=projects] h2,.cv.banner [data-section=skills] h2,.cv.banner [data-section=projects] h2,.cv.column [data-section=skills] h2,.cv.column [data-section=projects] h2,.cv.split [data-section=skills] h2,.cv.split [data-section=projects] h2{font-size:calc(11.5px * min(var(--cv-fsm,1),1.06));letter-spacing:.035em}
.cv.arc h2,.cv.banner h2,.cv.split h2{font-size:calc(12.5px * min(var(--cv-fsm,1),1.06));letter-spacing:.04em}
.cv.column h2{font-size:calc(13px * min(var(--cv-fsm,1),1.06))}
.cv.blush h2{font-size:calc(11.5px * min(var(--cv-fsm,1),1.06));letter-spacing:.08em}
.cv.willow h2{font-size:calc(12px * min(var(--cv-fsm,1),1.06));letter-spacing:.12em}
/* c174a: slab (DejaVu Serif) runs wider than the template fonts - damp the affected heading rules per template (measured k, slab-l worst case) so built-in section labels wrap BETWEEN words instead of mid-word */
.cv.cv-font-slab.arc [data-section=education] h2,.cv.cv-font-slab.arc [data-section=skills] h2,.cv.cv-font-slab.arc [data-section=projects] h2{font-size:calc(11.5px * min(var(--cv-fsm,1),1.06) * .88)}
.cv.cv-font-slab.banner [data-section=skills] h2,.cv.cv-font-slab.banner [data-section=projects] h2{font-size:calc(11.5px * min(var(--cv-fsm,1),1.06) * .88)}
.cv.cv-font-slab.split [data-section=skills] h2,.cv.cv-font-slab.split [data-section=projects] h2{font-size:calc(11.5px * min(var(--cv-fsm,1),1.06) * .88)}
.cv.cv-font-slab.blush [data-section=education] h2,.cv.cv-font-slab.blush [data-section=skills] h2,.cv.cv-font-slab.blush [data-section=projects] h2{font-size:calc(11.5px * min(var(--cv-fsm,1),1.06) * .80)}
.cv.cv-font-slab.compactpro h2{font-size:calc(12px * var(--cv-fsm,1) * .91)}
.cv.cv-font-slab.dual.cv-railed .rail-col h2{font-size:calc(12px * min(var(--cv-fsm,1),1.06) * .89)}
.cv.cv-font-slab.onyx.cv-railed .rail-col h2{font-size:calc(12.5px * min(var(--cv-fsm,1),1.06) * .84)}
.cv.cv-font-slab.sage.cv-railed .rail-col h2{font-size:calc(11px * min(var(--cv-fsm,1),1.06) * .77)}
.cv.cv-font-slab.willow h2{font-size:calc(12px * min(var(--cv-fsm,1),1.06) * .96)}
/* c174b: slab in the narrow 30% side columns of arc/banner/split - bring side-section body text to rail metrics so common words (e.g. "communication") fit without mid-word breaks */
.cv.cv-font-slab.arc [data-section=education],.cv.cv-font-slab.arc [data-section=skills],.cv.cv-font-slab.arc [data-section=projects],
.cv.cv-font-slab.banner [data-section=skills],.cv.cv-font-slab.banner [data-section=projects],
.cv.cv-font-slab.split [data-section=skills],.cv.cv-font-slab.split [data-section=projects]{font-size:calc(10.5px * min(var(--cv-fsm,1),1.06))}

/* Long date labels reserve their true width instead of spilling into the role. */
.cv.dual .entry strong>.entry-date,.cv.soft .entry strong>.entry-date,.cv.frame .entry strong>.entry-date,.cv.ledger .entry strong>.entry-date{flex:0 0 auto;min-width:108px;max-width:100%;white-space:normal}
.cv.dual .rail-col .entry strong>.entry-date,.cv.soft .rail-col .entry strong>.entry-date{min-width:0}

/* Accessible announcements remain available without a duplicate visible footer. */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}

/* Studio keeps its approved paper-light editing surfaces in either site theme. */
body.studio{color:#252a30;color-scheme:light}
body.studio .st-cardh,body.studio .st-rte,body.studio .st-pop,body.studio .st-menu{color:#252a30}
body.studio .st-xf{flex-direction:row}
/* Mobile toolbar scrolls horizontally; its popover must not share that clip. */
@media(max-width:900px){.st-pop{position:fixed;bottom:calc(113px + env(safe-area-inset-bottom));inset-inline-start:4vw;max-width:92vw;max-height:calc(100dvh - 200px);z-index:950}}
body.studio .st-xf input[type=checkbox]{width:auto;flex:0 0 auto;padding:0}

/* Studio dark theme: editing surfaces stay paper-light, so every control must too. */
html[data-theme=dark] body.studio #app input:not([type=color]):not([type=file]):not(.st-docname),html[data-theme=dark] body.studio #app select,html[data-theme=dark] body.studio #app textarea{background-color:#fff!important;color:#252a30!important;border-color:#d6cfbf!important}
html[data-theme=dark] body.studio #app input::placeholder,html[data-theme=dark] body.studio #app textarea::placeholder{color:#8a8f96!important}
html[data-theme=dark] body.studio #app input[type=file]{background:none!important;color:#252a30!important}
html[data-theme=dark] body.studio #sample-badge{background:#f8f6f1!important;color:#4a4f56!important;border-color:#cfc8b8!important}
/* A-fidelity pass (local review build) */
body.studio{background:#dfe6df}
.st-top{gap:10px;padding:10px 18px;flex-wrap:nowrap;background:#fff;border-bottom:1px solid #e6e2d8}
.st-back{display:inline-flex;gap:4px;align-items:center;color:#3c4146;font-weight:500;padding:6px 8px;border-radius:8px}
.st-back span{font-size:20px;line-height:1}
.st-logo{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:#1d2a26;font:700 19px/1 "Pebble Serif",Georgia,serif;margin-inline:6px 14px;white-space:nowrap}
.st-logo img{display:block;border-radius:6px}
.st-namewrap{display:inline-flex;align-items:center;gap:2px;flex:0 1 auto}
.st-docname{flex:0 1 190px;min-width:90px;font-weight:600;color:#2a2f33;padding:6px 4px}
.st-pen{color:#8a9096;font-size:14px}
.st-saved{display:inline-flex;align-items:center;gap:6px;color:#5d6a64;font:13px/1 Arial,sans-serif;margin-inline-start:10px;white-space:nowrap}
.st-dot{width:8px;height:8px;border-radius:50%;background:#c9a24b;display:inline-block}
.st-saved.is-on .st-dot{background:#2f9e6e}
.st-icon{border:0;background:transparent;color:#4b5258}
.st-lang{margin-inline-start:auto}
.st-lang summary{display:inline-flex;align-items:center;gap:7px;border:1px solid #dcd8cf;border-radius:10px;padding:8px 12px;font:500 14px/1 Arial,sans-serif}
.st-chev{font-size:14px;margin-top:-4px}
.st-kebab summary{border:0;font-size:20px;padding:4px 10px;background:transparent}
.st-download{margin-inline-start:0;display:inline-flex;align-items:center;gap:8px;border-radius:12px;padding:11px 20px}
.st-rail{width:420px;background:#f3f5f1;padding:16px;gap:14px;border-inline-end:1px solid #dde3da}
.st-card{border:1px solid #e3e6df;border-radius:16px;background:#fff;box-shadow:0 1px 3px rgba(30,40,30,.06)}
.st-cardh{background:#fff;border-radius:16px 16px 0 0}
.st-cardh h3,.st-cardh .st-ctitle,.st-cardh span.st-ct{font-family:"Pebble Serif",Georgia,serif;font-weight:700;font-size:19px;color:#1f2723;letter-spacing:0}
.st-cardb{padding:14px 16px 16px}
.st-namepair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.st-card[data-personal] .st-cardb{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.st-card[data-personal] .st-cardb>*{grid-column:1/-1}
.st-card[data-personal] .st-cardb>.st-namepair{display:contents}
.st-card[data-personal] .st-cardb>.st-namepair>.st-f,.st-card[data-personal] .st-cardb>label.st-f:not(.st-xf){grid-column:auto}
.st-f{display:flex;flex-direction:column;gap:6px;font:600 13px/1.2 Arial,sans-serif;color:#2f3a35}
.st-f input[type=text],.st-f input:not([type]),.st-f select{border:1px solid #dcdcd4;border-radius:10px;padding:11px 12px;font:15px Arial,sans-serif;background:#fff}
.st-f input:focus{outline:2px solid #286b5b33;border-color:#286b5b}
.st-headline{display:grid;grid-template-columns:1fr auto;align-items:end;gap:12px}
.st-mini-toggle{font:500 13px Arial,sans-serif;padding-bottom:12px}
.photo-ctl .st-ph-lab{display:none}
.photo-ctl .st-ph-ctl{display:flex;align-items:center;gap:12px}
#photo-add{width:84px;height:84px;border-radius:50%;border:1.5px dashed #9fb3a8;background:#f7faf7;color:#286b5b;font:600 12px/1.2 Arial,sans-serif;text-align:center;padding:10px;cursor:pointer}
.st-xfields{display:flex;flex-wrap:wrap;gap:8px}
.st-xf{flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px;cursor:pointer;border:1px solid #cfd8d1;border-radius:999px;padding:7px 14px;background:#fff;font:500 13px Arial,sans-serif;color:#286b5b}
.st-xf::before{content:"+";font-weight:700}
.st-xf .st-chk{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.st-xf:has(.st-chk:checked){flex:1 1 100%;border-radius:12px;background:#f7faf7}
.st-xf:has(.st-chk:checked)::before{content:"\2212"}
.st-xf input[data-v]{flex:1 1 100%}
.st-stage{padding:22px 22px 90px;background:#dfe6df}
.st-pill{background:#fff;color:#2a2f33;box-shadow:0 8px 28px rgba(30,45,35,.18);border:1px solid #e3e6df;padding:6px 10px;gap:4px}
.st-pbtn{color:#2f3a35;font-weight:500;font-family:Arial,sans-serif;padding:9px 14px}
.st-pbtn:hover{background:#eef2ee}
.st-pop{background:#fff;color:#2a2f33;border:1px solid #e3e6df}
.st-tplgrid{grid-template-columns:repeat(3,1fr);gap:12px;min-width:min(560px,84vw)}
.st-tpl{border-radius:12px;padding:6px}
.st-tpl img{aspect-ratio:3/4;box-shadow:0 1px 4px rgba(0,0,0,.12)}
.st-tpl span{font:600 12px/1.2 Arial,sans-serif}
.st-zoom{position:fixed;inset-inline-end:22px;bottom:18px;display:flex;align-items:center;gap:2px;background:#fff;border:1px solid #e3e6df;border-radius:12px;padding:4px;box-shadow:0 4px 14px rgba(30,45,35,.12);font:600 13px Arial,sans-serif;color:#2f3a35;z-index:850}
.st-zoom button{border:0;background:transparent;width:30px;height:30px;border-radius:8px;font-size:18px;cursor:pointer;color:#2f3a35}
.st-zoom button:hover{background:#eef2ee}
.st-zoom span{min-width:46px;text-align:center}
.cvpeditor table.psheet{border:0;border-radius:2px;box-shadow:0 10px 36px rgba(30,45,35,.22)}
.preview-label{display:none}
@media screen{.psheet .cv [data-section]{position:relative}
.psheet .cv [data-section].st-selhover:hover::before,.psheet .cv [data-section][data-h]:hover::before{content:attr(data-h) "  \22EE";position:absolute;inset-inline-start:-8px;top:-10px;background:#2f9e6e;color:#fff;font:600 10px/1 Arial,sans-serif;padding:4px 7px;border-radius:5px;z-index:3;letter-spacing:0;text-transform:none;white-space:nowrap}
.psheet .cv [data-section]:hover{box-shadow:0 0 0 1.5px #2f9e6e!important;border-radius:2px}}
@media (max-width:900px){
.st-top{flex-wrap:wrap;gap:6px;padding:8px 12px}.st-logo{display:none}.st-lang{margin-inline-start:0}
.st-rail{padding:12px}.st-zoom{bottom:70px}.st-pill{bottom:62px}
.st-card[data-personal] .st-cardb{grid-template-columns:1fr}.st-namepair{grid-template-columns:1fr 1fr}
}
body.studio .st-main{max-width:none;margin:0;padding:0;width:100%}
.st-icon{font-size:18px}
.st-top{align-items:center}
.st-lang,.st-kebab,.st-download{align-self:center}
.st-xf{width:auto!important;flex:0 0 auto;margin:0}
.st-xf:has(.st-chk:checked){width:100%!important;flex:1 1 100%}
.st-f{margin:0}
.st-card[data-personal] .st-cardb{row-gap:14px}
@media screen{.cvpeditor table.psheet,table.psheet{width:fit-content!important;margin-inline:auto!important}}
.st-xfields{flex-direction:row!important}
.st-top>*{margin-top:0!important;margin-bottom:0!important}
.st-top button,.st-top summary{margin:0}
@media screen{#preview{margin-inline:0!important}}
.st-pop{max-width:min(780px,92vw);padding:16px}
.st-tplgrid{grid-template-columns:repeat(4,minmax(0,1fr));min-width:min(720px,84vw)}
.st-tpl{min-width:0}
.st-tpl img{max-width:100%}
.st-add-custom,.st-cfadd{border-radius:999px}
.st-rail,.st-card,.st-cardb{min-width:0}
.st-card[data-personal] .st-cardb{grid-template-columns:repeat(2,minmax(0,1fr))}
.st-namepair{grid-template-columns:repeat(2,minmax(0,1fr))}
.st-f input[type=text],.st-f input:not([type]){min-width:0;width:100%}
@media (max-width:900px){
.st-card[data-personal] .st-cardb{grid-template-columns:repeat(2,minmax(0,1fr))}
.st-top{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:6px 8px;padding:8px 12px}
.st-back{display:none}
.st-namewrap{grid-column:1/3}
.st-saved{grid-column:3/5;justify-self:end;margin:0}
.st-lang{grid-column:1/2;margin:0}
.st-undo,#a-undo,#a-redo{display:none}
.st-kebab{grid-column:3}
.st-download{grid-column:4;padding:10px 12px}
.st-lang summary span:nth-child(2){max-width:90px}
}
@media (max-width:900px){.st-rail{width:100%;flex:1 1 auto}.st-stage{padding:10px 10px 130px}.st-zoom{display:none}}
@media (min-width:901px){.st-rail{width:380px}}
@media screen{.psheet .cv [data-section][data-h]:hover::before{background:#2a6b52}}

/* ---- pass 2: compact A proportions ---- */
.st-rail{gap:12px;padding:14px}
.st-cardh{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:0}
.st-cardh h3{margin:0;flex:1;font-size:17px}
.st-grip{color:#b4bbb5;cursor:grab;font-size:15px;letter-spacing:-2px}
.st-grip-static{cursor:default}
.st-cardh-ctl{display:flex;gap:2px}
.st-collapse,.st-del{border:0!important;background:transparent!important;color:#5a6a62;width:28px;height:28px;padding:0;font-size:14px;border-radius:8px;cursor:pointer}
.st-collapse:hover,.st-del:hover{background:#eef2ee!important}
.st-cardb{padding:2px 14px 14px}
.st-cardb.st-collapsed{display:none}
.st-card[data-personal] .st-cardb{gap:9px 10px;row-gap:9px}
.st-f{gap:4px;font:600 12px/1.2 Arial,sans-serif}
.st-f input[type=text],.st-f input:not([type]),.st-f select{padding:8px 10px;font-size:13.5px;border-radius:8px}
.photo-ctl{margin:0}
.photo-ctl .st-hint{display:none}
.photo-ctl .st-ph-ctl{display:flex;align-items:center;gap:12px}
#photo-add{width:54px;height:54px;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1.5px dashed #9fb3a8;background:#f4f8f4;color:#286b5b}
.st-ph-txt{font:600 13px Arial,sans-serif;color:#2a6b52}
.st-ph-thumb{width:54px;height:54px;border-radius:50%;object-fit:cover}
.st-headline{grid-template-columns:1fr;gap:6px}
.st-headline .st-mini-toggle{order:2;display:flex;align-items:center;gap:8px;padding:0;font:500 12.5px Arial,sans-serif;color:#2f3a35}
.st-mini-toggle input[type=checkbox]{appearance:none;-webkit-appearance:none;width:34px;height:20px;border-radius:999px;background:#c8d0ca;position:relative;cursor:pointer;margin:0;flex:0 0 auto;transition:background .15s}
.st-mini-toggle input[type=checkbox]::after{content:"";position:absolute;top:2px;inset-inline-start:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:inset-inline-start .15s}
.st-mini-toggle input[type=checkbox]:checked{background:#2f9e6e}
.st-mini-toggle input[type=checkbox]:checked::after{inset-inline-start:16px}
.st-xfields{gap:6px;border-top:0;padding-top:2px}
.st-xf{padding:5px 11px;font-size:12.5px;gap:5px}
.st-cfields{margin-top:6px}
.st-cfields>button,.st-cfields .st-add,.st-cfields .st-mini{border-radius:999px;border:1px solid #cfd8d1;background:#fff;color:#286b5b;padding:5px 11px;font:500 12.5px Arial,sans-serif;width:auto}
.st-sec .st-cardb{padding-bottom:14px}
/* white icon pill */
.st-pbtn{display:inline-flex;align-items:center;gap:7px;padding:9px 13px}
.st-pbtn svg{flex:0 0 auto;color:#4a5a52}
/* compact single-strip template popover (all templates stay reachable by scrolling) */
.st-pop{max-width:min(600px,92vw);padding:12px 14px 10px;border-radius:14px}
.st-pophead{margin:0 0 8px;font:600 14px "Pebble Serif",Georgia,serif;color:#2a2f33}
.st-tplgrid{display:flex!important;grid-template-columns:none;gap:10px;min-width:0;width:min(560px,80vw);overflow-x:auto;overflow-y:hidden;padding:4px 2px 8px;scroll-snap-type:x proximity;scrollbar-width:thin}
.st-tpl{flex:0 0 78px;min-width:78px;scroll-snap-align:start;padding:3px;border-radius:8px;gap:4px}
.st-tpl img{aspect-ratio:3/4;border-radius:4px}
.st-tpl span{font:600 11px/1.2 Arial,sans-serif;text-transform:capitalize}
.st-tpl.on{outline:2px solid #2a6b52;border-color:#2a6b52}
.st-pop{max-height:none;overflow:visible}
@media screen{.psheet .cv [data-section][data-h]:hover::before{background:#245c46;padding:5px 8px}}
.st-secmenu{position:relative}
.st-secmenu summary{list-style:none;cursor:pointer;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;color:#5a6a62;font-size:16px;border:0!important;background:transparent!important;padding:0}
.st-secmenu summary::-webkit-details-marker{display:none}
.st-secmenu summary:hover{background:#eef2ee!important}
.st-secmenu .st-menu{min-width:160px}
.st-headline{gap:8px;align-items:start}
.st-headline>.st-f{margin:0}
.st-card[data-personal] .st-cardb>.st-headline{row-gap:8px}
.st-card[data-personal] .st-cardb>.st-headline{display:flex!important;flex-direction:column;gap:8px;align-items:stretch}
.st-headline .st-f{flex:none}
.st-cardh-ctl{align-items:center}
.st-collapse{display:inline-flex;align-items:center;justify-content:center}
.st-sec button.st-mini.st-add{width:100%;border:1.5px dashed #a9bfb2;background:#fbfdfb;color:#286b5b;border-radius:10px;padding:10px;font:600 13.5px Arial,sans-serif;cursor:pointer;margin-top:4px}
.st-sec button.st-mini.st-add::before{content:"+ "}
.st-sec button.st-mini.st-add:hover{background:#eef5f0}
.st-cardh-ctl>*{margin:0!important;align-self:center}
.st-cardh h3{line-height:1.2}

.st-chipbtn{align-self:flex-start;width:auto!important;border-radius:999px!important;border:1px solid #cfd8d1!important;background:#fff!important;color:#286b5b!important;padding:5px 11px!important;font:500 12.5px Arial,sans-serif!important}
.st-chipbtn::before{content:"+ ";font-weight:700}
.st-cfields{margin-top:0}
html[data-theme=dark] body.studio #app .st-mini-toggle input[type=checkbox]{background-color:#c8d0ca!important}
html[data-theme=dark] body.studio #app .st-mini-toggle input[type=checkbox]:checked{background-color:#2f9e6e!important}
html[data-theme=dark] body.studio #app .st-mini-toggle input[type=checkbox]::after{background:#fff}
.st-card[data-personal] .st-cardb>.st-headline{gap:0!important}
.st-headline>.st-f{padding:0!important;min-height:0!important}
.st-headline .st-mini-toggle{margin-top:8px!important}
/* ---- pass 3 ---- */
@media (min-width:901px){.st-rail{width:28vw;min-width:340px;max-width:460px}}
.st-top{gap:8px}
.st-logo{margin-inline:2px 8px}
.st-namewrap{gap:4px}
.st-docname{flex:0 0 auto;min-width:0;padding:6px 2px}
.st-saved{margin-inline-start:4px}
.st-lang{margin-inline-start:0}
.st-pushr{margin-inline-start:auto}
.st-xf[hidden],.st-xmore[hidden]{display:none!important}
.st-xmore{border:1px solid transparent;background:transparent;color:#5a6a62;border-radius:999px;padding:5px 9px;font:600 12.5px Arial,sans-serif;cursor:pointer}
.st-xmore::after{content:" ⌄"}
.st-xmore:hover{background:#eef2ee}
.photo-ctl .st-ph-txt{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.photo-ctl .st-hint{display:block!important;margin:0;font:11px/1.35 Arial,sans-serif;color:#667069;font-weight:400}
/* selected section */
@media screen{.psheet .cv [data-section].is-sel::before{content:attr(data-h) "  \22EE";position:absolute;inset-inline-start:-8px;top:-10px;background:#245c46;color:#fff;font:600 10px/1 Arial,sans-serif;padding:5px 8px;border-radius:5px;z-index:3;letter-spacing:0;text-transform:none;white-space:nowrap}
.psheet .cv [data-section].is-sel{box-shadow:0 0 0 1.5px #2f9e6e!important;border-radius:2px}}
.st-card.is-sel{border-color:#2f9e6e;box-shadow:0 0 0 1.5px #2f9e6e33,0 1px 3px rgba(30,40,30,.06)}
@media (max-width:900px){
  .st-rail{padding-bottom:150px}
  .st-pill{max-width:calc(100vw - 16px);padding:5px 6px;gap:0;overflow-x:auto}
  .st-pbtn{padding:10px 12px}
  .st-pbtn span{display:none}
  .st-pbtn svg{width:19px;height:19px}
  .st-pop{max-width:calc(100vw - 16px)}
  .st-tplgrid{width:calc(100vw - 48px)}
}
.st-zin{display:flex;align-items:center;gap:2px}
/* ---- pass 4 ---- */
.st-top .st-pushr{margin-inline-start:auto!important}
@media screen{
.psheet .cv [data-section].is-sel,.psheet .cv [data-section]:hover{box-shadow:none!important}
.psheet .cv [data-section].is-sel::before,.psheet .cv [data-section][data-h]:hover::before{top:-12px;inset-inline-start:-14px;background:#245c46;border-radius:6px;padding:6px 9px;font-size:11px;box-shadow:0 2px 6px rgba(0,0,0,.18)}
}
.st-pill{bottom:calc(14px + var(--cvp-consent-height,0px))}
.st-zoom{bottom:calc(18px + var(--cvp-consent-height,0px))}
@media (max-width:900px){
  .st-pill{bottom:calc(62px + var(--cvp-consent-height,0px))}
  .st-mobtabs{bottom:var(--cvp-consent-height,0px)}
  .st-rail{padding-bottom:calc(150px + var(--cvp-consent-height,0px))}
}
@media screen{.psheet .cv [data-section].is-sel::before,.psheet .cv [data-section][data-h]:hover::before{top:-27px;inset-inline-start:-6px}}
/* Arabic UI: use the loaded Arabic web font first so letters join (Arial has no Arabic and the fallback can render disconnected forms) */
html[lang=ar] body.studio #app :not(h3):not(svg):not(svg *):not(.st-grip),html[lang=ar] #cvp-consent,html[lang=ar] #cvp-consent *,html[lang=ar] body.studio .st-pop *{font-family:"Noto Sans Arabic","Segoe UI",Tahoma,Arial,sans-serif;letter-spacing:0}
html[lang=ar] body.studio #app .st-chipbtn{font-family:"Noto Sans Arabic","Segoe UI",Tahoma,Arial,sans-serif!important}
html[lang=ar] body.studio #app .st-chipbtn{line-height:1.3!important}
/* rail date rows: start and end each on one line (Month + Year), dash between */
.st-card .st-dates{flex-direction:column;align-items:stretch;gap:4px;flex-wrap:nowrap}
.st-card .st-dates .st-my{display:flex;flex-wrap:nowrap;gap:8px;width:100%}
.st-card .st-dates .st-mo,.st-card .st-dates .st-yr,.st-card .st-dates .bb-custom-select-container{max-width:none;min-width:0;width:auto}
.st-card .st-dates .st-mo{flex:3 1 0}.st-card .st-dates .st-yr{flex:2 1 0}
.st-card .st-dates .st-dsep{text-align:center;line-height:1}
/* belt and braces: no selection handle in snapshot/export clones or print */
#print-snapshot-cv [data-section]::before,#pdf-export-cv [data-section]::before,.cv-snapshot-clone [data-section]::before{content:none!important;display:none!important}
@media print{.psheet .cv [data-section]::before{content:none!important;display:none!important}}

/* background patterns: CSS gradients (the PDF snapshot rasterizes these reliably; SVG data URIs exported as black) */
.st-bgs{display:flex;gap:8px;flex-wrap:wrap;padding:4px 0}.st-bg{width:44px;height:56px;border:1px solid #cfd6d2;border-radius:6px;background-color:#fff;background-repeat:repeat;cursor:pointer;padding:0}.st-bg.on{outline:2px solid #245c46;outline-offset:1px}.st-bg-none{background-image:none}
.st-custom input[type=color]{width:44px;height:30px;min-width:44px;padding:2px;border:1px solid #cfd6d2;border-radius:6px;background:#fff;flex:none;cursor:pointer;-webkit-appearance:auto;appearance:auto}

.st-grip{touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;padding:4px 2px}.st-grip:focus-visible{outline:2px solid #286b5b;border-radius:4px}
.st-dragging{opacity:.55;cursor:grabbing}.st-drop-before{box-shadow:0 -3px 0 #286b5b}.st-drop-after{box-shadow:0 3px 0 #286b5b}
/* selected-section name tab in the preview removed: selection keeps a plain outline, never a label */
.psheet .cv [data-section]::before,.psheet .cv [data-section].is-sel::before,.psheet .cv [data-section][data-h]:hover::before,.psheet .cv [data-section].st-selhover:hover::before{content:none!important;display:none!important}

/* settings menu polish */
.st-kebab .st-menu{min-width:272px;padding:14px;gap:10px;font:14px/1.35 Arial,sans-serif;color:#252a30}
.st-kebab .st-kitem{display:flex;flex-direction:column;align-items:stretch;gap:6px;font:600 12.5px/1.2 Arial,sans-serif;color:#4a5159;text-align:start}
.st-kebab .st-kitem select{width:100%;height:38px;padding:0 10px;font:14px Arial,sans-serif;color:#252a30;background:#fff;border:1px solid #cfd6d2;border-radius:8px}
.st-kebab .st-kitem.st-remember{flex-direction:row;align-items:center;gap:10px;padding:8px 2px;font:500 14px/1.35 Arial,sans-serif;color:#252a30;border-top:1px solid #ecefec;border-bottom:1px solid #ecefec;margin:2px 0}
.st-kebab .st-kitem.st-remember input{flex:none;width:18px;height:18px;margin:0;accent-color:#286b5b}
.st-kebab .st-kitem.st-remember span{flex:1;white-space:normal;text-align:start}
.st-kebab .st-kbtn{width:100%;height:38px;text-align:center;font:600 14px Arial,sans-serif;border-radius:8px}
/* colour popover: equal round swatches, even spacing, refined custom picker */
.st-swatches{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.st-swatch{flex:none;box-sizing:border-box;width:30px;height:30px;min-width:30px;padding:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #c8c2b4}
.st-swatch.on{box-shadow:0 0 0 2px #286b5b}
.st-custom{gap:10px;margin-top:10px;font:600 12.5px Arial,sans-serif;color:#4a5159}
.st-custom input[type=color]{width:30px;height:30px;min-width:30px;padding:0;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #c8c2b4;background:conic-gradient(#d33,#db3,#3b5,#3bd,#63d,#d3a,#d33);overflow:hidden;-webkit-appearance:none;appearance:none}
.st-custom input[type=color]::-webkit-color-swatch-wrapper{padding:0}.st-custom input[type=color]::-webkit-color-swatch{border:0;border-radius:50%}
/* larger template previews */
#st-pop .st-tplgrid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;width:min(820px,calc(100vw - 48px));min-width:0;max-height:min(62vh,560px);overflow-y:auto;overflow-x:hidden;padding:6px 6px 10px;scroll-snap-type:none}
#st-pop .st-tpl{flex:none;min-width:0;padding:6px;border-radius:12px;gap:6px;border:1px solid #e2ddd2}
#st-pop .st-tpl img{width:100%;aspect-ratio:3/4;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.15)}
#st-pop .st-tpl span{font:600 13px/1.2 Arial,sans-serif;text-transform:capitalize;color:#252a30}
#st-pop .st-tpl.on{border-color:#286b5b;outline:3px solid #286b5b}
@media(max-width:900px){#st-pop .st-tplgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:560px){#st-pop .st-tplgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-height:58vh}}
/* r12b */
.st-kebab .st-menu label.st-kitem:not(.st-remember){display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:6px!important;padding:0!important;margin:0!important;height:auto!important;width:100%!important}
.st-kebab .st-menu label.st-kitem select{width:100%!important;min-width:0!important;max-width:none!important;height:38px!important;margin:0!important}
.st-kebab .st-menu{padding:16px!important;gap:12px!important}
#st-pop:has(.st-tplgrid){max-width:none!important;width:min(820px,calc(100vw - 48px))}
#st-pop .st-tplgrid{width:100%!important}
#st-pop:has(.st-tplgrid){max-height:none!important;overflow:visible!important}
#st-pop .st-tplgrid{max-height:min(56vh,520px)!important}

/* r13 section menus */
.st-secmenu .st-menu{min-width:0;width:max-content;max-width:min(240px,80vw);padding:6px;gap:2px}
.st-secmenu .st-menu *{white-space:nowrap;text-align:start}
.st-secmenu .st-menu button,.st-secmenu .st-menu a{display:block;width:100%;padding:8px 12px;border-radius:6px;font:600 13px/1.3 Arial,sans-serif;color:#252a30;background:transparent;border:0;cursor:pointer}
.st-secmenu .st-menu button:hover,.st-secmenu .st-menu a:hover{background:#f0ede6}
.st-kebab .st-menu{max-width:min(320px,92vw)}

.cv .contact bdi{white-space:nowrap}
#st-pop .st-tpl span{text-transform:none!important}
body.studio input[type=text]:not([data-k=email]):not([data-k=phone]):not([data-k=link]),body.studio textarea{unicode-bidi:plaintext}

.st-colhead{margin:14px 4px 4px;font:700 11.5px/1.2 Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#6b756f}

.st-colempty{height:44px;border:2px dashed #cfd6d2;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#9aa49e;margin:4px 0 8px;letter-spacing:0}
.st-drop-before,.st-drop-after{position:relative}

/* r22: extra bundled free fonts (OFL). Preview uses latin woff; PDF uses merged TTF with Arabic glyphs */
@font-face{font-family:"Lora";src:url("/pdf-export/w-lora-400-normal.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Lora";src:url("/pdf-export/w-lora-400-italic.woff") format("woff");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Lora";src:url("/pdf-export/w-lora-700-normal.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Lora";src:url("/pdf-export/w-lora-700-italic.woff") format("woff");font-weight:700;font-style:italic;font-display:swap}
.cv.cv-font-lora,.cv.cv-font-lora h1,.cv.cv-font-lora .cvname,.cv.cv-font-lora h2{font-family:"Lora","Noto Sans Arabic",serif}
.cv.cv-font-lora,.cv.cv-font-lora *{font-kerning:none;font-variant-ligatures:none}
@font-face{font-family:"Merriweather";src:url("/pdf-export/w-merriweather-400-normal.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Merriweather";src:url("/pdf-export/w-merriweather-400-italic.woff") format("woff");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Merriweather";src:url("/pdf-export/w-merriweather-700-normal.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Merriweather";src:url("/pdf-export/w-merriweather-700-italic.woff") format("woff");font-weight:700;font-style:italic;font-display:swap}
.cv.cv-font-merriweather,.cv.cv-font-merriweather h1,.cv.cv-font-merriweather .cvname,.cv.cv-font-merriweather h2{font-family:"Merriweather","Noto Sans Arabic",serif}
.cv.cv-font-merriweather,.cv.cv-font-merriweather *{font-kerning:none;font-variant-ligatures:none}
@font-face{font-family:"Playfair Display";src:url("/pdf-export/w-playfair-display-400-normal.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Playfair Display";src:url("/pdf-export/w-playfair-display-400-italic.woff") format("woff");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Playfair Display";src:url("/pdf-export/w-playfair-display-700-normal.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Playfair Display";src:url("/pdf-export/w-playfair-display-700-italic.woff") format("woff");font-weight:700;font-style:italic;font-display:swap}
.cv.cv-font-playfair-display,.cv.cv-font-playfair-display h1,.cv.cv-font-playfair-display .cvname,.cv.cv-font-playfair-display h2{font-family:"Playfair Display","Noto Sans Arabic",serif}
.cv.cv-font-playfair-display,.cv.cv-font-playfair-display *{font-kerning:none;font-variant-ligatures:none}
@font-face{font-family:"Roboto Slab";src:url("/pdf-export/w-roboto-slab-400-normal.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Roboto Slab";src:url("/pdf-export/w-roboto-slab-400-normal.woff") format("woff");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Roboto Slab";src:url("/pdf-export/w-roboto-slab-700-normal.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Roboto Slab";src:url("/pdf-export/w-roboto-slab-700-normal.woff") format("woff");font-weight:700;font-style:italic;font-display:swap}
.cv.cv-font-robotoslab,.cv.cv-font-robotoslab h1,.cv.cv-font-robotoslab .cvname,.cv.cv-font-robotoslab h2{font-family:"Roboto Slab","Noto Sans Arabic",serif}
.cv.cv-font-robotoslab,.cv.cv-font-robotoslab *{font-kerning:none;font-variant-ligatures:none}
@font-face{font-family:"Montserrat";src:url("/pdf-export/w-montserrat-400-normal.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Montserrat";src:url("/pdf-export/w-montserrat-400-italic.woff") format("woff");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Montserrat";src:url("/pdf-export/w-montserrat-700-normal.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Montserrat";src:url("/pdf-export/w-montserrat-700-italic.woff") format("woff");font-weight:700;font-style:italic;font-display:swap}
.cv.cv-font-montserrat,.cv.cv-font-montserrat h1,.cv.cv-font-montserrat .cvname,.cv.cv-font-montserrat h2{font-family:"Montserrat","Noto Sans Arabic",sans-serif}
.cv.cv-font-montserrat,.cv.cv-font-montserrat *{font-kerning:none;font-variant-ligatures:none}
@font-face{font-family:"Source Sans 3";src:url("/pdf-export/w-source-sans-3-400-normal.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Source Sans 3";src:url("/pdf-export/w-source-sans-3-400-italic.woff") format("woff");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Source Sans 3";src:url("/pdf-export/w-source-sans-3-700-normal.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Source Sans 3";src:url("/pdf-export/w-source-sans-3-700-italic.woff") format("woff");font-weight:700;font-style:italic;font-display:swap}
.cv.cv-font-source-sans-3,.cv.cv-font-source-sans-3 h1,.cv.cv-font-source-sans-3 .cvname,.cv.cv-font-source-sans-3 h2{font-family:"Source Sans 3","Noto Sans Arabic",sans-serif}
.cv.cv-font-source-sans-3,.cv.cv-font-source-sans-3 *{font-kerning:none;font-variant-ligatures:none}
@font-face{font-family:"Poppins";src:url("/pdf-export/w-poppins-400-normal.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("/pdf-export/w-poppins-400-italic.woff") format("woff");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Poppins";src:url("/pdf-export/w-poppins-700-normal.woff") format("woff");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("/pdf-export/w-poppins-700-italic.woff") format("woff");font-weight:700;font-style:italic;font-display:swap}
.cv.cv-font-poppins,.cv.cv-font-poppins h1,.cv.cv-font-poppins .cvname,.cv.cv-font-poppins h2{font-family:"Poppins","Noto Sans Arabic",sans-serif}
.cv.cv-font-poppins,.cv.cv-font-poppins *{font-kerning:none;font-variant-ligatures:none}

/* r24: independent template background (panel) colour with automatic foreground */
.cv.cv-panel-on:is(.modern,.slate,.creative,.band,.boxed,.duotone,.arc,.banner,.sage) .cv-head{background:var(--cv-panel)!important}
.cv.cv-panel-on:is(.modern,.slate,.creative,.band,.boxed,.duotone,.arc,.banner,.sage) .cv-head,.cv.cv-panel-on:is(.modern,.slate,.creative,.band,.boxed,.duotone,.arc,.banner,.sage) .cv-head *{color:var(--cv-panel-fg)!important}
.cv.cv-panel-on:is(.arc,.banner,.column,.split,.sage,.dual,.soft,.onyx,.bars,.steel,.blush,.rust) .cv-body::before{background:var(--cv-panel)!important}
.cv.cv-panel-on:is(.sage,.dual,.soft,.onyx,.bars,.steel,.leftrail,.rightrail) .rail-col{background:var(--cv-panel)!important}
.cv.cv-panel-on.card .cv-body{background:var(--cv-panel)!important}
.cv.cv-panel-on.card .cv-body,.cv.cv-panel-on.card .cv-body *{color:var(--cv-panel-fg)!important}
.cv.cv-panel-on:is(.sidebar,.summit) [data-section=skills]{background:var(--cv-panel)!important}
.cv.cv-panel-on:is(.sidebar,.summit) [data-section=skills],.cv.cv-panel-on:is(.sidebar,.summit) [data-section=skills] *{color:var(--cv-panel-fg)!important}

/* r26: sidebar side flip */
.cv.cv-flip.cv-railed.arc .cv-body{grid-template-columns:1fr 30%!important}
.cv.cv-flip.cv-railed.column .cv-body{grid-template-columns:1fr 30%!important}
.cv.cv-flip.cv-railed.split .cv-body{grid-template-columns:1fr 30%!important}
.cv.cv-flip.cv-railed.sage .cv-body{grid-template-columns:1fr 30%!important}
.cv.cv-flip.cv-railed.dual .cv-body{grid-template-columns:1fr 30%!important}
.cv.cv-flip.cv-railed.soft .cv-body{grid-template-columns:1fr 30%!important}
.cv.cv-flip.cv-railed.onyx .cv-body{grid-template-columns:1fr 36%!important}
.cv.cv-flip.cv-railed.steel .cv-body{grid-template-columns:1fr 38%!important}
.cv.cv-flip.cv-railed.leftrail .cv-body{grid-template-columns:1fr 38%!important}
.cv.cv-flip.cv-railed.banner .cv-body{grid-template-columns:30% 1fr!important}
.cv.cv-flip.cv-railed.rightrail .cv-body{grid-template-columns:32% 1fr!important}
.cv.cv-flip.cv-railed.arc .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.arc .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.column .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.column .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.split .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.split .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.sage .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.sage .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.dual .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.dual .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.soft .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.soft .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.onyx .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.onyx .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.steel .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.steel .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.leftrail .rail-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.leftrail .main-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.banner .rail-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.banner .main-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.rightrail .rail-col{grid-column:1!important;grid-row:1}
.cv.cv-flip.cv-railed.rightrail .main-col{grid-column:2!important;grid-row:1}
.cv.cv-flip.cv-railed.arc .cv-body::before{inset-inline-start:auto!important;inset-inline-end:0!important}
.cv.cv-flip.cv-railed.column .cv-body::before{inset-inline-start:auto!important;inset-inline-end:0!important}
.cv.cv-flip.cv-railed.split .cv-body::before{inset-inline-start:auto!important;inset-inline-end:0!important}
.cv.cv-flip.cv-railed.sage .cv-body::before{inset-inline-start:auto!important;inset-inline-end:0!important}
.cv.cv-flip.cv-railed.dual .cv-body::before{inset-inline-start:auto!important;inset-inline-end:0!important}
.cv.cv-flip.cv-railed.soft .cv-body::before{inset-inline-start:auto!important;inset-inline-end:0!important}
.cv.cv-flip.cv-railed.banner .cv-body::before{inset-inline-end:auto!important;inset-inline-start:0!important}
.cv.cv-flip.cv-railed.onyx .rail-col{margin-inline-start:0!important;margin-inline-end:-38px!important;padding:100px 38px 44px 18px!important}
.cv.cv-flip.cv-railed.steel .rail-col{margin-inline-start:0!important;margin-inline-end:-38px!important;padding:44px 38px 44px 22px!important}
.cv.cv-flip.cv-railed.onyx .cv-body::after{inset-inline-start:auto!important;inset-inline-end:-38px!important;transform:scaleX(-1)}
/* r27: steel rail name - legible size, wraps instead of shrinking, no letter-spacing (breaks Arabic joins) */
.cv.steel .cv-head p.cvname{font-size:calc(19px * var(--cv-fsm,1))!important;white-space:normal!important;overflow-wrap:anywhere;letter-spacing:0!important;line-height:1.25}

/* r28: subtle page background patterns (SVG tiles, exported in the PDF) */
.st-bg-dots{background-image:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2218%22%20height=%2218%22%20viewBox=%220%200%2018%2018%22%3E%3Ccircle%20cx=%229%22%20cy=%229%22%20r=%221.3%22%20fill=%22%236b7a74%22%20fill-opacity=%22.30%22/%3E%3C/svg%3E");background-size:13px 13px;background-repeat:repeat}
.st-bg-diagonal{background-image:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2214%22%20height=%2214%22%20viewBox=%220%200%2014%2014%22%3E%3Cpath%20d=%22M-2%202L2%20-2M0%2014L14%200M12%2016L16%2012%22%20stroke=%22%236b7a74%22%20stroke-opacity=%22.22%22%20stroke-width=%221%22%20fill=%22none%22/%3E%3C/svg%3E");background-size:11px 11px;background-repeat:repeat}
.st-bg-waves{background-image:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2248%22%20height=%2214%22%20viewBox=%220%200%2048%2014%22%3E%3Cpath%20d=%22M0%207Q12%200%2024%207T48%207%22%20stroke=%22%236b7a74%22%20stroke-opacity=%22.24%22%20stroke-width=%221.1%22%20fill=%22none%22/%3E%3C/svg%3E");background-size:28px 11px;background-repeat:repeat}
.st-bg-curves{background-image:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2270%22%20height=%2270%22%20viewBox=%220%200%2070%2070%22%3E%3Cpath%20d=%22M0%2070A70%2070%200%200%201%2070%200M0%2048A48%2048%200%200%201%2048%200M0%2026A26%2026%200%200%201%2026%200%22%20stroke=%22%236b7a74%22%20stroke-opacity=%22.20%22%20stroke-width=%221.1%22%20fill=%22none%22/%3E%3C/svg%3E");background-size:39px 39px;background-repeat:repeat}
.st-bg-geometric{background-image:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2244%22%20height=%2244%22%20viewBox=%220%200%2044%2044%22%3E%3Cpath%20d=%22M22%206L38%2034H6Z%22%20stroke=%22%236b7a74%22%20stroke-opacity=%22.22%22%20stroke-width=%221%22%20fill=%22none%22/%3E%3Crect%20x=%222%22%20y=%222%22%20width=%226%22%20height=%226%22%20fill=%22%236b7a74%22%20fill-opacity=%22.16%22/%3E%3C/svg%3E");background-size:26px 26px;background-repeat:repeat}

.cv .cv-bgsvg{position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;pointer-events:none;display:block}
.cv.cv-bg-on{position:relative;isolation:isolate}

/* r35: Arabic names never take letter-spacing (breaks joins) */
.cv .cvname.cv-name-ar{letter-spacing:0!important}
/* r42: panel text colour for every rail template (valid selector); Blush heading pills keep white text on their own dark pill */
.cv.cv-panel-on:is(.arc,.banner,.column,.split,.sage,.dual,.soft,.onyx,.bars,.steel,.blush,.willow,.leftrail,.rightrail,.rust) .rail-col,.cv.cv-panel-on:is(.arc,.banner,.column,.split,.sage,.dual,.soft,.onyx,.bars,.steel,.blush,.willow,.leftrail,.rightrail,.rust) .rail-col *{color:var(--cv-panel-fg)!important}
.cv.cv-panel-on.blush .rail-col h2,.cv.cv-panel-on.blush .rail-col h2 *{color:#fff!important}
/* r43: language menu stays inside the viewport on narrow screens (was clipped off the left/right edge) */
@media (max-width:700px){.st-lang .st-menu{inset-inline-start:0;inset-inline-end:auto;max-width:calc(100vw - 24px)}}
.st-menu a,.st-lang summary,.st-menu button,input,textarea{font-family:Arial,"Noto Sans Arabic","Pebble Sans",sans-serif}
.st-lang .st-menu a[href*="/ar/"]{font-family:"Noto Sans Arabic","Noto Naskh Arabic",Tahoma,Arial,sans-serif;font-size:15px;letter-spacing:0}
@media (max-width:700px){.st-kebab .st-menu{position:fixed;top:84px;inset-inline-start:12px;inset-inline-end:12px;width:auto;max-width:none;min-width:0}}
@media screen{.cv{min-height:auto;aspect-ratio:210/297}}

/* ===== rust: full-height sidebar (user-selected reference), dates left / details right ===== */
.cv.rust{display:flex;flex-direction:column}
.cv.rust .cv-body{flex:1;display:grid;grid-template-columns:32% 1fr;column-gap:28px;align-content:start;position:relative}
.cv.rust .cv-body::before{content:"";position:absolute;top:-38px;bottom:-38px;inset-inline-start:-38px;width:calc(32% + 50px);background:#963a2a;z-index:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.rust .rail-col{grid-column:1;grid-row:1;position:relative;z-index:1;min-width:0;padding:0;color:#fff;font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.rust .main-col{grid-column:2;grid-row:1;min-width:0;position:relative;z-index:1}
.cv.rust [data-section]{margin-bottom:calc(16px * var(--cv-smm,1))}
.cv.rust .cv-head{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0;margin:0 0 20px;gap:0}
.cv.rust .cv-head .identity{width:100%;flex:none}
.cv.rust .cv-head img{order:-1;width:118px;height:118px;border-radius:50%;border:0;object-fit:cover;margin:0 auto 16px;display:block}
.cv.rust .cvname{font-size:calc(21px * var(--cv-fsm,1));font-weight:600;color:#fff;margin:0;letter-spacing:0;text-align:center}
.cv.rust .cvname b{color:inherit}
.cv.rust .headline{font-size:calc(13px * var(--cv-fsm,1));color:#fff;opacity:.9;margin:4px 0 0;text-align:center}
.cv.rust h2{display:flex;align-items:center;gap:14px;font-size:calc(17px * var(--cv-fsm,1));font-weight:700;letter-spacing:0;text-transform:none;border:0;margin:0 0 10px;padding:0;color:#111}
.cv.rust h2::after{content:"";flex:1;height:1px;background:#e2e2e2}
.cv.rust .rail-col h2,.cv.rust .contact-box h2{color:#fff;font-weight:400}
.cv.rust .rail-col h2::after,.cv.rust .contact-box h2::after{background:currentColor;opacity:.5}
.cv.rust .contact-box{text-align:start;margin-top:22px;width:100%}
.cv.rust .contact-list{list-style:none;margin:0;padding:0}
.cv.rust .contact-list li{margin:0 0 8px;font-size:calc(12px * var(--cv-fsm,1));overflow-wrap:anywhere;line-height:1.4}
.cv.rust [data-section=skills] ul{list-style:none;margin:0;padding:0;column-count:1}
.cv.rust [data-section=skills] li{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 9px;font-size:calc(12px * var(--cv-fsm,1));break-inside:avoid}
.cv.rust .cv-dots{display:inline-flex;gap:4px;flex:none}
.cv.rust .cv-dots i{display:block;width:9px;height:9px;border-radius:50%;background:currentColor;opacity:.35;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.cv.rust .cv-dots i.on{opacity:1}
.cv.rust .entry strong{display:block;font-size:0}
.cv.rust .entry strong .sep{display:none}
.cv.rust .entry strong>bdi{display:block;font-size:calc(12.5px * var(--cv-fsm,1))}
.cv.rust .entry strong>bdi:first-of-type{font-weight:700;text-transform:uppercase;letter-spacing:.01em}
.cv.rust .entry-text{display:block;font-size:calc(12.5px * var(--cv-fsm,1));line-height:1.45;margin-top:2px}
.cv.rust .main-col .entry{position:relative;padding-inline-start:128px;margin:0 0 13px;min-height:1.5em}
.cv.rust .main-col .entry strong>bdi:first-of-type{color:#222}
.cv.rust .main-col .entry strong>bdi:nth-of-type(2){color:var(--cv-accent-tx,var(--cv-accent,#963a2a));font-weight:400}
.cv.rust .main-col .entry strong>.entry-date{position:absolute;inset-inline-start:0;top:0;width:116px;display:block;font-size:calc(12px * var(--cv-fsm,1));font-weight:700;color:#444}
.cv.rust .rail-col .entry{margin:0 0 12px}
.cv.rust .rail-col .entry strong>.entry-date{display:block;font-size:calc(11.5px * var(--cv-fsm,1));opacity:.85}
.cv.rust .rail-col .entry strong>.entry-date .sep{display:none}
.cv.rust .main-col .entry strong>.entry-date .sep{display:none}
.cv.cv-flip.cv-railed.rust .cv-body{grid-template-columns:1fr 32%}
.cv.cv-flip.cv-railed.rust .rail-col{grid-column:2}
.cv.cv-flip.cv-railed.rust .main-col{grid-column:1}
.cv.cv-flip.cv-railed.rust .cv-body::before{inset-inline-start:auto;inset-inline-end:-38px}
/* r76: preview is a fixed 534px page scaled to fit, so no viewport-width stacking of dates (matches PDF) */
.cv.rust .rail-col h2,.cv.rust .contact-box h2{font-size:calc(16px * var(--cv-fsm,1));gap:10px;width:100%}
.cv.rust h2 .h2-label{min-width:0;overflow-wrap:anywhere}
.cv.rust .cv-head,.cv.rust .cv-head.photo-left{flex-direction:column!important;align-items:center}
.cv.rust .cv-dots{display:inline-block;white-space:nowrap;flex:none;line-height:0}
.cv.rust .cv-dots i{display:inline-block;vertical-align:middle;width:9px;height:9px;margin-inline-start:4px}
.cv.rust .cv-dots i:first-child{margin-inline-start:0}

.cv.rust .cv-dots{font-size:calc(9px * var(--cv-fsm,1));letter-spacing:2px;line-height:1.2;white-space:nowrap}
.cv.rust .cv-dots span{display:inline}
.cv.rust .cv-dots .dot-off{opacity:.35}

.cv.rust .cv-dots{font-size:calc(12px * var(--cv-fsm,1));letter-spacing:1px}
.cv.rust .cv-dots .dot-off{opacity:1}

.cv.rust .contact-list li{font-size:calc(11px * var(--cv-fsm,1))}
.cv.cv-flip.cv-railed.onyx .cv-head img{inset-inline-start:calc(100% + 8px)!important} /* r77: flipped Onyx photo straddles the right rail instead of leaving the page */
.photo-ctl .st-ph-ctl{flex-wrap:wrap}.photo-ctl .st-ph-txt{flex:1 1 200px;min-width:200px} /* r79 (was r78 150px): photo helper text no longer squeezed into a narrow strip */
/* r79: Onyx rail headings (Skills/Competences/Habilidades) no longer break mid-word in FR/ES/PT */
.cv.onyx [data-section=education] h2,.cv.onyx [data-section=skills] h2,.cv.onyx [data-section=projects] h2{letter-spacing:.02em;font-size:calc(10.5px * var(--cv-fsm,1));gap:6px;overflow-wrap:normal;word-break:normal}
.cv.onyx [data-section=education] h2::before,.cv.onyx [data-section=skills] h2::before,.cv.onyx [data-section=projects] h2::before{width:14px;height:14px;flex:0 0 14px}
/* r82: FR large - narrow rail/label headings no longer break mid-word (Arc/Banner/Column/Split/Soft rails, Ledger labels); Rust contact email stays on one line at Large */
.cv.arc [data-section=education] h2,.cv.arc [data-section=skills] h2,.cv.arc [data-section=projects] h2,.cv.banner [data-section=skills] h2,.cv.banner [data-section=projects] h2,.cv.column [data-section=skills] h2,.cv.column [data-section=projects] h2,.cv.split [data-section=skills] h2,.cv.split [data-section=projects] h2,.cv.soft [data-section=education] h2,.cv.soft [data-section=skills] h2,.cv.soft [data-section=projects] h2{font-size:calc(10.5px * min(max(var(--cv-fsm,1),1),1.06));letter-spacing:.02em;overflow-wrap:normal;word-break:normal;margin-inline-end:-6px}
.cv.ledger h2{font-size:calc(10.5px * min(max(var(--cv-fsm,1),1),1.06));letter-spacing:.04em;overflow-wrap:normal;word-break:normal}
.cv.rust .contact-list li{font-size:calc(12px * min(var(--cv-fsm,1),1))}
/* r84: Card with a dark panel - the white section cards keep dark text (it was forced to the panel's light text, so content was invisible) */
.cv.cv-panel-on.card .cv-body [data-section],.cv.cv-panel-on.card .cv-body [data-section] *{color:#251f21!important}
.cv.cv-panel-on.card .cv-body [data-section] p{color:#585254!important}
.cv.cv-panel-on.card .cv-body [data-section] h2{color:var(--cv-accent-tx,var(--cv-accent,#2f6b3a))!important}
/* r85: Rightrail with a custom accent - the rail used the near-solid accent (10% toward white) behind dark text; use the light tint like the default look */
.cv.rightrail .rail-col{background:var(--cv-accent-t,#fbeede)}
/* r89: text-safe accent for Canada headline and Rightrail rail headings (were accent-lt / accent-dk on light fills) */
.cv.canada .headline{color:var(--cv-accent-tx,var(--cv-accent-lt,#33415c))}
.cv.rightrail .rail-col h2{color:var(--cv-accent-tx,var(--cv-accent-dk,#8a3f0b))}

/* r98: retain slate rail, use readable ink on default Steel panel. Custom panels use their contrast-checked foreground. */
.cv.steel.cv-railed:not(.cv-panel-on) .rail-col,.cv.steel.cv-railed:not(.cv-panel-on) .rail-col *{color:#111827!important}

/* Local-only r99: reserve scrollable space below the mobile preview for the fixed design pill and tabs. */
@media screen and (max-width:900px){
  body.studio[data-mob=preview] .st-stage{padding:8px 8px calc(130px + var(--cvp-consent-height,0px))}
}

/* LeftRail: let long localized dates wrap inside the sidebar without clipping. */
.cv.leftrail .rail-col .entry-date{white-space:normal}

/* Local regression candidate. Preserve rail date text within its column. */
.cv.rightrail .rail-col .entry-date{white-space:normal}

/* Arc: keep localized dates inside their sidebar in both reading directions. */
.cv.arc .rail-col .entry-date{white-space:normal}

.cv.banner .rail-col .entry-date{white-space:normal}

.cv.column .rail-col .entry-date{white-space:normal}

.cv.split .rail-col .entry-date{white-space:normal}

/* Preserve the Sage heading size but use the existing rail width before splitting words. */
.cv.sage.cv-railed .rail-col h2{letter-spacing:.02em;padding-inline:0;overflow-wrap:normal;word-break:normal;hyphens:auto}

/* Preserve the Sage heading size but use the existing rail width before splitting words. */
.cv.dual.cv-railed .rail-col h2{letter-spacing:.02em;padding-inline:0;overflow-wrap:normal;word-break:normal;hyphens:auto}

/* Preserve the Sage heading size but use the existing rail width before splitting words. */
.cv.soft.cv-railed .rail-col h2{letter-spacing:.02em;padding-inline:0;overflow-wrap:normal;word-break:normal;hyphens:auto}

/* r101 opt-in contact icons. None leaves the original template markup untouched. */
.cv .cv-contact-icons{display:flex;flex-wrap:wrap;justify-content:inherit;gap:.22em .9em}
.cv .cv-contact-icon-item{display:inline-flex;align-items:baseline;gap:.36em;max-width:100%;min-width:0}
.cv .cv-contact-icon-item bdi{overflow-wrap:anywhere;min-width:0}
.cv-contact-icon{display:inline-block;width:1em;height:1em;min-width:1em;flex-shrink:0;vertical-align:-.13em;color:inherit}
.cv .cv-contact-icon-item .cv-contact-icon{align-self:baseline;position:relative;top:.13em}
.st-icon-options .st-opt{display:flex;align-items:center;gap:10px}
/* Rust date lane: long translated dates wrap inside their reserved lane rather than over title. */
.cv.rust .main-col .entry strong>.entry-date{white-space:normal;overflow-wrap:normal;line-height:1.35}
/* Inline groups retain template text alignment while allowing whole contact items to wrap. */
.cv .cv-contact-icons{display:block}
.cv .cv-contact-icons .cv-contact-icon-item{margin-inline-end:.8em}
.cv .cv-contact-icons .cv-contact-icon-item:last-child{margin-inline-end:0}
.cv .contact.cv-contact-icons bdi{white-space:normal;overflow-wrap:anywhere}
.cv .contact.cv-contact-icons{font-size:calc(12px * var(--cv-fsm,1))}

/* Summit stacks opt-in contact rows explicitly, including multiline PDF text. */
.cv.summit .cv-head .contact.cv-contact-icons{display:grid;gap:8px;line-height:1.6}
.cv.summit .cv-head .contact.cv-contact-icons .cv-contact-icon-item{display:flex;margin:0;line-height:1.6}
.cv.summit .cv-head .contact.cv-contact-icons,.cv.summit .cv-head .contact.cv-contact-icons .cv-contact-icon-item{font-size:calc(12px * var(--cv-fsm,1))}
/* Onyx/Bars: localized date ranges must wrap inside their colored sidebar. */
.cv.onyx .rail-col .entry-date,.cv.bars .rail-col .entry-date{white-space:normal;max-width:100%;overflow-wrap:normal}
/* r101 combined: keep short rail labels and normal names whole at Large without changing column identities. */
.cv.cv-size-l.sidebar .rail-col h2{font-size:calc(12px * min(var(--cv-fsm,1),1.06));letter-spacing:0;overflow-wrap:normal;word-break:normal;hyphens:auto}
.cv.cv-size-l.onyx.cv-railed .rail-col h2{font-size:calc(10.5px * min(var(--cv-fsm,1),1.06));letter-spacing:0}
.cv.cv-size-l.onyx.cv-railed .rail-col h2 .h2-label{overflow-wrap:normal;word-break:normal;hyphens:auto}
.cv.cv-size-l.willow .cv-head .cvname{font-size:calc(30px * var(--cv-fsm,1));letter-spacing:.1em}
/* Blush: preserve spaced uppercase identity while normal names wrap at spaces. */
.cv.blush .cv-head .cvname{letter-spacing:.12em;overflow-wrap:break-word;word-break:normal}


/* r106: skill/language level dots for all non-meter templates (meter templates onyx/bars keep their bar; rust keeps its own scoped rules) */
.cv .cv-dots{display:inline-block;margin-inline-start:6px;font-size:calc(9px * var(--cv-fsm,1));letter-spacing:2px;line-height:1.2;white-space:nowrap}
.cv .cv-dots span{display:inline}
.cv .cv-dots .dot-off{opacity:.35}
.cv.rust .cv-dots{margin-inline-start:0}


/* r107 summit layout repair: the shared-row grid left large voids (tall head block beside short summary; empty cells under the main column). Independent float columns - each column packs its own blocks contiguously, RTL mirrored. */
.cv.summit .cv-body{display:block}
.cv.summit .cv-body::after{content:"";display:block;clear:both}
.cv.summit .cv-head{float:left;clear:left;width:36%}
.cv.summit [data-section=skills],.cv.summit [data-section=education],.cv.summit [data-section=projects]{float:left;clear:left;width:36%}
.cv.summit [data-section=summary],.cv.summit [data-section=experience]{float:right;clear:right;width:calc(64% - 26px);margin-inline-start:0}
[dir=rtl] .cv.summit .cv-head,[dir=rtl] .cv.summit [data-section=skills],[dir=rtl] .cv.summit [data-section=education],[dir=rtl] .cv.summit [data-section=projects]{float:right;clear:right}
[dir=rtl] .cv.summit [data-section=summary],[dir=rtl] .cv.summit [data-section=experience]{float:left;clear:left}

/* r108/r109 level-dots wrap fix: the nowrap .cv-dots span used to drop as an orphan
   line under the skill name in narrow rails. Flex rows keep the dots on the
   name's first line while the name text wraps in its own anonymous flex item.
   display:flex removes ::marker, so a bullet is restored via ::before for the
   templates whose skills list relied on list markers; templates with their own
   li::before markers (column, split, ledger, onyx, bars) or markerless skills
   lists (summit, blush, rust) are excluded. */
.cv.banner [data-section=skills] ul,.cv.column [data-section=skills] ul,.cv.split [data-section=skills] ul,.cv.sage [data-section=skills] ul,.cv.dual [data-section=skills] ul,.cv.soft [data-section=skills] ul{grid-template-columns:minmax(0,1fr)!important}
.cv [data-section] li:has(.cv-dots){display:flex;flex-wrap:nowrap;align-items:flex-end;align-self:start;gap:6px;overflow-wrap:normal;padding-inline-end:2px;position:relative}
.cv [data-section] li:has(.cv-dots) .cv-dots{margin-inline-start:0;flex:none}
.cv [data-section] li:has(.cv-dots) .cv-nm{min-width:min-content}
.cv:not(.column):not(.split):not(.ledger):not(.onyx):not(.bars):not(.summit):not(.blush):not(.rust) [data-section] li:has(.cv-dots)::before{content:"\2022";position:absolute;inset-inline-start:-10px;top:0;margin-inline-end:0}
.cv.rust [data-section] li:has(.cv-dots){align-items:center}


/* r117 tiered fit (fitSkillDots measures real overflow per row): overflowing
   rows first get smaller dots + tighter gap (.dots-tight), then smallest dots
   (.dots-micro); only when even the longest whole word + smallest dots cannot
   share a line do the dots drop below the name (.dots-drop). Names are never
   broken, hyphenated or truncated. */
.cv [data-section] li.dots-tight{gap:3px!important}
.cv [data-section] li.dots-tight .cv-dots{font-size:.75em!important}
.cv [data-section] li.dots-micro{gap:2px!important}
.cv [data-section] li.dots-micro .cv-dots{font-size:.6em!important;letter-spacing:.5px!important}
.cv [data-section] li.dots-drop{flex-wrap:wrap!important}
/* r121: in drop rows the inline bullet-mimic would wrap onto its own line above
   the name; anchor it absolutely to the name's first line instead and indent the
   row's content so name/dots keep the sibling name offset. Scoped to the same
   ::marker-mimic templates as the rule above (square/meter/markerless templates
   keep their own anchors). */
/* r122: bullet-mimic is now absolute in the ul padding for ALL dotted rows (aligned with ::marker on level-less rows; name start-x identical with/without levels) */
/* r122: superseded by the shared absolute bullet-mimic rule above */

/* r123: Summit option 3 (DB) - approved by Damien via WhatsApp 2026-10-24 22:58 UTC.
   Projects & Volunteering moves from the rail to the main column under Experience;
   density pass (photo 118px, tighter section margins, contact and skills spacing).
   Pixel-verified as in-page injection 22:30-22:32 UTC (en-DB/ar-DB/mob-DB captures)
   and delivered in the comparison File; declarations mirror the verified injection.
   Section margin keeps --cv-smm scaling so the Spacing pill still applies. */
.cv.summit [data-section=projects]{grid-area:4 / 2 / 5 / 3;width:calc(64% - 26px);margin-inline-start:14px;margin-inline-end:0;float:right;clear:right}
[dir=rtl] .cv.summit [data-section=projects]{float:left;clear:left}
.cv.summit [data-section]{margin-bottom:calc(9px * var(--cv-smm,1))}
.cv.summit .cv-head{margin-top:-30px;margin-bottom:10px}
.cv.summit .cv-head img{height:118px}
.cv.summit .cv-head .contact{gap:3px;padding-top:8px}
.cv.summit [data-section=skills]{padding:12px 16px;padding-inline-start:20px}
.cv.summit [data-section=skills] ul{gap:4px}

/* c12: RTL bidi fix - keep title/org/date bdi units whole when wrapping (stacked summit/blush excluded) */
html[dir="rtl"] #preview:not(.summit):not(.blush):not(.rust) .entry > strong bdi{display:inline-block;}

/* c12b: RTL - stack entry dates on their own line without dangling pipe in the four repaired templates (onyx/bars precedent) */
html[dir="rtl"] #preview:is(.sidebar,.leftrail,.compactpro,.rightrail) .entry > strong .entry-date{display:block;margin-inline-start:0;}
html[dir="rtl"] #preview:is(.sidebar,.leftrail,.compactpro,.rightrail) .entry > strong .entry-date .sep{display:none;}
html[dir="rtl"] #preview:is(.sidebar,.leftrail,.compactpro,.rightrail) .rail-col .entry > strong .sep{display:none;}

/* Personal card grid must yield to its collapse state. */
.st-card[data-personal] .st-cardb.st-collapsed{display:none}

/* Independent populated Summit columns, including custom sections. */
.cv.summit.cv-railed .cv-body{display:grid;grid-template-columns:36% minmax(0,1fr);gap:26px;align-items:start}
.cv.summit.cv-railed .cv-body::after{display:none}
.cv.summit.cv-railed .rail-col,.cv.summit.cv-railed .main-col{min-width:0}
.cv.summit.cv-railed .cv-head,.cv.summit.cv-railed [data-section]{float:none;clear:none;width:auto;grid-area:auto}
.cv.summit.cv-railed .main-col [data-section]{margin-inline:0;padding-inline:0}

.cv.summit.cv-railed .cv-head .identity{margin-inline-end:0}
.cv.summit.cv-railed .cv-head p.cvname,.cv.summit.cv-railed .cv-head p.headline{margin-inline-end:0}

/* Local single-page Rust proposal. */
#preview.rust{width:780px!important;max-width:none;padding:28px;aspect-ratio:auto}
.cv.rust .main-col .entry{padding-inline-start:64px;margin-bottom:calc(9px * var(--cv-smm,1))}
.cv.rust .main-col .entry strong>.entry-date{width:56px;font-size:calc(11px * var(--cv-fsm,1))}
.cv.rust .entry-text{font-size:calc(14px * var(--cv-fsm,1));line-height:calc(1.3 * var(--cv-lh,1))}
.cv.rust .entry strong>bdi{font-size:calc(13px * var(--cv-fsm,1))}
.cv.rust h2{font-size:calc(15px * var(--cv-fsm,1));margin-bottom:calc(7px * var(--cv-smm,1))}
.cv.rust [data-section]{margin-bottom:calc(12px * var(--cv-smm,1))}
.cv.rust .cv-body{grid-template-columns:30% 1fr;column-gap:22px}
.cv.rust .cv-body::before{top:-28px;bottom:-28px;inset-inline-start:-28px;width:calc(30% + 39px)}
.cv.cv-flip.cv-railed.rust .cv-body{grid-template-columns:1fr 30%}
.cv.rust .contact-list li{display:flex;width:100%;font-size:calc(12px * var(--cv-fsm,1));gap:.36em;align-items:baseline}
/* Local paper-width experiment, not approved. */
#preview:not(.rust){width:780px!important;max-width:none}
/* Local whitespace correction trial. */
#preview:not(.rust) h2{margin-top:calc(14px * var(--cv-smm,1));margin-bottom:calc(7px * var(--cv-smm,1))}
#preview:not(.rust) .cv-body p{margin-block:calc(6px * var(--cv-smm,1))}
#preview:not(.rust) .entry{margin-block:calc(6px * var(--cv-smm,1))}
#preview:not(.rust) .entry-text{line-height:calc(1.35 * var(--cv-lh,1))}
#preview.frame [data-section]{padding-bottom:calc(8px * var(--cv-smm,1));margin-bottom:calc(8px * var(--cv-smm,1))}
#preview.frame h2{margin-top:0;padding-block:5px;margin-bottom:calc(6px * var(--cv-smm,1))}
#preview.frame .cv-head{flex-direction:row;text-align:start;padding-bottom:calc(10px * var(--cv-smm,1))}
#preview.blush [data-section]{margin-bottom:calc(10px * var(--cv-smm,1))}
#preview.blush [data-section=experience] .entry{margin-bottom:calc(8px * var(--cv-smm,1))}
#preview.blush [data-section=experience] .entry .entry-text{margin-top:4px;line-height:calc(1.35 * var(--cv-lh,1))}
#preview.boxed h2{margin:0}
#preview.card h2{margin-top:6px;margin-bottom:calc(2px * var(--cv-smm,1))}
#preview.card [data-section]{padding-bottom:calc(7px * var(--cv-smm,1));margin-bottom:calc(7px * var(--cv-smm,1))}
#preview.blush .cv-head .identity{padding-top:24px;padding-bottom:calc(16px * var(--cv-smm,1))}
#preview.blush .entry-text,#preview.blush [data-section=summary] p{font-size:calc(16px * var(--cv-fsm,1));line-height:calc(1.25 * var(--cv-lh,1))}
#preview.blush h2{margin-top:6px;margin-bottom:calc(7px * var(--cv-smm,1));padding-block:6px}
#preview.blush [data-section=education] .entry{margin-bottom:calc(6px * var(--cv-smm,1))}
#preview:is(.mono,.ribbon,.slate) .cv-body p{margin-block:calc(4px * var(--cv-smm,1))}
#preview:is(.mono,.ribbon,.slate) h2{margin-top:calc(10px * var(--cv-smm,1))}
#preview.blush{width:880px!important}
html[dir=rtl] #preview.mono{width:840px!important}
#preview.frame .cv-head{flex-direction:column;text-align:center;gap:8px;padding-bottom:calc(8px * var(--cv-smm,1))}
#preview.frame .profile-photo{width:64px;height:64px}
#preview.frame .headline{margin-block:calc(4px * var(--cv-smm,1))}
/* r243: use available rail area for body text instead of shrinking ordinary descriptions and skills. */
.cv.cv-railed .rail-col .entry-text,.cv.cv-railed .rail-col > section > p,.cv.cv-railed .rail-col [data-section] li{font-size:calc(14px * var(--cv-fsm,1))}

/* Card paper keeps readable muted text independent of site theme. */
.cv.card{--mut:#585254}

/* Keep temporary PDF conversion layer offscreen in RTL. */
body.studio > .html2pdf__overlay{right:auto!important;width:100vw!important;pointer-events:none!important}

/* Larger fixed portraits. Larger fixed portraits, preserving template shape and crop. */
.cv .cv-head img.profile-photo{width:168px;height:168px;max-width:100%;object-fit:cover;flex-shrink:0}
.cv.compact .cv-head img.profile-photo,#preview.frame .cv-head img.profile-photo{width:144px;height:144px}
.cv.summit .cv-head img.profile-photo{width:100%;height:168px}
.cv.onyx:has(.cv-head img) .cv-rail-first{margin-top:196px}
.cv.onyx:has(.cv-head img) .cv-head{min-height:176px}
.cv.bars:has(.cv-head img) .cv-head{min-height:194px}
.cv.blush .cv-head img.profile-photo{width:236px;height:236px}
