/* These values belong to the visual surface, not its text/image descendants.
 * Non-inherited properties keep scroll updates local to that surface. */
@property --mors-scroll-y{syntax:"<length>";inherits:false;initial-value:0px}
@property --mors-scroll-scale{syntax:"<number>";inherits:false;initial-value:1}
@font-face{font-family:"Space Grotesk";src:url("./assets/space-grotesk-variable.ttf") format("truetype");font-weight:300 700;font-style:normal;font-display:swap}
@font-face{font-family:"Mors Nebula";src:url("./assets/nebula.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Mors Conthrax";src:url("./assets/conthrax.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Mors Inter";src:url("./assets/inter-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Mors Inter";src:url("./assets/inter-400-italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Mors Inter";src:url("./assets/inter-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Mors Open Sans";src:url("./assets/open-sans-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Mors Open Sans";src:url("./assets/open-sans-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}

/* Independent island: Framer retains ownership of #main and its route tree. */
body{--mors-page-height:max(800px,100vh)}
#mors-hero{--mors-ui-ink:#f5f2ef;--mors-ui-line:#ffffff40;--mors-action-bg:#130f0dcc;--mors-action-fill:#ff3d3d;--mors-action-ink:#201713;--mors-portrait-size:min(95vh,90vw);--mors-portrait-center:76%;display:none;position:absolute;inset:0 0 auto;z-index:auto;width:100%;height:var(--mors-page-height);padding:0 120px;isolation:auto;overflow:visible;background:transparent;color:#fff;font-family:"Mors Inter",Inter,sans-serif;font-size:16px;line-height:1.6;color-scheme:dark}
body:has(#main main.framer-1yym52n>#hero) #mors-hero{display:flex;align-items:center;justify-content:center}
/* Keep navigation outside the moving surface: fixed controls and layout
 * measurements retain the original Hero rectangle while its visual recedes. */
#mors-hero .mors-scroll-surface{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:inherit;isolation:isolate;overflow:clip;background:#130f0d;transform-origin:center center;transform:translate3d(0,var(--mors-scroll-y,0px),0) scale(var(--mors-scroll-scale,1))}
body:has(#main main.framer-1yym52n>#hero) #main nav.framer-1abknys{visibility:hidden!important;pointer-events:none!important}
#main main.framer-1yym52n>#hero{height:var(--mors-page-height)!important;min-height:var(--mors-page-height)!important;visibility:hidden!important;pointer-events:none!important}
#mors-hero *,#mors-hero *::before,#mors-hero *::after{box-sizing:border-box}
#mors-hero :is(h1,h2,p){margin:0}
#mors-hero :is(a,button){font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}
#mors-hero a{text-decoration:none}
#mors-hero button{cursor:pointer;border:0}
#mors-hero :focus-visible{outline:2px solid #ff3d3d;outline-offset:6px}
/* Transparent portraits share one registered frame; fluid remains full-width. */
#mors-hero .mors-scene{position:absolute;inset:0 0 auto;width:100%;height:100vh;overflow:clip;z-index:0;background:linear-gradient(to bottom,#270d0e 0%,#230d0d 10%,#1d0d0d 25%,#160d0e 50%,#120e0d 75%)}
#mors-hero .mors-poster{--mors-portrait-scale:1;--mors-portrait-x:0;--mors-portrait-y:0;position:absolute;left:calc(var(--mors-portrait-center) - var(--mors-portrait-size)/2 + var(--mors-portrait-size)*var(--mors-portrait-x));top:calc(100% - var(--mors-portrait-size) + var(--mors-portrait-size)*var(--mors-portrait-y));width:calc(var(--mors-portrait-size)*var(--mors-portrait-scale));height:calc(var(--mors-portrait-size)*var(--mors-portrait-scale));max-width:none;object-fit:contain;user-select:none;pointer-events:none}
#mors-hero[data-theme="light"] .mors-poster{--mors-portrait-scale:1.28;--mors-portrait-x:-.133;--mors-portrait-y:.06}
#mors-hero .mors-scene:has(>[data-mors-layer="base"])>.mors-poster{visibility:hidden}
/* The cutout alpha carries a narrow rim and a restrained outer halo.
 * Filter only portrait images, never the full-viewport liquid canvas. */
#mors-hero .mors-poster,#mors-hero .mors-scene>img[data-mors-layer="base"]{filter:drop-shadow(0 0 2px rgb(255 61 61 / .55)) drop-shadow(0 0 8px rgb(255 61 61 / .20))}
#mors-hero .mors-content{position:relative;width:100%;max-width:1200px;height:100%}
/* Glass keeps the compact menu centred independently of the right actions. */
#mors-hero .mors-header{--mors-header-muted:#c6bfbc;position:absolute;top:28px;inset-inline:0;width:calc(100% - 64px);max-width:1120px;margin-inline:auto;display:flex;align-items:center;justify-content:flex-end;gap:24px;padding:12px 18px;border:1px solid #ffffff24;border-radius:18px;background:rgb(28 25 25 / .7);color:#f5f2ef;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 12px 36px #00000018,inset 0 1px 0 #ffffff0a;z-index:30;mix-blend-mode:normal}
#mors-hero[data-theme="light"] .mors-header{--mors-header-muted:#686460;border-color:#2017131a;background:rgb(251 251 250 / .7);color:#171313;box-shadow:0 12px 36px #2017130d,inset 0 1px 0 #ffffff80}
/* Below Hero, the existing header returns on an intentional upward scroll.
 * Fixed positioning keeps the portrait/copy's X-Ray blend context untouched. */
#mors-hero .mors-header[data-mors-position="floating"]{position:fixed;transition:transform .24s cubic-bezier(.2,.75,.25,1),opacity .2s ease,visibility 0s .24s;transform:translateY(calc(-100% - 40px));opacity:0;visibility:hidden;pointer-events:none}
#mors-hero .mors-header[data-mors-position="floating"][data-mors-visibility="visible"]{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}
#mors-hero .mors-nav{position:absolute;top:50%;inset-inline:0;display:flex;align-items:center;justify-content:center;width:max-content;margin-inline:auto;transform:translateY(-50%);gap:42px;min-width:0;color:var(--mors-header-muted);font-family:"Space Grotesk",sans-serif;font-size:16px;font-weight:500;line-height:25px;letter-spacing:.04em;text-transform:uppercase}
#mors-hero .mors-nav a{white-space:nowrap;text-align:center}
#mors-hero :is(.mors-nav,.mors-menu nav) a{position:relative;width:max-content;transition:color .2s}
#mors-hero :is(.mors-nav,.mors-menu nav) a::after{content:"";position:absolute;inset-inline:0;bottom:-4px;height:2px;border-radius:2px;background:var(--mors-action-fill);transform:scaleX(0);transform-origin:left;transition:transform .25s cubic-bezier(.2,.65,.3,1);pointer-events:none}
#mors-hero :is(.mors-nav,.mors-menu nav) a:is(:hover,:focus-visible,[aria-current="location"]){color:var(--mors-action-fill)}
#mors-hero :is(.mors-nav,.mors-menu nav) a:is(:hover,:focus-visible,[aria-current="location"])::after{transform:scaleX(1)}
#mors-hero .mors-nav-indicator{position:absolute;top:calc(100% + 4px);left:0;width:1px;height:2px;background:var(--mors-action-fill);transform-origin:left center;opacity:0;pointer-events:none}
#mors-hero .mors-nav[data-mors-indicator="ready"] a::after{content:none}
#mors-hero .mors-nav-actions{display:flex;align-items:center;justify-content:flex-end;margin-inline-start:auto;gap:10px;min-width:0}
#mors-hero .mors-contact{flex-shrink:0;padding:10px 20px;border:1px solid currentColor;border-radius:14px;background:transparent;color:inherit;font-family:"Space Grotesk",sans-serif;font-weight:600;font-size:16px;line-height:1;letter-spacing:.02em;white-space:nowrap;transition:background .2s,color .2s,border-color .2s}
#mors-hero .mors-contact:hover{background:#ff3d3d;border-color:#ff3d3d;color:white}
#mors-hero .mors-developer{display:flex;align-items:center;justify-content:center;font-family:"Mors Nebula",sans-serif;font-weight:400;font-size:154px;line-height:1.2;letter-spacing:0;white-space:nowrap;text-transform:none}
/* Center the entire copy group without a transform/stacking context: the
 * title still blends directly with the full-width X-Ray backdrop. */
#mors-hero .mors-copy{position:absolute;inset:0 auto 0 0;display:flex;flex-direction:column;justify-content:center;gap:24px;width:54%;max-width:640px}
#mors-hero .mors-greeting{font-size:clamp(22px,2vw,30px);font-weight:600;line-height:1.3}
#mors-hero[data-theme="light"] .mors-greeting .mors-accent{color:#c92d42}
#mors-hero .mors-intro{position:relative;display:grid;width:100%;font-family:"Mors Nebula",sans-serif;font-size:clamp(42px,4vw,60px);font-weight:400;line-height:1.25;letter-spacing:0;white-space:normal;overflow-wrap:anywhere;text-transform:none}
#mors-hero .mors-title-size,#mors-hero .mors-title-live{grid-area:1/1;min-width:0}
#mors-hero .mors-title-size{visibility:hidden;pointer-events:none}
#mors-hero .mors-type-cursor{display:inline-block;position:relative;z-index:10;width:3px;height:.6em;margin-left:.08em;background:#ff3d3d;vertical-align:-.02em;animation:mors-caret 1s steps(1,end) infinite}
@keyframes mors-caret{0%,49%{opacity:1}50%,100%{opacity:0}}
#mors-hero .mors-developer{position:absolute;bottom:38px;left:0;right:0;gap:3px}
#mors-hero .mors-invert{position:relative;z-index:10;color:#fff;mix-blend-mode:difference}
#mors-hero .mors-accent{position:relative;z-index:10;color:#ff3d3d}
#mors-hero .mors-description{position:relative;width:100%;max-width:430px;z-index:10;font-size:16px;font-style:italic;font-weight:400;line-height:1.6;letter-spacing:-.02em;color:#a3a0a0}
/* Clear next steps, independent of the full-width portrait reveal. */
#mors-hero .mors-actions{position:relative;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:12px}
#mors-hero .mors-action{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 18px;border:1px solid var(--mors-ui-line);border-radius:10px;background:var(--mors-action-bg);color:var(--mors-ui-ink);font:600 15px/1.3 "Space Grotesk",sans-serif;letter-spacing:.01em;white-space:nowrap;transition:color .2s ease,border-color .2s ease}
#mors-hero .mors-action::before{position:absolute;inset:0;z-index:0;background:var(--mors-action-fill);transform:scaleX(0);transform-origin:left center;transition:transform .55s ease;pointer-events:none;content:""}
#mors-hero .mors-action>:is(svg,span){position:relative;z-index:1}
#mors-hero .mors-action>svg{display:block;flex:none;width:18px;height:18px}
#mors-hero .mors-action-primary{border-color:var(--mors-action-fill);color:var(--mors-action-fill)}
#mors-hero .mors-action:is(:hover,:focus-visible){border-color:var(--mors-action-fill);color:var(--mors-action-ink)}
#mors-hero .mors-action:is(:hover,:focus-visible)::before{transform:scaleX(1)}
/* Individual elements enter briefly; the copy/intro retain their blend context. */
#mors-hero .mors-greeting{animation:mors-enter-copy 380ms cubic-bezier(.2,.65,.3,1) backwards}
#mors-hero .mors-description{animation:mors-enter-copy 380ms cubic-bezier(.2,.65,.3,1) 70ms backwards}
#mors-hero .mors-actions{animation:mors-enter-copy 380ms cubic-bezier(.2,.65,.3,1) 140ms backwards}
#mors-hero .mors-scene{animation:mors-enter-scene 480ms ease-out backwards}
@keyframes mors-enter-copy{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes mors-enter-scene{from{opacity:0}to{opacity:1}}
#mors-hero .mors-stat{position:absolute;right:0;display:flex;align-items:center;gap:8px;width:max-content;border:0;box-shadow:inset 0 0 0 1px #737373;border-radius:40px;padding:13px 30px;z-index:10;background:black;color:#fff;font-family:"Mors Open Sans",sans-serif;font-size:14px;line-height:1.4;transition:background .4s,color .4s,box-shadow .4s}
#mors-hero .mors-stat-experience{bottom:553px}
#mors-hero .mors-stat-projects{bottom:456px;right:84px}
#mors-hero .mors-stat-interfaces{bottom:360px}
#mors-hero .mors-number{font-family:"Mors Conthrax",sans-serif;font-size:36px;font-weight:600;line-height:1.1;letter-spacing:0;color:#ff3d3d;transition:color .4s}
#mors-hero .mors-stat:hover{background:#ff3d3d;color:#000;box-shadow:inset 0 0 0 1px #ff3d3d}
#mors-hero .mors-stat:hover .mors-number{color:white}
#mors-hero .mors-launch{position:absolute;right:0;bottom:264px;display:flex;align-items:center;gap:8px;width:max-content;padding:7px 8px 7px 20px;border-radius:40px;background:#fff;color:#050505;z-index:10;mix-blend-mode:difference;font-family:"Mors Open Sans",sans-serif;font-size:13px;font-weight:600;line-height:1;letter-spacing:.02em}
#mors-hero .mors-launch-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:22px;height:22px;border-radius:100%;background:#000;color:#fff;transition:width .2s cubic-bezier(.2,0,0,1),height .2s cubic-bezier(.2,0,0,1)}
#mors-hero .mors-launch-icon svg{width:13px;height:13px;transition:width .2s cubic-bezier(.2,0,0,1),height .2s cubic-bezier(.2,0,0,1)}
#mors-hero .mors-launch:hover .mors-launch-icon{width:26px;height:26px}
#mors-hero .mors-launch:hover .mors-launch-icon svg{width:20px;height:20px}
#mors-hero .mors-theme-toggle{position:relative;inset:auto;flex-shrink:0;display:flex;align-items:center;justify-content:center;width:42px;height:42px;margin:0;padding:0;border:1px solid #ffffff16;border-radius:12px;background:transparent;color:inherit;mix-blend-mode:normal}
#mors-hero[data-theme="light"] .mors-theme-toggle{border-color:#20171312}
#mors-hero .mors-theme-toggle svg,#mors-hero .mors-menu-theme svg{display:block;flex:none;width:24px;height:24px}
#mors-hero[data-theme="dark"] .mors-theme-icon-sun,
#mors-hero[data-theme="light"] .mors-theme-icon-moon{display:none}
#mors-hero .mors-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
#mors-hero .mors-menu-toggle,#mors-hero .mors-visual-spacer{display:none}
#mors-hero .mors-menu{overflow-y:auto;overscroll-behavior:contain;position:fixed;inset:0 0 0 auto;width:min(320px,100%);height:100%;max-height:none;max-width:100%;margin:0;padding:30px 26px;border:1px solid #ffffff1a;background:#050505b8;backdrop-filter:blur(18px);color:#ecf2f3;font:16px/1.6 "Space Grotesk",sans-serif}
#mors-hero .mors-menu::backdrop{background:transparent}
#mors-hero .mors-menu[open]{display:flex;flex-direction:column;gap:32px;animation:mors-menu-in .3s cubic-bezier(.2,.8,.25,1.15)}
#mors-hero .mors-menu-head{display:flex;align-items:center;justify-content:space-between;font-family:"Space Grotesk",sans-serif;font-weight:600;font-size:15px;order:0}
#mors-hero .mors-menu-close{width:42px;height:42px;border:1px solid #ffffff1a;border-radius:50%;background:#ffffff0d;color:white;font-size:30px;line-height:1}
#mors-hero .mors-menu nav{display:flex;flex-direction:column;flex-shrink:0;gap:12px;order:1}
#mors-hero .mors-menu nav a{font-family:"Space Grotesk",sans-serif;font-size:24px;font-weight:500;line-height:1.25;padding:0}
#mors-hero .mors-menu-theme{display:flex;align-items:center;justify-content:center;align-self:flex-start;width:50px;height:50px;flex-shrink:0;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;order:3;margin-top:auto}
/* Match Contact Me feedback on the theme buttons, including touch and keyboard. */
#mors-hero :is(.mors-theme-toggle,.mors-menu-theme){transition:background .2s,color .2s,border-color .2s}
#mors-hero :is(.mors-theme-toggle,.mors-menu-theme):is(:hover,:focus-visible,:active){background:#ff3d3d;border-color:#ff3d3d;color:#fff}
#mors-hero .mors-menu-contact{display:flex;justify-content:center;gap:10px;padding:12px 18px;background:#fff;color:#050505;border-radius:40px;font-size:13px;line-height:18px;font-weight:600;order:2}
#mors-hero[data-theme="light"]{--mors-ui-ink:#171313;--mors-ui-line:#17131340;--mors-action-bg:#f5f5f5df;--mors-action-fill:#c92d42;--mors-action-ink:#fff;background:transparent;color-scheme:light}
#mors-hero[data-theme="light"] .mors-scroll-surface{background:#f5f5f5}
#mors-hero[data-theme="light"] .mors-scene{background:#f5f5f5}
#mors-hero[data-theme="light"] .mors-stat{background:transparent;color:#111}
#mors-hero[data-theme="light"] .mors-stat:hover{background:#ff3d3d;color:#111}
#mors-hero[data-theme="light"] .mors-menu{background:#f5f5f5;color:#141212}
#mors-hero[data-theme="light"] .mors-menu nav a{border-color:#0003}
#mors-hero[data-theme="light"] .mors-menu-close{color:#111;border-color:#0003;background:#0000000d}
@keyframes mors-menu-in{from{transform:translateX(80px);opacity:0}to{transform:none;opacity:1}}
@media(max-width:1199.98px){
 #mors-hero .mors-header{inset-inline:0;width:max-content;max-width:calc(100% - 64px);display:flex;gap:0}
 #mors-hero .mors-nav,#mors-hero .mors-contact{display:none}
 #mors-hero .mors-menu-toggle{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;flex:none;width:42px;height:42px;padding:0;border:1px solid currentColor;border-radius:12px;background:transparent;color:inherit}
 #mors-hero .mors-menu-toggle span{display:block;width:16px;height:1.4px;background:currentColor;border-radius:2px}
}
@media(min-width:810px) and (max-width:1439.98px){
 body{--mors-page-height:max(900px,100vh)}
 #mors-hero{--mors-portrait-size:min(855px,90vw);padding:0 48px}
 #mors-hero .mors-scene{height:900px}
 #mors-hero .mors-content{max-width:714px}
 #mors-hero .mors-copy{width:62%;max-width:460px}
 #mors-hero .mors-intro{font-size:44px}
 #mors-hero .mors-developer{bottom:58px;font-size:91px;line-height:1.08}
 #mors-hero .mors-developer .mors-accent{font-size:90px}
 #mors-hero .mors-description{font-size:15px}
 #mors-hero .mors-stat-experience{bottom:610px}
 #mors-hero .mors-stat-projects{bottom:500px;right:46px}
 #mors-hero .mors-stat-interfaces{bottom:390px}
 #mors-hero .mors-launch{bottom:285px}
}
@media(max-width:809.98px){
 body{--mors-page-height:max(980px,100vh)}
 #mors-hero{--mors-portrait-size:min(63.075vh,145vw);--mors-portrait-center:50%;padding:0 18px 16px}
 #mors-hero .mors-scene{top:auto;bottom:0;height:108.75vh}
 #mors-hero .mors-content{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:12px;max-width:354px;height:100%;padding-top:44px}
 /* One continuous backdrop removes the hard edge above the shorter scene;
  * its height and portrait registration stay unchanged. */
 #mors-hero:not([data-theme="light"]) .mors-scroll-surface{background:linear-gradient(to bottom,#270d0e 0%,#230d0d 10%,#1d0d0d 25%,#160d0e 50%,#120e0d 75%)}
 #mors-hero .mors-scene{background:transparent}
 #mors-hero .mors-header{top:max(16px,env(safe-area-inset-top,0px));inset-inline:0;width:calc(100% - 32px);max-width:420px;gap:0;padding:10px;border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
 /* Entering the floating hidden state must not flash at the viewport top. */
 #mors-hero .mors-header[data-mors-position="floating"]{transition:none}
 #mors-hero .mors-header[data-mors-position="floating"][data-mors-visibility="visible"]{transition:transform .24s cubic-bezier(.2,.75,.25,1),opacity .2s ease}
 #mors-hero .mors-nav-actions{width:100%;margin-inline-start:0;justify-content:space-between;gap:12px}
 #mors-hero .mors-contact{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 14px;font-size:14px}
 #mors-hero .mors-developer{position:relative;inset:auto;width:100%;justify-content:flex-start;font-size:clamp(30px,calc(12.43vw - 4.48px),44px);line-height:1.05}
 #mors-hero .mors-copy{top:128px;bottom:50%;width:100%;max-width:none;gap:20px}
 #mors-hero .mors-intro{font-size:clamp(26px,8.2vw,32px)}
 #mors-hero .mors-developer{order:2;gap:2px}
 #mors-hero .mors-invert{mix-blend-mode:normal;color:#fff}
 #mors-hero .mors-description{font-size:14px;line-height:1.5}
 #mors-hero .mors-actions{gap:10px}
 #mors-hero .mors-action{gap:6px;padding-inline:10px;font-size:14px}
 #mors-hero .mors-action>svg{width:16px;height:16px}
 #mors-hero .mors-visual-spacer{display:block;order:4;width:100%;height:auto;min-height:0;flex:1}
 #mors-hero .mors-stat{position:relative;inset:auto;width:100%;flex:none}
 #mors-hero .mors-stat-experience{order:5}
 #mors-hero .mors-stat-projects{order:6}
 #mors-hero .mors-stat-interfaces{order:7}
 #mors-hero .mors-launch{position:relative;inset:auto;order:8;justify-content:space-between;width:100%;mix-blend-mode:normal}
 #mors-hero[data-theme="light"] .mors-invert{color:#101010}
 #mors-hero[data-theme="light"] .mors-launch{background:#101010;color:#ecf2f3}
 #mors-hero[data-theme="light"] .mors-launch-icon{background:#ecf2f3;color:#101010}
}
@media(prefers-reduced-motion:reduce){#mors-hero .mors-scroll-surface{transform:none}#mors-hero *,#mors-hero *::before,#mors-hero *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Only theme switches use the root snapshots; route transitions keep their styles. */
html.mors-theme-transition::view-transition-group(root){animation:none}
html.mors-theme-transition::view-transition-old(root),
html.mors-theme-transition::view-transition-new(root){animation:none;mix-blend-mode:normal}
html.mors-theme-transition::view-transition-old(root){z-index:1}
html.mors-theme-transition::view-transition-new(root){z-index:2}
html.mors-theme-transition::view-transition-image-pair(root){isolation:isolate}
