/* CV: two A4 pages (794 x 1123 CSS px), 52px side margins. Bubbles static. */
@page{size:A4;margin:0}
.cv-body{background:#e9e5dc;margin:0}
.cv-body.pdf{background:#fff}
.cv-bar{position:sticky;top:0;z-index:4;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;background:rgba(233,229,220,.92);backdrop-filter:blur(8px)}
.cv-back{color:var(--ink);font-weight:600;font-size:15px}.cv-back:hover{color:#7c4dff}
.cv-dl{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.cv-dl .btn{gap:0;white-space:pre}
@media (max-width:480px){.cv-bar .wide{display:none}.cv-dl .btn{padding:10px 16px}}
.cv-pages{display:flex;flex-direction:column;align-items:center;gap:28px;padding:20px 0 56px}
.pdf .cv-pages{display:block;padding:0}
/* Narrow screens: a script wraps each page in .cv-fit and scales it (transform, not zoom: iOS Safari mis-renders zoom). */
.cv-fit{flex:none}.cv-fit>.cv-page{transform-origin:0 0}
.cv-page{width:794px;height:1123px;background:#fff;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 50px rgba(12,10,20,.14);color:var(--ink)}
.pdf .cv-page{box-shadow:none;break-after:page;page-break-after:always}
.pdf .cv-page:last-child{break-after:auto;page-break-after:auto}
.cv-page a{color:var(--ink)}
.cv-hdr{background:var(--ink);color:var(--lav);padding:40px 150px 34px 52px;position:relative;overflow:hidden}
.ob{position:absolute;border-radius:50%}
.o1{width:30px;height:30px;background:#8b5cf6;right:96px;top:62px}
.o2{width:44px;height:44px;background:#ff5ca8;right:40px;top:26px}
.o3{width:66px;height:66px;background:#ffb020;right:-24px;top:-28px}
.cv-hdr .wm-n{letter-spacing:-.045em}
.cv-hl{font-size:15px;font-weight:500;margin-top:12px}
.cv-contact{font-family:'DM Mono',ui-monospace,monospace;font-weight:500;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--md);margin-top:12px;display:flex;flex-wrap:wrap;gap:6px 16px}
.cv-body1{padding:26px 52px 0;display:flex;flex-direction:column;gap:22px;flex:1}
.cv-body2{padding:52px 52px 0;display:flex;flex-direction:column;gap:14px;flex:1}
.cv-sum{font-size:13.5px;line-height:1.6;text-wrap:pretty}
.cv-tiles{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.08fr) minmax(0,1.02fr);gap:10px}
.cv-tile{background:var(--paper);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:6px}
.cv-tile .dot{width:8px;height:8px}
.cv-th{font-weight:700;font-size:21px;letter-spacing:-.03em;line-height:1.05;white-space:nowrap}
.cv-tc{font-size:10.5px;line-height:1.4;color:var(--ml)}
.cv-os{background:var(--ink);color:var(--lav);border-radius:18px;padding:16px 22px;display:flex;flex-direction:column;gap:10px;margin-top:4px}
.cv-os .mono{color:var(--md)}
.cv-osp{font-size:12px;line-height:1.55}
.cv-shots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.cv-shot{display:flex;flex-direction:column;gap:5px}
.cv-shot img{display:block;width:100%;aspect-ratio:2732/2048;object-fit:cover;border-radius:7px;box-shadow:0 0 0 3px var(--ink-bezel)}
.cv-shot>span{font-family:'DM Mono',ui-monospace,monospace;font-weight:500;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--md);display:flex;align-items:center;gap:5px}
.cv-shot .dot{width:5px;height:5px}
.cv-xh{display:flex;align-items:center;gap:8px;border-top:1px solid var(--rule-l);padding-top:16px}
.cv-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;border-top:1px solid rgba(12,10,20,.08);padding-top:12px}
.cv-row.first{border-top:0;padding-top:0}
.cv-co{font-weight:700;font-size:15px}.cv-d{font-size:11px;line-height:1.4;color:var(--ml);margin-top:3px}
.cv-rr{display:flex;flex-direction:column;gap:6px}
.cv-role{font-weight:600;font-size:14px}
.cv-rr ul{margin:0;padding-left:16px;font-size:11.5px;line-height:1.45;display:flex;flex-direction:column;gap:2px}
.cv-body1 .cv-rr ul{font-size:12px;line-height:1.5}
.cv-f{font-size:11px;color:var(--ml)}
.cv-foot{padding:10px 52px 16px;display:flex;justify-content:space-between;font-family:'DM Mono',ui-monospace,monospace;font-weight:500;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ml)}
@media print{.wm-b.pop{animation:none!important}.cv-bar{display:none}.cv-body{background:#fff}.cv-pages{display:block;padding:0}.cv-fit{width:auto!important;height:auto!important}.cv-page{box-shadow:none;break-after:page;transform:none!important}.cv-page:last-child{break-after:auto}}
/* Balance: page 1 spacing opened so both pages end the same distance above the footer */
.cv-body1{gap:21px;padding-top:30px}
.cv-body2{padding-top:54px}
.cv-sum{font-size:13.75px;line-height:1.66}
.cv-tile{padding:17px 16px;gap:8px}
.cv-os{padding:20px 24px;gap:12px}
.cv-osp{font-size:12px;line-height:1.6}
.cv-body1 .cv-rr ul{line-height:1.58;gap:3px}
/* Symmetry pass: equal tiles, single-line captions, balanced paragraph */
.cv-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
.cv-th{font-size:18px}
.cv-osp{text-wrap:pretty}
.cv-shot>span{font-size:7.6px;letter-spacing:.05em;white-space:nowrap}
.cv-body1{gap:25px}
.cv-tc{font-size:9.8px;white-space:nowrap}.cv-tile{padding:17px 15px}
.cv-contact{margin-right:-98px;flex-wrap:nowrap;gap:0 18px}
/* Live links in the CV (PDF keeps them): same look as text */
.cv-contact a{color:inherit}.cv-contact a:hover{color:#ffb020}
a.cv-os{position:relative;color:var(--lav);text-decoration:none}
.cv-claude{position:absolute;top:16px;right:20px;width:26px;height:26px;display:block}
a.cv-os:hover{box-shadow:inset 0 0 0 1px rgba(242,239,255,.2)}
.cv-foot a{color:inherit}.cv-foot a:hover{color:#7c4dff}
.cv-contact>*{flex:none}.cv-contact{gap:0 13px;letter-spacing:.04em}
