/* CV (/personal/cv): pages are 540 × 780 pt like the PowerPoint original. --pt scales one point to the page
   width, so every position, size and font keeps its proportion on any screen. cv.js reads the rendered layout
   for the PDF, so what is drawn here is what gets downloaded. Scoped under #cv-doc to stay clear of theme rules. */
@font-face{font-family:"CV Montserrat";font-style:normal;font-weight:300;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-300-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"CV Montserrat";font-style:normal;font-weight:300;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-ext-300-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"CV Montserrat";font-style:italic;font-weight:300;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-300-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"CV Montserrat";font-style:italic;font-weight:300;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-ext-300-italic.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"CV Montserrat";font-style:normal;font-weight:400;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"CV Montserrat";font-style:normal;font-weight:400;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"CV Montserrat";font-style:italic;font-weight:400;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-400-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"CV Montserrat";font-style:italic;font-weight:400;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-ext-400-italic.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"CV Montserrat";font-style:normal;font-weight:700;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"CV Montserrat";font-style:normal;font-weight:700;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"CV Montserrat";font-style:italic;font-weight:700;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-700-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"CV Montserrat";font-style:italic;font-weight:700;font-display:block;src:url(/assets/fonts/montserrat/montserrat-latin-ext-700-italic.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

#cv-doc{width:min(100% - 2rem,860px);margin-inline:auto;container-type:normal}
#cv-doc .cv-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.6rem 1rem;margin:0 0 .9rem}
#cv-doc .cv-bar__hint{flex:1 1 20rem;margin:0;font-size:.82rem;opacity:.8}
#cv-doc .cv-download{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1rem;border:0;border-radius:999px;background:#EB6C33;color:#fff;font:600 .9rem/1.1 system-ui,-apple-system,"Segoe UI",sans-serif;cursor:pointer;box-shadow:0 6px 18px rgba(235,108,51,.35);transition:transform .15s ease,box-shadow .15s ease}
#cv-doc .cv-download:hover{transform:translateY(-1px);box-shadow:0 9px 22px rgba(235,108,51,.45)}
#cv-doc .cv-download:focus-visible{outline:3px solid #fff;outline-offset:2px}
#cv-doc .cv-download[aria-busy=true]{opacity:.75;cursor:progress}
#cv-doc .cv-pages{display:grid;gap:clamp(1rem,3vw,2rem)}
#cv-doc .cv-updated{margin:0 auto 0 0;min-width:9rem;font:500 .9rem/1.3 system-ui,-apple-system,"Segoe UI",sans-serif;opacity:.85}
.admin-mode #cv-doc .cv-updated{padding:.3rem .5rem;border:1px dashed currentColor;border-radius:.4rem;cursor:text}
.admin-mode #cv-doc .cv-updated:empty::before{content:attr(data-placeholder);opacity:.5}
.admin-mode #cv-doc .cv-updated:focus{outline:2px solid #EB6C33;outline-offset:1px}
.admin-mode #cv-doc .cv-bar__hint{flex-basis:100%;order:5}
#cv-doc .cv-page-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:calc(-1 * clamp(1rem,3vw,2rem) + .5rem);font:500 .8rem/1.2 system-ui,-apple-system,"Segoe UI",sans-serif}
#cv-doc .cv-page-tools span{opacity:.7}
#cv-doc .cv-page-tools:last-child{margin:0}

#cv-doc .cv-page{position:relative;width:100%;aspect-ratio:540/780;overflow:hidden;background:#fff;color:#262626;container-type:inline-size;--pt:calc(100cqw / 540);box-shadow:0 1px 2px rgba(0,0,0,.2),0 14px 40px rgba(0,0,0,.28);text-align:left;font-kerning:none;font-feature-settings:"kern" 0;-webkit-font-smoothing:antialiased}
#cv-doc .cv-page *{box-sizing:border-box;margin:0;padding:0;border:0;max-width:none;min-width:0;background:none;box-shadow:none;text-shadow:none;text-transform:none;filter:none;float:none;font:inherit;color:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:none;list-style:none;text-wrap:wrap;hyphens:manual;word-break:normal}
#cv-doc .cv-item{position:absolute;left:calc(var(--x) * var(--pt));top:calc(var(--y) * var(--pt));width:calc(var(--w) * var(--pt))}

/* Text boxes: PowerPoint insets 7.2 / 3.6 pt, single spacing (1.2), Montserrat Light #262626. The extra .04em
   puts the first baseline where PowerPoint draws it. */
#cv-doc .cv-t{padding:calc(3.6 * var(--pt) + .04em) calc(7.2 * var(--pt)) calc(3.6 * var(--pt));font-family:"CV Montserrat",Montserrat,sans-serif;font-weight:300;font-style:normal;font-size:calc(var(--fs) * var(--pt));line-height:1.2;color:#262626;overflow-wrap:break-word;white-space:pre-wrap}
#cv-doc .cv-t li{position:relative;margin-left:calc(13.5 * var(--pt))}
#cv-doc .cv-t li::before{content:"";position:absolute;left:calc(-13.5 * var(--pt) + .06em);top:.47em;width:.26em;height:.26em;border-radius:50%;background:currentColor}
#cv-doc .cv-t .j{text-align:justify}
#cv-doc .cv-t .c{text-align:center}
#cv-doc .cv-t strong{font-weight:700}
#cv-doc .cv-t em{font-style:italic}
#cv-doc .cv-t u{text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.14em}
#cv-doc .cv-t a{color:#0563C1;text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.14em}
#cv-doc .cv-t .o{color:#EB6C33}
#cv-doc .cv-t .g{color:#404040}
#cv-doc .cv-t .k{color:#262626}
#cv-doc .cv-t .r{font-weight:400}
#cv-doc .cv-t .l{font-weight:300}
#cv-doc .cv-t .fb{-webkit-text-stroke:calc(.32 * var(--pt)) currentColor}
#cv-doc .cv-t--h{font-weight:700;color:#EB6C33;letter-spacing:calc(3 * var(--pt))}
#cv-doc .cv-t--o{color:#EB6C33}
#cv-doc .cv-t--g{color:#404040}
/* Key skills: orange bars 155 × 19.4 pt, 27.48 pt apart, label in faux-bold Light like the original. */
#cv-doc .cv-t--bars{padding:0}
#cv-doc .cv-t--bars li{margin:0 0 calc(8.08 * var(--pt));height:calc(19.4 * var(--pt));padding:calc(1.43 * var(--pt)) 0 0 calc(6.8 * var(--pt));line-height:calc(17.97 * var(--pt));background:#EB6C33;color:#404040;white-space:nowrap;overflow:hidden;-webkit-text-stroke:calc(.32 * var(--pt)) currentColor}
#cv-doc .cv-t--bars li::before{content:none}

#cv-doc .cv-img{height:calc(var(--h) * var(--pt));overflow:hidden}
#cv-doc .cv-img img{position:absolute;left:0;top:0;display:block;width:100%;height:100%;object-fit:fill;border-radius:0}
#cv-doc .cv-img.is-cover img{object-fit:cover}
#cv-doc .cv-img img.is-cropped{width:calc(100% / (1 - var(--cl) - var(--cr)));height:calc(100% / (1 - var(--ct) - var(--cb)));left:calc(-100% * var(--cl) / (1 - var(--cl) - var(--cr)));top:calc(-100% * var(--ct) / (1 - var(--ct) - var(--cb)))}
#cv-doc .cv-img.is-round{overflow:visible}
#cv-doc .cv-img.is-round img{left:calc(var(--inset,0) * var(--pt));top:calc(var(--inset,0) * var(--pt));width:calc(100% - 2 * var(--inset,0) * var(--pt));height:calc(100% - 2 * var(--inset,0) * var(--pt));border-radius:50%;object-fit:cover}
#cv-doc .cv-img.is-round::after{content:"";position:absolute;inset:calc(-.5 * var(--pt));border:calc(1 * var(--pt)) solid var(--ring,transparent);border-radius:50%;pointer-events:none}
#cv-doc .cv-rect{height:calc(var(--h) * var(--pt))}

/* Admin */
.admin-mode #cv-doc .cv-item{cursor:pointer}
.admin-mode #cv-doc .cv-item:hover{outline:1px dashed rgba(5,99,193,.55);outline-offset:1px}
.admin-mode #cv-doc .cv-item.is-fixed:hover{outline:0}
.admin-mode #cv-doc .cv-item.is-selected{outline:2px solid #0563C1;outline-offset:1px;z-index:5}
.admin-mode #cv-doc .cv-item.is-editing{outline:2px solid #EB6C33;cursor:text;z-index:6;background:rgba(255,255,255,.85)}
.admin-mode #cv-doc .cv-item.is-overflow{outline:2px solid #d22;background:#fff3f3;z-index:4}
.admin-mode #cv-doc .cv-page.has-overflow{overflow:visible;z-index:1}
.admin-mode #cv-doc .cv-page.has-overflow::after{content:"⚠ Sisältö ei mahdu sivulle — lyhennä tekstiä, kunnes punainen reunus poistuu";position:absolute;left:50%;bottom:.6rem;transform:translateX(-50%);z-index:20;padding:.35rem .7rem;border-radius:999px;background:#d22;color:#fff;font:600 .75rem/1.2 system-ui,-apple-system,"Segoe UI",sans-serif;white-space:nowrap;pointer-events:none}
.admin-mode #cv-doc .cv-item.is-dragging{cursor:grabbing;opacity:.85}
.cv-panel{position:absolute;z-index:1000;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;max-width:min(40rem,calc(100vw - 1rem));padding:.35rem;border-radius:.6rem;background:#1d2330;color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.35);font:500 .78rem/1 system-ui,-apple-system,"Segoe UI",sans-serif}
.cv-panel button{min-width:1.9rem;height:1.9rem;padding:0 .5rem;border:0;border-radius:.4rem;background:rgba(255,255,255,.1);color:inherit;font:inherit;cursor:pointer}
.cv-panel button:hover{background:rgba(255,255,255,.22)}
.cv-panel button.is-primary{background:#EB6C33}
.cv-panel .cv-panel__sep{width:1px;height:1.3rem;margin:0 .15rem;background:rgba(255,255,255,.25)}
.cv-panel .cv-panel__info{padding:0 .35rem;opacity:.7;font-variant-numeric:tabular-nums}
.cv-panel .cv-swatch{width:1.9rem;padding:0}
.cv-panel .cv-swatch span{display:inline-block;width:.9rem;height:.9rem;border-radius:50%;vertical-align:middle;border:1px solid rgba(255,255,255,.5)}
