:root{--green:#72ab00;--text:#707070;--page:#fff;--panel:#eee;--line:#d5d5d5;--scale:1;color-scheme:light;font-family:'Inter',Arial,sans-serif;font-weight:300}
:root.dark{--text:#bbb;--page:#181818;--panel:#262626;--line:#454545;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--text)}a{color:var(--green);text-underline-offset:2px}button,input,textarea{font:inherit}button{cursor:pointer}img{max-width:100%;height:auto}h1,h2,h3,p,ul,ol{margin-top:0}p{margin-bottom:.8em}li p{margin-bottom:.25em}h1,h2,h3{font-weight:400}h1{font-size:calc(30px * var(--scale));color:var(--green);margin-bottom:20px}h2{font-size:calc(23px * var(--scale));line-height:1.3;margin-bottom:16px}h3{font-size:calc(20px * var(--scale))}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--green);outline-offset:4px}.accent{color:var(--green)}.visually-hidden,.skip-link:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link:focus{position:fixed;z-index:30;background:var(--page);padding:12px}
.site-header{background:#000;border-bottom:2px solid var(--green);color:#929292;position:sticky;top:0;z-index:20}.header-inner{max-width:960px;margin:auto;position:relative;padding:24px 0 20px}.identity{display:inline-block;text-decoration:none}.identity-name{display:block;color:var(--green);font-weight:700;font-size:50px;line-height:1.15}.identity-name span{color:#929292}.identity-role{display:block;color:#929292;font-size:20px;margin-top:3px}#site-nav{display:flex;gap:10px;margin-top:28px}#site-nav a{flex:1;text-align:center;padding-top:10px;border-top:1px solid #666;text-decoration:none;color:#929292;font-size:14px}#site-nav a[aria-current]{color:var(--green);border-top:4px solid var(--green);padding-top:7px}.theme-toggle{position:fixed;right:20px;top:20px;width:36px;height:36px;border:1px solid #777;border-radius:50%;color:#aaa;background:#000;font-size:20px}.menu-toggle{display:none}main{width:min(926px,calc(100% - 40px));margin:58px auto 64px;font-size:calc(15px * var(--scale));line-height:1.5;overflow-wrap:anywhere}main>*{min-width:0}.site-footer{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 20px;color:var(--text);font-size:12px}.site-footer>div{max-width:926px;margin:auto}.page-intro{margin-bottom:36px;padding-bottom:30px;border-bottom:1px solid var(--line)}.lovi-editorial-intro{font-size:calc(17px * var(--scale));line-height:1.55;margin-bottom:0}
/* Home */
.home-card{background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:34px 38px;display:grid;grid-template-columns:310px minmax(0,1fr) 196px;grid-template-areas:'skills skills skills' 'portrait motto contact' 'portrait values downloads';column-gap:40px;row-gap:30px}.main-skills{grid-area:skills;font-size:calc(17px * var(--scale))}.main-skills p{margin:0}.home-portrait{grid-area:portrait;width:310px;height:460px;object-fit:cover;object-position:50% 30%}.home-motto{grid-area:motto;padding-top:56px;color:var(--green)}.home-motto h2:first-child{font-weight:700;font-size:70px;line-height:1;margin:0}.home-motto h2:last-child{font-size:25px;line-height:1.25;margin:0}.home-values{grid-area:values;align-self:end;font-size:18px;line-height:1.3}.home-values p{margin:0}.home-values ul{padding-left:30px;margin-bottom:0}.home-contact{grid-area:contact;font-size:15px}.home-contact p{margin-bottom:22px}.social-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:42px}.social-links a{display:block}.social-links img{width:24px;height:24px;object-fit:contain}.downloads{grid-area:downloads;align-self:end;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 10px;background:#fff;border:1px solid var(--green);padding:12px 10px 14px;color:#494949}.downloads h2{grid-column:1/-1;text-align:center;font-size:18px;color:var(--green);margin:0}.downloads a{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;color:#494949;text-decoration:none;font-size:11px;line-height:1.25}.downloads img{width:50px;height:60px;object-fit:contain}.home-search{margin-top:34px;padding:24px 32px;background:var(--panel);border:1px solid var(--line);border-radius:5px}.home-search h2{font-size:17px;color:var(--green);margin-bottom:10px}.home-search p{font-size:17px;line-height:1.55;margin:0}.home-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:34px;font-size:15px;line-height:1.25}.home-columns>section{position:relative}.home-columns>section+section:before{content:'';position:absolute;top:0;bottom:0;left:-10px;border-left:1px solid var(--line)}.home-columns>section>p:first-child{font-size:17px}.home-columns ul{padding-left:27px;margin-bottom:0}.home-columns li p{margin:0}.attribution{font-size:11px;margin-top:65px}
.home-products>p{margin:0}.home-products>p:first-child{margin-bottom:1em}.home-products>ul{margin:0 0 1em}.home-products>ul:last-child{margin-bottom:0}
/* Career and project history */
.cv-intro{display:block;padding:32px;background:var(--panel);border:1px solid var(--line);border-radius:5px;margin-bottom:34px}.cv-intro h2{margin:28px 0 22px}.cv-intro p:not(.lovi-editorial-intro){margin-bottom:0}.cv-highlights{margin-bottom:40px}.cv-highlights h2{padding-bottom:12px;border-bottom:1px solid var(--line)}.history-entry,.izm-entry{display:grid;grid-template-columns:100px minmax(0,1fr);gap:32px;margin:30px 0 48px}.entry-text h2{font-size:calc(20px * var(--scale));color:var(--green);margin-bottom:18px}.entry-text h2~h2{font-size:calc(17px * var(--scale))}.logo-surface{width:100px;min-height:88px;height:fit-content;border:1px solid #aaa;border-radius:5px;background:#eee;padding:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.logo-surface:empty{visibility:hidden}.logo-surface img{max-width:78px;max-height:80px;object-fit:contain;display:block}.izm-list{margin:32px 0 52px}.izm-text>p:first-child{color:var(--green)}.izm-box{width:86px;height:86px;display:flex;align-items:center;justify-content:center}.izm-box img{width:84px;height:84px;object-fit:contain;border-radius:5px}.izm-wb{position:relative}.izm-wb img{border-radius:19px;transform:scale(.90)}.izm-wb:after{content:'';position:absolute;inset:0;border:12px solid #111a30;border-radius:19px;pointer-events:none}
/* Products, testimonials and Varia */
.page-products main{font-size:calc(17px * var(--scale))}.products-brand{margin:16px 0 34px}.product-entry{display:grid;grid-template-columns:110px minmax(0,1fr);gap:28px;padding:30px 0;border-top:1px solid var(--line)}.product-entry h2,.varia-content h2{color:var(--green)}.product-logo{width:110px;display:flex;justify-content:center;align-items:flex-start}.product-links{font-size:calc(15px * var(--scale));margin-top:16px}.product-status{font-size:calc(14px * var(--scale));color:var(--text);margin-left:12px;display:inline-block}.testimonials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:38px}.testimonial{padding:8px;scroll-margin-top:230px}.testimonial:nth-child(2){grid-column:1;grid-row:2}.testimonial:nth-child(3){grid-column:2;grid-row:1/3}.testimonial p:last-child{margin-top:24px}.arrival-highlight{animation:arrival 2.8s ease-out}@keyframes arrival{0%,25%{background:#72ab0035;outline:2px solid var(--green);outline-offset:6px}100%{background:transparent;outline:2px solid transparent;outline-offset:6px}}.varia-content h2{font-size:calc(20px * var(--scale));margin:28px 0 12px}.varia-content>h2:first-child{margin-top:0}.varia-content section{margin-top:28px}.varia-content ul{padding-left:24px}.varia-content li{margin:6px 0}summary{cursor:pointer;color:var(--green);margin-top:14px}.lovi-electronics-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.lovi-electronics-photos img{display:block;width:100%;height:170px;object-fit:contain;border-radius:3px;background:var(--panel)}.lovi-varia-writing{display:grid;grid-template-columns:86px minmax(0,1fr);gap:24px;border-top:1px solid var(--line);padding-top:28px}.lovi-varia-writing .product-logo{width:86px}.lovi-varia-writing h2{margin-top:0}.lovi-varia-writing img{width:86px;height:86px}#elscint{scroll-margin-top:230px}
/* Contact */
.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:60px}.contact-details{font-size:calc(20px * var(--scale))}.contact-qr{display:block;width:172px;margin:45px 0 16px}.contact-qr img{display:block;background:white;border:1px solid var(--line);border-radius:5px;padding:8px}.contact-details>p:last-child{font-size:calc(15px * var(--scale))}#contact-form{display:flex;flex-direction:column;gap:14px}#contact-form h2{font-size:calc(20px * var(--scale))}#contact-form input,#contact-form textarea{width:100%;min-width:0;color:var(--text);background:var(--page);border:0;border-bottom:1px solid var(--line);padding:12px 10px;font-size:calc(16px * var(--scale));line-height:1.35}#contact-form input::placeholder,#contact-form textarea::placeholder{color:var(--text);opacity:1}#contact-form textarea{border:1px solid var(--line);min-height:180px;resize:vertical}#contact-form button{align-self:start;background:var(--green);border:0;padding:10px 24px;color:white}#contact-form button:disabled{opacity:.5;cursor:wait}#contact-status{font-size:calc(15px * var(--scale))}#contact-verification{min-height:65px}
/* Hub */
.page-hub main{max-width:620px}#lovi-hub .hub-head{text-align:center;margin-bottom:30px}#lovi-hub .avatar{width:100px;height:100px;border-radius:50%;margin:0 auto 14px;background:url('/files/index/aff72df7-4779-4522-9252-86277155c63b.jpg') 50% 30%/auto 150%;border:3px solid white;box-shadow:0 2px 8px #0002}#lovi-hub h1{font-size:calc(34px * var(--scale));font-weight:bold;margin-bottom:6px}#lovi-hub .subtitle{text-transform:uppercase;font-size:calc(18px * var(--scale));letter-spacing:1px}#lovi-hub .section{margin-top:28px}#lovi-hub .section-label{font-size:calc(13px * var(--scale));text-transform:uppercase;letter-spacing:2px;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:12px}#lovi-hub .row{display:flex;gap:8px;margin:10px 0}#lovi-hub .card{display:flex;align-items:center;gap:14px;flex:1;min-width:0;border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--panel);text-decoration:none;color:var(--text)}#lovi-hub .ic{width:34px;height:34px;object-fit:contain;flex-shrink:0}#lovi-hub .txt{display:flex;flex-direction:column;flex:1;min-width:0}#lovi-hub .name{font-size:calc(18px * var(--scale));font-weight:bold}#lovi-hub .url{font-size:calc(13px * var(--scale));overflow-wrap:anywhere}#lovi-hub .arrow{font-size:calc(15px * var(--scale))}#lovi-hub .demo{display:flex;align-items:center;text-decoration:none;border:1px solid var(--line);border-radius:10px;padding:12px;font-size:calc(13px * var(--scale));color:var(--text)}#lovi-hub .qr{text-align:center;margin-bottom:20px}#lovi-hub .qr img{width:172px;height:172px;padding:10px;border:1px solid var(--line);border-radius:12px;background:white}#lovi-hub .qr-label{font-size:calc(12.5px * var(--scale));margin-top:9px}#lovi-hub .save-contact{display:none}.page-activities main img{max-width:300px;max-height:240px;object-fit:contain;margin:12px}
@media(max-width:1050px) and (min-width:750px){.header-inner{padding-left:20px;padding-right:20px}.home-card{grid-template-columns:32% minmax(0,1fr) 24%;gap:25px;padding:25px}.home-portrait{width:100%;height:100%;max-height:460px}.home-motto h2:last-child{font-size:22px}.home-motto h2:first-child{font-size:58px}.home-contact{font-size:14px}}
@media(max-width:749px){
 :root{--scale:1.75}.header-inner{padding:12px 48px 12px 58px;min-height:90px}.identity-name{font-size:clamp(25px,6.5vw,34px)}.identity-role{font-size:17px}.menu-toggle{display:block;position:absolute;left:14px;top:23px;background:none;color:#ccc;border:0;font-size:25px;padding:0}.theme-toggle{right:10px;top:40px;width:29px;height:29px;font-size:17px}#site-nav{display:none;position:absolute;left:0;right:0;top:100%;background:#000;margin:0;padding:12px 20px 22px;box-shadow:0 8px 10px #0004}#site-nav.open{display:grid;grid-template-columns:1fr 1fr;gap:18px}#site-nav a{font-size:17px;padding-top:9px}.site-header{border-bottom-width:2px}main{width:calc(100% - 32px);margin:24px auto 40px;font-size:26.25px;line-height:1.5}.lovi-editorial-intro{font-size:28px}.site-footer{font-size:16px}.page-intro{margin-bottom:28px;padding-bottom:24px}h1{font-size:43.75px}h2{font-size:35px}
 .home-card{display:flex;flex-direction:column;padding:16px;gap:24px}.main-skills{font-size:29.75px}.home-portrait{width:100%;height:auto;aspect-ratio:310/460;object-fit:cover}.home-motto{padding:0}.home-motto h2:first-child{font-size:70px}.home-motto h2:last-child{font-size:35px}.home-values{align-self:stretch;font-size:28px}.home-contact{font-size:26.25px}.social-links{margin-top:20px;gap:20px}.social-links img{width:32px;height:32px}.downloads{align-self:stretch;padding:18px 12px;gap:24px 12px}.downloads h2{font-size:35px}.downloads a{font-size:19.25px}.downloads img{width:63px;height:70px}.home-search{margin-top:28px;padding:20px}.home-search h2{font-size:29.75px}.home-search p{font-size:28px}.home-columns{display:block;font-size:26.25px;line-height:1.35;margin-top:30px}.home-columns>section{margin-bottom:28px}.home-columns>section+section{padding:24px 0 0;border-top:1px solid var(--line)}.home-columns>section+section:before{display:none}.home-columns>section>p:first-child{font-size:29.75px}.attribution{font-size:19.25px;margin-top:32px}
 .cv-intro{display:flex;flex-direction:column;gap:28px;padding:20px}.history-entry,.izm-entry{grid-template-columns:minmax(0,1fr);gap:22px;margin-bottom:38px}.logo-surface:empty{display:none}.logo-surface{justify-self:center}.entry-text h2{font-size:33.25px}.entry-text h2~h2{font-size:29.75px}.product-entry{grid-template-columns:minmax(0,1fr);gap:20px}.page-products main{font-size:28px}.product-entry h2{font-size:38.5px}.product-status{margin:8px 0 0;display:block}.testimonials{display:block}.testimonial{margin-bottom:36px;scroll-margin-top:112px;padding:5px}.lovi-varia-writing{grid-template-columns:minmax(0,1fr);gap:20px}.lovi-electronics-photos{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.lovi-electronics-photos img{height:140px}#elscint{scroll-margin-top:112px}.contact-layout{grid-template-columns:minmax(0,1fr);gap:32px}.contact-details{font-size:28px}#contact-form input,#contact-form textarea{font-size:28px}#contact-form input{padding-left:0;padding-right:0}#contact-form h2{font-size:35px}#contact-verification{max-width:100%}#lovi-hub .save-contact{display:flex;justify-content:center;margin-bottom:18px}#lovi-hub .row:has(.demo){flex-wrap:wrap}#lovi-hub .row:has(.demo) .card{flex-basis:100%}#lovi-hub .demo{justify-content:center;flex:1}
}
.home-portrait{overflow:hidden}.home-portrait img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.38);transform-origin:50% 24%}.muted{color:#929292}
.home-contact>p{position:relative;padding-left:24px}.home-contact>p:before{content:'';position:absolute;left:0;top:.25em;width:15px;height:15px;background:center/contain no-repeat}.home-contact>p:nth-of-type(1):before{background-image:url('/files/index/035244_dd24ef2039b2445898494772793733a4~mv2.png')}.home-contact>p:nth-of-type(2):before{background-image:url('/files/index/035244_19984e4b06dc4b148048731e3dcf1011~mv2.png')}.home-contact>p:nth-of-type(3):before{background-image:url('/files/index/035244_6af9c4421a85482ca71b02dc782a276a~mv2.png')}.dark .home-contact>p:before{filter:brightness(0) invert(.8)}
.activity-nav{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:30px}.page-activities [id^="acts-"]{scroll-margin-top:220px;margin-top:36px}.page-activities #acts-sql p{font-family:monospace;white-space:normal}
@media(prefers-reduced-motion:reduce){.arrival-highlight{animation-timing-function:step-end}}
[hidden]{display:none!important}
.activity-nav [role=tab]{padding:8px 12px;border:1px solid var(--line);border-radius:4px;text-decoration:none}
.activity-nav [aria-selected=true]{border-color:var(--green);box-shadow:inset 0 -3px var(--green)}
.activity-image{display:inline-block;max-width:calc(100% - 24px);vertical-align:top;cursor:zoom-in;margin:12px}
.page-activities main .activity-image img{display:block;max-width:100%;margin:0}
.activity-lightbox{padding:16px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;max-width:94vw;max-height:94vh}
.activity-lightbox::backdrop{background:rgba(0,0,0,.8)}
.activity-lightbox button{display:block;margin-left:auto;padding:8px 14px;font:inherit;color:inherit;background:var(--page);border:1px solid var(--line);cursor:pointer}
.activity-lightbox figure{margin:12px 0 0}
.activity-lightbox img{display:block;max-width:85vw;max-height:75vh;object-fit:contain}
/* LCE archive: a linked project detail page, outside the main menu. */
.lce-back{margin-bottom:24px}.lce-section{margin:36px 0;padding-bottom:32px;border-bottom:1px solid var(--line)}.lce-section h2{color:var(--green)}.lce-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 28px}.lce-figure{margin:24px 0}.lce-gallery .lce-figure{margin:0}.lce-figure .activity-image{display:block;max-width:100%;margin:0 0 12px;border:1px solid var(--line);border-radius:4px;overflow:hidden}.lce-figure img{display:block;width:100%;height:auto}.lce-figure figcaption{line-height:1.5}.lce-figure strong{font-weight:400;color:var(--green)}.lce-diagram{max-width:620px;margin:28px auto}.lce-small{max-width:480px;margin:36px auto}.lce-medium{max-width:680px;margin:32px auto}.lce-note{font-size:.9em}.lce-document{margin:26px 0 0}.lce-return{display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px}.page-lce .activity-lightbox{width:94vw}.page-lce .activity-lightbox img{margin:auto;max-width:100%;max-height:none}.page-lce .activity-lightbox button{position:sticky;top:0;z-index:1}
@media(max-width:749px){.lce-gallery{grid-template-columns:minmax(0,1fr);gap:28px}.lce-section{margin-top:28px}.lce-return{flex-direction:column}.page-lce .activity-lightbox{padding:8px}.page-lce .activity-lightbox img{width:auto;max-width:none;max-height:75vh}}

/* Shared introduction panel across the main portfolio pages. */
:is(.page-cv,.page-projects,.page-products,.page-testimonies,.page-varia) :is(.cv-intro,.page-intro){display:block;padding:32px;background:var(--panel);border:1px solid var(--line);border-radius:5px;margin-bottom:34px}
@media(max-width:749px){:is(.page-cv,.page-projects,.page-products,.page-testimonies,.page-varia) :is(.cv-intro,.page-intro){padding:20px}}
