:root{--ink:#173f35;--muted:#536d64;--bg:#e9efea;--line:rgba(54,91,76,.16);--glass:rgba(255,255,255,.28);--highlight:rgba(255,255,255,.9);--shadow:rgba(44,77,62,.08);--accent:#356c58;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:118px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.22;z-index:-1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.15' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:5px}a,button{position:relative}a,button,.glass{transition:background .25s,box-shadow .25s,transform .3s,border-color .25s}p{color:var(--muted)}.ambient{position:absolute;z-index:-2;inset:0 0 auto;height:1200px;background:radial-gradient(ellipse at 78% 15%,#e6ebe0 0,transparent 48%),radial-gradient(ellipse at 10% 17%,#faf8ee 0,transparent 58%),radial-gradient(ellipse at 83% 57%,#c5e0d3 0,transparent 45%);pointer-events:none}.glass{background:linear-gradient(130deg,rgba(255,255,255,.48),var(--glass) 48%,rgba(255,255,255,.12));border:1px solid var(--highlight);box-shadow:inset 0 1px 1px var(--highlight),inset 0 -1px 1px rgba(79,110,91,.08),0 12px 36px var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.glass-control{background:linear-gradient(140deg,rgba(255,255,255,.65),rgba(255,255,255,.16));border:1px solid var(--highlight);box-shadow:inset 0 1px 1px var(--highlight),0 4px 12px var(--shadow)}.site-header{max-width:1180px;position:relative;margin:28px auto 0;padding:13px 18px;border-radius:24px;display:flex;align-items:center;justify-content:space-between;z-index:10}.brand{display:flex;gap:10px;align-items:center;padding:0 7px}.brand-icon{font:italic 38px var(--serif);line-height:1}.brand-name{font-size:12px;line-height:1.2;font-weight:600;letter-spacing:.2px}.brand-name small{font-size:8px;letter-spacing:2px}.desktop-nav{display:flex;gap:35px;font-size:12px}.desktop-nav a{padding:10px 2px}.desktop-nav a:after{content:"";position:absolute;bottom:3px;left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transition:transform .3s}.desktop-nav a:hover:after{transform:scaleX(1)}.header-actions{display:flex;align-items:center;gap:9px}.theme-button,.menu-button{width:39px;height:39px;display:grid;place-content:center;border-radius:50%}.header-github{font-size:11px;padding:9px 17px;border-radius:30px}.header-github span{margin-left:14px}.menu-button{display:none}.mobile-nav{position:absolute;top:calc(100% + 8px);right:0;left:0;padding:12px;border-radius:22px}.mobile-nav a{display:block;padding:15px;border-radius:14px;font-size:15px}.mobile-nav a:hover{background:rgba(255,255,255,.4)}main{max-width:1140px;margin:auto}.hero{min-height:660px;display:grid;grid-template-columns:1.15fr 1fr;align-items:center;position:relative}.hero-copy{padding:54px 0 42px}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:600;display:flex;align-items:center;gap:10px}.tiny-dot{height:6px;width:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px rgba(82,131,100,.08)}.edition{color:var(--muted);margin-left:15px;letter-spacing:1px}h1{font-family:var(--serif);font-size:clamp(65px,7.7vw,107px);line-height:1.01;font-weight:400;letter-spacing:-5px;margin:30px 0 25px;text-shadow:0 2px 1px rgba(255,255,255,.7)}h1 span{font-style:italic;background:linear-gradient(130deg,#1d483b 20%,#618b70 56%,#245943 90%);background-clip:text;-webkit-background-clip:text;color:transparent}.hero-intro{max-width:365px;font-size:14px;line-height:1.8;margin-bottom:28px}.hero-actions{display:flex;gap:12px}.button{display:inline-flex;align-items:center;justify-content:center;gap:23px;border-radius:40px;padding:15px 22px;font-size:11px;font-weight:500;min-height:48px;overflow:hidden}.primary{background:linear-gradient(145deg,#3b6958,#214c3c);color:#fff;border:1px solid #779889;box-shadow:inset 0 1px 1px #a4bbae,0 7px 16px rgba(32,72,52,.16)}.secondary{gap:18px}.button:hover{transform:translateY(-3px);box-shadow:0 10px 20px rgba(34,72,51,.17)}.button:active{transform:translateY(0) scale(.98)}.hero-foot{margin-top:52px;display:flex;align-items:center;gap:14px;font-size:9px;letter-spacing:.3px;color:var(--muted)}.fine-line{width:32px;height:1px;background:var(--muted);opacity:.5}.hero-art{position:relative;height:560px;display:flex;align-items:center;justify-content:center}.floating-note{position:absolute;left:9%;bottom:60px;border-radius:20px;display:flex;align-items:center;gap:14px;padding:17px 20px;min-width:242px;transform:rotate(-5deg);font-size:12px;line-height:1.6}.floating-note strong{font-weight:400;color:var(--muted);font-size:10px}.note-orb{width:35px;height:35px;border-radius:50%;background:radial-gradient(circle at 32% 25%,white,#d4e9db 40%,#6f9988 80%,#d0e5d5);box-shadow:inset -2px -3px 6px rgba(255,255,255,.8),0 5px 9px rgba(56,103,75,.15)}.note-star{margin-left:auto;font-size:24px;color:var(--accent)}.art-index{position:absolute;right:0;bottom:38px;text-align:right;font-size:8px;letter-spacing:1.5px;line-height:1.8;color:var(--muted)}.section{padding:64px 0 48px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px}h2{font:400 48px/1.1 var(--serif);letter-spacing:-1.7px;margin:15px 0 0;text-shadow:0 1px rgba(255,255,255,.6)}.heading-dot{color:#78957b}.section-count{font-size:8px;letter-spacing:1.6px;color:var(--muted);padding-bottom:5px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.project-card{border-radius:27px;overflow:hidden;padding:13px}.project-visual{height:238px;border-radius:18px;position:relative;overflow:hidden;background:radial-gradient(circle at 22% 5%,#f7f7ed,#d4e4d9 60%,#b9d5c8);display:flex;align-items:center;justify-content:center}.project-visual:before{content:"";position:absolute;inset:14px;border:1px solid rgba(255,255,255,.45);border-radius:14px}.visual-label{position:absolute;left:27px;top:24px;font-size:8px;letter-spacing:1.8px;color:#38594b}.orbit-core{width:80px;height:80px;border-radius:50%;background:radial-gradient(circle at 32% 25%,#faffef,#b7cfc0 40%,#356753 85%);box-shadow:inset -7px -5px 14px #ecf5e3,10px 20px 25px #35675226;display:grid;place-items:center;color:#fff;font-family:var(--serif);font-size:28px;position:relative;z-index:2}.orbit-ring{width:240px;height:99px;border:1.5px solid rgba(255,255,255,.95);border-bottom-color:#7b9b84;position:absolute;border-radius:50%;transform:rotate(-28deg);box-shadow:0 1px 3px #4673591a}.orbit-ring.two{transform:rotate(45deg);width:205px;height:110px}.orbit-ring.three{transform:rotate(100deg);width:190px;height:120px;border-color:#fff8}.visual-bottom{position:absolute;bottom:22px;left:27px;font-size:8px;letter-spacing:1px;color:#456353}.visual-status{position:absolute;bottom:20px;right:25px;font-size:8px;padding:4px 9px;border-radius:12px;background:#ffffff4f;color:#355945;border:1px solid #ffffffa1}.lecture-visual{background:radial-gradient(circle at 70% 0%,#faf6ee,#e2e3dc 55%,#cddbd4)}.lecture-window{width:265px;height:148px;border:1px solid #fff;border-radius:13px;background:#f8fcf299;box-shadow:12px 15px 25px #4865531a;padding:10px;transform:rotate(-6deg)}.window-bar{display:flex;gap:4px;margin:0 0 10px}.window-bar i{width:4px;height:4px;background:#94b09a;border-radius:50%}.window-content{display:flex;gap:11px}.mini-slide{width:132px;height:93px;position:relative;border-radius:6px;background:linear-gradient(120deg,#bfd6c1,#6a9a7c);color:white;padding:14px;font-family:var(--serif);font-size:19px;line-height:1}.mini-slide small{font-family:var(--sans);font-size:5px;letter-spacing:1px;display:block;margin-bottom:8px}.slide-line{position:absolute;bottom:10px;left:14px;height:2px;width:70px;background:#fff7}.mini-notes{flex:1;padding-top:4px}.mini-notes span{display:block;height:5px;background:#a4b8a644;margin-bottom:9px;border-radius:5px}.mini-notes span:nth-child(2){width:60%}.mini-notes .active-line{background:#8caf9688;width:90%;height:16px;border:1px solid #eff8e5}.project-body{padding:24px 14px 17px}.project-category{font-size:8px;letter-spacing:1.5px;color:var(--muted);margin-bottom:12px}.project-title{font-size:21px;font-family:var(--serif);font-weight:400;letter-spacing:-.3px;margin:0 0 10px;overflow-wrap:anywhere}.project-short{font-size:12px;color:var(--ink);margin:0 0 8px}.project-description{font-size:11px;line-height:1.8;margin:0;max-width:425px}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin:20px 0}.project-tags span{border:1px solid rgba(255,255,255,.9);border-radius:20px;background:#ffffff24;padding:5px 9px;font-size:8px;box-shadow:inset 0 1px #ffffffc9}.project-link{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px;font-size:10px}.project-link .link-circle{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;font-size:16px}.project-link:hover .link-circle{transform:rotate(45deg)}.about-section{margin-top:22px;display:grid;grid-template-columns:.9fr 1.3fr;gap:95px;padding-top:75px;padding-bottom:75px}.about-heading h2{font-size:58px}.about-heading p{font-size:12px;max-width:300px;line-height:1.9;margin:24px 0 20px}.draft-tag{font-size:7px;letter-spacing:1.4px;color:var(--muted);padding:6px 8px;border:1px solid var(--line);border-radius:8px;display:inline-block}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.info-card{border-radius:22px;padding:22px;min-height:175px}.card-label{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);letter-spacing:1px}.info-card h3{font:400 24px var(--serif);margin:25px 0 10px;letter-spacing:-.5px}.info-card p{font-size:10px;line-height:1.7;margin:0;white-space:pre-line}.location-card{grid-column:1/-1;min-height:119px;display:flex;justify-content:space-between;align-items:center}.location-card h3{font-size:25px;margin:16px 0 0}.location-card svg{width:65px;height:65px;fill:none;stroke:#749984;stroke-width:.65;opacity:.7}.toolkit-section{display:flex;align-items:center;justify-content:space-between;gap:35px;padding-top:50px;padding-bottom:60px}.toolkit-section h2{font-size:38px}.toolkit-section p{font-size:10px;max-width:340px;margin:17px 0 0}.skill-pills{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.skill{padding:16px 20px;border-radius:18px;font:400 22px var(--serif)}.skill small{display:block;font:7px var(--sans);letter-spacing:1.3px;color:var(--muted);margin-top:8px}.closing-section{margin:10px 0 45px;border-radius:32px;padding:45px;position:relative;overflow:hidden}.closing-section h2{font-size:50px;margin-bottom:25px}.closing-section .eyebrow,.closing-section h2,.closing-section a{position:relative;z-index:1}.closing-orb{position:absolute;width:280px;height:280px;border-radius:50%;right:65px;top:20px;background:radial-gradient(circle at 30% 23%,#fff9,#e4eee64d 25%,#a6c7b74d 65%,#497b6540 77%,#f5fff3a1 89%,#84a68b6b);border:1px solid #fff9;box-shadow:inset 8px 7px 20px #ffffff6e,15px 15px 30px #4b6a4414}footer{max-width:1140px;margin:0 auto;padding:0 0 30px;display:flex;align-items:center;justify-content:space-between;font-size:9px;color:var(--muted)}.footer-name{font-family:var(--serif);font-size:15px;color:var(--ink)}footer a:last-child{padding:12px}.scroll-progress{position:fixed;left:0;top:0;right:0;height:2px;transform-origin:left;transform:scaleX(0);background:var(--accent);z-index:30}.loading-screen{position:fixed;inset:0;z-index:100;background:#e7efe8e8;backdrop-filter:blur(18px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:25px;transition:opacity .4s,visibility .4s;font-size:9px;letter-spacing:3px;color:#24523e;pointer-events:none}.loading-screen.loaded{opacity:0;visibility:hidden}.js .reveal{opacity:0;transform:translateY(25px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1)}.js .reveal.visible{opacity:1;transform:none}.tap-ripple{position:absolute;border:1px solid currentColor;border-radius:50%;width:10px;height:10px;pointer-events:none;opacity:.35;animation:ripple .65s ease-out forwards}.skip{position:fixed;z-index:101;left:20px;top:10px;padding:15px;background:var(--bg);transform:translateY(-150%);border-radius:12px}.skip:focus{transform:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript{padding:20px;text-align:center}.noscript a{text-decoration:underline}[hidden]{display:none!important}
[data-theme="dark"]{--ink:#e0eee2;--muted:#a2b9ad;--bg:#12261f;--line:#a8c6ad30;--glass:#b6e1be0d;--highlight:#d9e9d338;--shadow:#0002;--accent:#95c9a8;color-scheme:dark}[data-theme="dark"] .ambient{background:radial-gradient(ellipse at 70% 20%,#2f4b3b,transparent 55%),radial-gradient(ellipse at 5% 0%,#314337,transparent 60%)}[data-theme="dark"] h1,[data-theme="dark"] h2{text-shadow:0 1px #ffffff12}[data-theme="dark"] h1 span{background-image:linear-gradient(130deg,#ddeddb,#9cc3a3,#e0edcf)}[data-theme="dark"] .glass{background:linear-gradient(130deg,#cbefcf18,#9fceaf08)}[data-theme="dark"] .glass-control{background:linear-gradient(140deg,#def6db15,#bad1c408)}[data-theme="dark"] .project-tags span{background:#ffffff08;border-color:#ffffff30}[data-theme="dark"] .primary{color:#f6fff7}[data-theme="dark"] .closing-orb{opacity:.6}
@keyframes float{50%{transform:translateY(-12px) rotate(1deg)}}@keyframes loading{50%{transform:rotate(-45deg) scale(.86);opacity:.7}}@keyframes ripple{to{transform:scale(18);opacity:0}}
@media(min-width:1500px){.hero{min-height:700px}}@media(max-width:1250px){.site-header{margin:24px 40px 0}main,footer{margin-left:60px;margin-right:60px}.hero{min-height:610px}.hero-art{height:480px}.floating-note{left:2%;bottom:38px}.art-index{bottom:0}.about-section{gap:55px}h1{font-size:88px}}
@media(max-width:950px){main,footer{margin-left:35px;margin-right:35px}.site-header{margin:20px 25px 0}.hero{min-height:580px}.hero-art{height:420px}.hero-copy{padding-top:50px}h1{font-size:73px;letter-spacing:-4px}.hero-intro{font-size:12px;max-width:300px}.eyebrow{font-size:8px;letter-spacing:1.5px}.hero-actions{gap:8px}.button{font-size:10px;padding:13px 16px;gap:12px}.floating-note{min-width:205px;padding:14px;left:0;bottom:30px;font-size:11px}.hero-foot{font-size:8px}.project-visual{height:210px}.project-title{font-size:19px}.project-body{padding:20px 10px 12px}.project-description{font-size:10px}.about-section{gap:35px;grid-template-columns:.85fr 1.2fr}.about-heading h2{font-size:48px}.info-card{padding:18px}.info-card h3{font-size:21px}.info-card p{font-size:10px}.toolkit-section{gap:20px}.skill{font-size:19px;padding:14px}.closing-orb{right:10px;width:250px;height:250px}}
@media(max-width:680px){html{scroll-padding-top:25px}.site-header{margin:16px 16px 0;border-radius:21px;padding:11px 12px}.brand{padding-left:2px}.brand-icon{font-size:33px}.brand-name{font-size:11px}.brand-name small{font-size:7px;letter-spacing:1.7px}.desktop-nav{display:none}.header-github{display:none}.menu-button{display:flex;flex-direction:column;gap:5px;align-items:center;justify-content:center}.menu-button span{width:14px;height:1px;background:currentColor}.theme-button,.menu-button{height:36px;width:36px}.header-actions{gap:7px}main,footer{margin-left:24px;margin-right:24px}.hero{display:flex;flex-direction:column;min-height:unset;align-items:stretch}.hero-copy{padding:50px 0 0}.hero .eyebrow{font-size:7px;letter-spacing:1.5px}.edition{margin-left:8px}h1{font-size:clamp(64px,16vw,95px);line-height:1.04;letter-spacing:-3px;margin:24px 0 19px}.hero-intro{font-size:12px;max-width:320px;line-height:1.8;margin-bottom:22px}.hero-actions{gap:9px;flex-wrap:wrap}.button{font-size:10px;min-height:46px;padding:13px 17px}.hero-foot{margin-top:26px;font-size:8px;gap:10px}.hero-art{height:340px;width:100%;margin-top:-13px}.floating-note{left:2%;bottom:35px;min-width:211px;border-radius:17px;padding:11px 14px;font-size:11px}.note-orb{width:30px;height:30px}.floating-note strong{font-size:9px}.art-index{font-size:6px;right:0;bottom:20px;line-height:1.9}.section{padding:38px 0 35px}.section-heading{align-items:flex-end;margin-bottom:22px}.section-heading .eyebrow{font-size:6px;letter-spacing:1.3px}h2{font-size:37px;margin-top:12px;letter-spacing:-1.4px}.section-count{font-size:6px;max-width:65px;text-align:right;line-height:1.8;letter-spacing:1px}.project-grid{grid-template-columns:1fr;gap:19px}.project-card{padding:10px;border-radius:24px}.project-visual{height:210px}.project-title{font-size:23px}.project-body{padding:20px 12px 13px}.project-category{font-size:7px}.project-short{font-size:11px}.project-description{font-size:11px}.project-tags span{font-size:8px}.project-link{font-size:10px}.about-section{grid-template-columns:1fr;gap:27px;padding-top:42px;padding-bottom:40px;margin-top:0}.about-heading h2{font-size:47px}.about-heading h2 br{display:none}.about-heading p{font-size:12px;max-width:340px;margin:18px 0 16px}.about-heading .eyebrow{font-size:7px}.about-grid{gap:10px}.info-card{border-radius:19px;padding:18px 16px;min-height:166px}.info-card h3{font-size:23px}.info-card p{font-size:10px}.location-card{min-height:108px}.location-card h3{font-size:24px}.location-card svg{width:53px;height:53px}.toolkit-section{display:block;padding-top:35px;padding-bottom:35px}.toolkit-section h2{font-size:35px}.toolkit-section .eyebrow{font-size:7px}.toolkit-section p{font-size:11px;max-width:310px}.skill-pills{justify-content:flex-start;margin-top:24px;gap:9px}.skill{font-size:22px;padding:16px 19px}.skill small{font-size:6px}.closing-section{padding:28px 23px;margin-top:0;margin-bottom:26px;border-radius:24px}.closing-section .eyebrow{font-size:6px;letter-spacing:1.2px}.closing-section h2{font-size:38px;position:relative;margin-top:18px;margin-bottom:26px}.closing-orb{width:180px;height:180px;right:-69px;top:56px;opacity:.5}footer{flex-wrap:wrap;gap:10px;justify-content:space-between;padding-bottom:20px;font-size:8px}.footer-name{font-size:14px}footer>span{order:3;width:100%;font-size:8px}footer a:last-child{padding-right:0}.glass{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal{opacity:1;transform:none}.loading-screen{display:none}.tap-ripple{display:none}}

.contact-note{position:relative;z-index:1;font-size:12px;line-height:1.8;max-width:360px;margin:20px 0 25px}.location-card h3{font-size:22px;max-width:360px;line-height:1.35}.location-card{gap:18px}.location-card svg{flex-shrink:0}@media(max-width:680px){.location-card h3{font-size:21px;max-width:245px}.contact-note{font-size:11px}}

/* Layered dimensional glass: decorative only, no WebGL or external assets. */
.hero-art{perspective:1100px;isolation:isolate;--tilt-x:0deg;--tilt-y:0deg}
.depth-scene{position:relative;width:100%;height:100%;display:grid;place-items:center;transform-style:preserve-3d;transform:rotateX(var(--tilt-x)) rotateY(var(--tilt-y));transition:transform .65s cubic-bezier(.2,.8,.2,1)}
.sculpture{width:310px;height:350px;position:relative;transform-style:preserve-3d;transform:rotateX(14deg) rotateY(-24deg) rotateZ(-8deg);animation:sculpture-drift 12s ease-in-out infinite}
.glass-plane{position:absolute;inset:0;border:1px solid rgba(255,255,255,.85);border-radius:30px;background:linear-gradient(135deg,#ffffffaa,#e1f4e12b 44%,#72aa9566);box-shadow:inset 2px 2px 3px #fff9,inset -2px -2px 3px #487c6966,12px 22px 35px #3e6f5024;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);overflow:hidden;backface-visibility:visible}
.glass-plane:after{content:"";position:absolute;inset:-70%;background:linear-gradient(110deg,transparent 42%,#ffffff70 49%,transparent 56%);transform:translateX(-35%);animation:glass-sweep 10s ease-in-out infinite;pointer-events:none}
.plane-back{transform:translate3d(-46px,-25px,-65px);background:linear-gradient(145deg,#f2f8e9aa,#a2c9b666)}
.plane-middle{transform:translateZ(0);display:grid;place-items:center;background:linear-gradient(145deg,#fafff599,#83b39c66)}
.plane-front{transform:translate3d(46px,25px,65px);background:linear-gradient(140deg,#ffffff22,#cde9df12 50%,#568b7744)}
.plane-caption{position:absolute;left:25px;top:24px;font:8px var(--sans);letter-spacing:2px;color:#355c4c}
.plane-grid{position:absolute;inset:65px 24px 24px;border:1px solid #ffffff66;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 29px,#ffffff55 30px 31px);transform:rotate(-20deg)}
.sculpture-word{font:italic 78px var(--serif);letter-spacing:-5px;color:#285e47;text-shadow:1px 2px #fff9,4px 8px 8px #366c4b33}
.plane-rule{position:absolute;bottom:45px;left:28px;width:65px;height:2px;background:#fff9}
.sculpture-symbol{position:absolute;right:23px;bottom:65px;font:90px var(--serif);color:#33634f;text-shadow:1px 2px #fff8}
.plane-coordinate{position:absolute;bottom:28px;left:25px;font:7px var(--sans);letter-spacing:1.7px;color:#355c4c}
.scene-shadow{position:absolute;width:270px;height:34px;background:#28573c33;filter:blur(22px);border-radius:50%;bottom:45px;z-index:-1;animation:shadow-breathe 12s ease-in-out infinite}
.floating-note{bottom:53px;left:1%;z-index:2;animation:note-drift 9s ease-in-out infinite}
.loading-cube{width:40px;height:40px;transform:rotate(-15deg);border:1px solid #fff;border-radius:10px;background:linear-gradient(130deg,#fff9,#719c7a77);box-shadow:7px 7px 0 #a6c7b655,14px 14px 0 #91b39c33;animation:cube-breathe 1.8s ease-in-out infinite}
.contact-address{display:inline-block;margin:0 0 0 20px;font-size:13px;text-decoration:underline;text-underline-offset:5px;overflow-wrap:anywhere;position:relative;z-index:1}.email-hint{position:relative;font-size:10px;margin-top:16px;z-index:1}
.project-card{transform-style:preserve-3d;perspective:900px;--card-rx:0deg;--card-ry:0deg}
.project-card.visible{transform:perspective(1100px) rotateX(var(--card-rx)) rotateY(var(--card-ry));transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .7s,box-shadow .4s}
.project-visual{transform:translateZ(12px)}
@media(hover:hover) and (pointer:fine){.project-card:hover{box-shadow:inset 0 1px 1px var(--highlight),0 24px 44px var(--shadow)}.info-card:hover,.skill:hover{transform:translateY(-5px);box-shadow:inset 0 1px var(--highlight),0 16px 28px var(--shadow)}.glass-control:hover{transform:translateY(-2px)}}
[data-theme="dark"] .glass-plane{background:linear-gradient(135deg,#dcffe038,#97ccaa14 44%,#2f685566);border-color:#e5ffdd66;box-shadow:inset 2px 2px 3px #fff5,inset -2px -2px 3px #0d302866,12px 22px 35px #0003}
[data-theme="dark"] .plane-caption,[data-theme="dark"] .plane-coordinate,[data-theme="dark"] .sculpture-symbol{color:#d6efd7}[data-theme="dark"] .sculpture-word{color:#d6efd7;text-shadow:1px 2px #fff2,4px 8px 8px #0003}
@keyframes sculpture-drift{0%,100%{transform:translateY(0) rotateX(14deg) rotateY(-24deg) rotateZ(-8deg)}50%{transform:translateY(-14px) rotateX(20deg) rotateY(-14deg) rotateZ(-4deg)}}
@keyframes glass-sweep{0%,20%,100%{transform:translateX(-35%)}65%,80%{transform:translateX(35%)}}
@keyframes shadow-breathe{50%{transform:scale(.85);opacity:.65}}
@keyframes note-drift{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-7px) rotate(-3deg)}}
@keyframes cube-breathe{50%{transform:translateY(-5px) rotate(-5deg);opacity:.65}}
@media(max-width:950px){.sculpture{width:245px;height:285px}.plane-front{transform:translate3d(30px,18px,45px)}.plane-back{transform:translate3d(-30px,-18px,-45px)}.sculpture-word{font-size:68px}.floating-note{bottom:24px}.scene-shadow{bottom:30px}}
@media(max-width:680px){.hero-art{height:370px;margin-top:2px}.sculpture{width:210px;height:245px}.floating-note{bottom:29px;left:2%}.scene-shadow{bottom:36px;width:220px}.plane-caption{font-size:6px;left:19px;top:20px}.plane-coordinate{font-size:5px;left:18px;letter-spacing:1px}.sculpture-symbol{font-size:65px;bottom:50px}.sculpture-word{font-size:61px}.contact-address{display:block;margin:20px 0 0;font-size:12px}.email-hint{font-size:10px}.closing-section .button{margin-top:0}}
@media(prefers-reduced-motion:reduce){.depth-scene,.project-card.visible{transform:none!important}.sculpture{animation:none!important;transform:rotateX(14deg) rotateY(-24deg) rotateZ(-8deg)}.glass-plane:after{display:none}.floating-note{animation:none!important}.info-card:hover,.skill:hover,.glass-control:hover{transform:none!important}}

/* Owner's name is the centerpiece, with extruded type and a moving glass highlight. */
.name-title{font-size:clamp(66px,6.7vw,96px);letter-spacing:-4.5px;line-height:1.08;margin-top:32px;margin-bottom:18px;perspective:700px}
.name-title>span{display:block;width:fit-content;max-width:100%;font-style:normal;color:var(--ink);background:none;text-shadow:1px 1px 0 #eff9ec,2px 2px 0 #b4cfc1,3px 3px 0 #9bbca9,4px 4px 0 #7c9d8a,5px 5px 0 #5c7e6b,8px 12px 15px #365b4222;position:relative;animation:name-light 8s ease-in-out infinite}
.name-title>span:nth-child(2){font-style:italic;animation-delay:-3s}
.name-title .name-dot{font-style:inherit;color:var(--accent);background:none}
.name-title>span:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 28%,#ffffff88 45%,transparent 60%);mix-blend-mode:soft-light;background-size:300% 100%;background-position:150% 0;clip-path:inset(0);animation:name-sheen 8s ease-in-out infinite;opacity:.5}
.hero-tagline{font:italic 24px var(--serif);color:var(--ink);margin:22px 0 15px;letter-spacing:-.4px}
[data-theme="dark"] .name-title>span{color:#e0eee2;background:none;text-shadow:1px 1px 0 #9ab6a0,2px 2px 0 #7c9c83,3px 3px 0 #59755e,4px 4px 0 #3f614a,5px 5px 0 #2f503b,8px 12px 18px #0004}
@keyframes name-light{0%,100%{filter:brightness(1)}50%{filter:brightness(1.13)}}
@keyframes name-sheen{0%,25%,100%{background-position:150% 0}65%,80%{background-position:-150% 0}}
@media(max-width:1250px){.name-title{font-size:75px;letter-spacing:-3px}}
@media(max-width:950px) and (min-width:681px){.name-title{font-size:58px;letter-spacing:-2px}}
@media(max-width:680px){.name-title{font-size:clamp(48px,13.4vw,78px);letter-spacing:-2px;margin-top:25px;line-height:1.12}.hero-tagline{font-size:22px;margin-top:17px}.name-title>span{text-shadow:1px 1px #eff9ec,2px 2px #b4cfc1,3px 3px #7c9d8a,5px 8px 12px #365b4222}}
@media(prefers-reduced-motion:reduce){.name-title>span{animation:none!important;filter:none}.name-title>span:after{display:none}}

/* Static portfolio remains readable when scripts are disabled or fail to load. */
html:not(.js) .loading-screen{display:none}

/* Fluid atmosphere: two bounded compositor layers, not an animated blur filter. */
.ambient{position:fixed;inset:0;height:100vh;overflow:hidden;contain:strict}
.fluid-cloud{position:absolute;width:min(66vw,760px);height:min(75vw,760px);border-radius:42% 58% 64% 36% / 40% 39% 61% 60%;opacity:.56;background:radial-gradient(ellipse at 40% 38%,#b4d6c9aa,transparent 66%);animation:fluid-atmosphere 22s ease-in-out infinite;will-change:transform}
.cloud-one{left:-20%;top:-20%}.cloud-two{right:-22%;top:24%;background:radial-gradient(ellipse at 50% 50%,#b0c5d199,#d4dfb755 40%,transparent 68%);animation-delay:-11s;animation-direction:reverse}
[data-theme="dark"] .fluid-cloud{opacity:.24}
.glass{box-shadow:inset 0 1px 1px var(--highlight),inset 0 -1px 1px #4f6e5b14,inset 1px 0 1px #ffffff52,0 14px 40px var(--shadow)}
.glass-plane{border-radius:38% 20% 29% 17% / 18% 29% 18% 32%;animation:liquid-contour 16s ease-in-out infinite}
.plane-middle{animation-delay:-5s}.plane-front{animation-delay:-10s}
.glass-plane:after{background:linear-gradient(110deg,transparent 38%,#ffffff80 47%,#ffffff18 52%,transparent 63%)}
.hero{padding-bottom:50px}.scroll-cue{position:absolute;bottom:12px;left:0;display:inline-flex;align-items:center;gap:12px;border-radius:26px;padding:9px 16px 9px 9px;font-size:9px;letter-spacing:1px;min-height:44px}
.scroll-cue-mark{width:26px;height:26px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:15px;animation:scroll-invite 2.6s ease-in-out infinite}
.js .reveal{transform:translate3d(0,34px,0) scale(.98);transition:opacity .85s ease var(--reveal-delay,0ms),transform .85s cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms)}
.js .reveal.visible{opacity:1;transform:none}
.js .project-card.visible{transform:perspective(1100px) rotateX(var(--card-rx)) rotateY(var(--card-ry))}
.loading-screen{animation:loader-failsafe 1.8s forwards}
.loading-cube{border-radius:38% 24% 36% 23%;animation:liquid-loader 1.5s ease-in-out infinite}
.loading-track{width:100px;height:2px;border-radius:8px;background:#356c5820;overflow:hidden;letter-spacing:0}
.loading-track>span{display:block;width:45%;height:100%;border-radius:inherit;background:#527c67;animation:loading-flow 1.1s ease-in-out infinite}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}
@keyframes fluid-atmosphere{0%,100%{transform:translate3d(0,0,0) rotate(-8deg) scale(1)}50%{transform:translate3d(10%,7%,0) rotate(18deg) scale(1.12)}}
@keyframes liquid-contour{0%,100%{border-radius:38% 20% 29% 17% / 18% 29% 18% 32%}50%{border-radius:20% 31% 17% 33% / 31% 18% 33% 18%}}
@keyframes scroll-invite{0%,100%{transform:translateY(-2px)}50%{transform:translateY(3px)}}
@keyframes liquid-loader{0%,100%{transform:rotate(-12deg);border-radius:38% 24% 36% 23%}50%{transform:rotate(10deg) scale(.9);border-radius:22% 39% 23% 37%}}
@keyframes loading-flow{0%{transform:translateX(-110%)}100%{transform:translateX(330%)}}
@keyframes loader-failsafe{0%,75%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
@media(max-width:680px){.hero{padding-bottom:64px}.scroll-cue{bottom:14px}.fluid-cloud{width:110vw;height:110vw;opacity:.4}.glass-plane{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .reveal,.js .reveal.visible{opacity:1;transform:none!important}.fluid-cloud{animation:none!important;will-change:auto}.glass-plane{animation:none!important;border-radius:30px}.loading-screen{display:none!important}.scroll-cue-mark{animation:none!important}}

.loading-screen.loaded{animation:none}

/* CINEMATIC LIQUID / motion edition: progressive enhancement, bounded layers. */
.loader-stage{position:relative;width:126px;height:126px;display:grid;place-items:center;perspective:500px}
.loading-cube{display:grid;place-items:center;width:64px;height:72px;font:italic 45px var(--serif);letter-spacing:-4px;background:linear-gradient(125deg,#ffffffdc,#9fc9b966);border:1px solid #fff;box-shadow:inset 2px 2px 8px #fff,8px 12px 30px #356c5833;color:#24523e;animation:loader-prism 2.4s ease-in-out infinite}
.loader-orbit{position:absolute;inset:0;border:1px solid #356c5833;border-top-color:#356c58;border-radius:50%;animation:orbit-loader 2s linear infinite}
.loader-orbit.orbit-b{inset:12px;animation-direction:reverse;animation-duration:2.8s;border-top-color:transparent;border-right-color:#8bbaa6}
.loader-caption{font-size:8px;letter-spacing:5px;animation:caption-breathe 1.5s ease-in-out infinite}.loader-label{font:italic 18px var(--serif);letter-spacing:.3px}.loading-screen{gap:18px;animation:loader-failsafe 2s forwards;transition:opacity .5s ease,visibility .5s ease}.loading-screen.loaded{animation:none;opacity:0;visibility:hidden}.loading-track{width:126px}
@keyframes loader-prism{0%,100%{transform:rotateX(18deg) rotateY(-25deg) rotateZ(-12deg);border-radius:28% 45% 24% 40%}50%{transform:rotateX(-18deg) rotateY(30deg) rotateZ(10deg) translateY(-5px);border-radius:42% 24% 40% 26%}}
@keyframes orbit-loader{to{transform:rotate(360deg)}}@keyframes caption-breathe{50%{opacity:.45;transform:translateY(2px)}}
/* Letter bodies are transformed, not blurred, keeping glyphs crisp on phones. */
.kinetic-type{display:inline!important;font:inherit!important;color:inherit!important;background:none!important;text-shadow:inherit!important;animation:none!important;white-space:nowrap}
.kinetic-letter{display:inline-block;font:inherit;color:inherit;text-shadow:inherit;transform-origin:50% 95%}
.js:not(.entered) .name-title .kinetic-letter{opacity:0;transform:translate3d(0,50px,0) rotateX(-85deg) rotateZ(5deg)}
.js.entered .name-title .kinetic-letter{animation:letter-arrival 1.05s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--letter)*32ms)}
@keyframes letter-arrival{0%{opacity:0;transform:translate3d(0,50px,0) rotateX(-85deg) rotateZ(5deg)}65%{opacity:1;transform:translate3d(0,-3px,0) rotateX(7deg)}100%{opacity:1;transform:none}}
.js .reveal h2 .kinetic-letter{opacity:0;transform:translateY(25px) rotateX(-65deg)}
.js .reveal.visible h2 .kinetic-letter{animation:letter-arrival .85s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--letter)*20ms)}
.js:not(.entered) .enter-layer{opacity:0;transform:translate3d(0,26px,0) rotateX(8deg)}
.js.entered .enter-layer{animation:layer-arrival 1.3s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--entry)*90ms + 100ms)}
@keyframes layer-arrival{from{opacity:0;transform:translate3d(0,26px,0) rotateX(8deg)}to{opacity:1;transform:none}}
.js .reveal{transform:perspective(1000px) translate3d(0,55px,0) rotateX(7deg) scale(.965);transform-origin:50% 20%;transition:opacity 1s ease var(--reveal-delay,0ms),transform 1.2s cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms)}
.js .reveal.visible{transform:none}
.js .project-card.visible{transform:perspective(1100px) rotateX(var(--card-rx)) rotateY(var(--card-ry))}
/* Four travelling caustics: compact corner shapes rather than spinning full-size textures. */
.project-card,.info-card,.closing-section{position:relative;isolation:isolate}
.liquid-edges{position:absolute;inset:7px;border-radius:inherit;pointer-events:none;z-index:3;overflow:hidden}
.edge-corner{position:absolute;width:36px;height:36px;border:1px solid transparent;border-top-color:#ffffffdf;border-left-color:#ffffffb3;border-radius:16px 0 0 0;opacity:.7;animation:corner-caustic 6s ease-in-out infinite;animation-delay:calc(var(--corner)*-.9s);animation-play-state:paused}
.edge-corner:nth-child(1){top:0;left:0}.edge-corner:nth-child(2){top:0;right:0;rotate:90deg}.edge-corner:nth-child(3){bottom:0;right:0;rotate:180deg}.edge-corner:nth-child(4){bottom:0;left:0;rotate:270deg}
.motion-active .edge-corner,.motion-active>.liquid-edges .edge-corner{animation-play-state:running}
@keyframes corner-caustic{0%,100%{opacity:.3;transform:translate(0,0) scale(.8)}50%{opacity:1;transform:translate(3px,3px) scale(1.1)}}
[data-theme="dark"] .edge-corner{border-top-color:#b1e0d0;border-left-color:#8cc7be88}
.project-visual{perspective:650px}.motion-active .orbit-ring{animation:orbital-precession 12s linear infinite}.motion-active .orbit-ring.two{animation-direction:reverse;animation-duration:17s}.motion-active .orbit-core{animation:core-levitate 5s ease-in-out infinite}.motion-active .lecture-window{animation:window-levitate 7s ease-in-out infinite}
@keyframes orbital-precession{0%{transform:rotateX(58deg) rotateY(-18deg) rotateZ(0)}100%{transform:rotateX(58deg) rotateY(-18deg) rotateZ(360deg)}}
@keyframes core-levitate{50%{translate:0 -8px;rotate:-6deg}}@keyframes window-levitate{50%{translate:0 -6px;rotate:1.5deg}}
.button,.glass-control,.project-link{isolation:isolate;touch-action:manipulation}
.liquid-burst{position:absolute;pointer-events:none;border-radius:42% 58% 60% 40% / 44% 41% 59% 56%;background:radial-gradient(ellipse,transparent 38%,#f4fffb75 52%,#b0e0d74d 62%,transparent 72%);border:1px solid #ffffff8c;box-shadow:inset 0 0 14px #fff5;z-index:5;max-width:200px;max-height:200px}
.button:after{content:"";position:absolute;inset:2px;border:1px solid #ffffff3b;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s}
.button:hover:after,.button:focus-visible:after{opacity:1}.button:active{border-radius:23px 30px 23px 30px}.project-link:hover .link-circle{transform:rotate(-35deg);box-shadow:0 0 0 6px #ffffff24}
@media(max-width:680px){.liquid-edges{inset:5px}.edge-corner{width:24px;height:24px}.js.entered .name-title .kinetic-letter{animation-duration:.85s}.js .reveal{transform:translate3d(0,36px,0) scale(.98)}.js .reveal.visible{transform:none}.project-card{--card-rx:0deg;--card-ry:0deg}}
@media(prefers-reduced-motion:reduce){.kinetic-letter,.enter-layer{animation:none!important;opacity:1!important;transform:none!important}.js:not(.entered) .name-title .kinetic-letter,.js:not(.entered) .enter-layer,.js .reveal h2 .kinetic-letter{opacity:1;transform:none}.edge-corner,.loader-orbit,.loading-cube,.loader-caption,.orbit-ring,.orbit-core,.lecture-window{animation:none!important}.liquid-burst{display:none}.button:active{border-radius:inherit}}

h2 .kinetic-type{white-space:normal}.name-title .kinetic-type{white-space:nowrap}

.kinetic-space{min-width:.25em;letter-spacing:0}

.about-heading h2 br{display:revert}

@font-face{font-family:'Creepster';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/creepster.ttf') format('truetype')}
/* Optional RED DEVIL edition — stylized crimson ink, not graphic imagery. */
.theme-picker{display:flex;border-radius:22px;align-items:center;min-height:39px;overflow:hidden}
.theme-picker select{font:500 11px var(--sans);color:var(--ink);background:transparent;border:0;padding:9px 22px 9px 12px;max-width:112px;min-height:39px;cursor:pointer}
.theme-picker select:focus-visible{outline:2px solid var(--accent);outline-offset:-4px;border-radius:22px}
.theme-picker option{background:var(--bg);color:var(--ink)}
.devil-edition{display:none}
html[data-theme="devil"]{--ink:#ffe3dc;--muted:#d8aaa6;--bg:#12080d;--line:#f0727040;--glass:#73172b26;--highlight:#ff8b795c;--shadow:#0008;--accent:#ff806e;color-scheme:dark}
[data-theme="devil"] .ambient{background:radial-gradient(ellipse at 85% 8%,#4f1027,transparent 54%),radial-gradient(ellipse at 8% 44%,#2d0c19,transparent 60%),#12080d}
[data-theme="devil"] .fluid-cloud{opacity:.65;background:radial-gradient(ellipse at 45% 40%,#a40c3960,transparent 66%)}
[data-theme="devil"] .cloud-two{background:radial-gradient(ellipse,#ac302d45,#6b12272a 40%,transparent 68%)}
[data-theme="devil"] .glass{background:linear-gradient(135deg,#7c263438,#38141f66 50%,#1e0b1699);border-color:#e2786657;box-shadow:inset 0 1px 1px #ffb2a338,inset 1px 0 1px #db514230,0 16px 42px #0005}
[data-theme="devil"] .glass-control{background:linear-gradient(135deg,#721f304d,#290c1c66);border-color:#f18a7559}
[data-theme="devil"] .primary{background:linear-gradient(140deg,#a0263b,#621226);border-color:#f18575;box-shadow:inset 0 1px 1px #ffb7a4,0 8px 25px #e0233333;color:#fff1e9}
[data-theme="devil"] .secondary{color:#ffe3dc}
[data-theme="devil"] .tiny-dot{background:#ff644f;box-shadow:0 0 0 4px #b91e3033,0 0 18px #e32946}
[data-theme="devil"] h1,[data-theme="devil"] h2,[data-theme="devil"] .project-title{font-family:'Creepster',Impact,'Arial Black',sans-serif;font-weight:400;text-transform:uppercase;letter-spacing:.015em;text-shadow:0 2px #390b18}
[data-theme="devil"] .name-title{font-size:clamp(60px,6.5vw,94px);line-height:1.12;letter-spacing:.005em}
[data-theme="devil"] .name-title>span{font-style:normal;color:#ffe3dc;background:none;text-shadow:1px 1px #e69380,2px 2px #a32b3c,3px 3px #771428,5px 7px 0 #350715,8px 12px 25px #0008}
[data-theme="devil"] .name-title>span:nth-child(2){color:#ff8b77}
[data-theme="devil"] .name-title>span:after{background:linear-gradient(110deg,transparent 30%,#ffb39d99 48%,transparent 62%)}
[data-theme="devil"] .kinetic-heading .kinetic-letter{transform-origin:50% 90%}
[data-theme="devil"].js.entered .name-title .kinetic-letter{animation-name:devil-arrival}
[data-theme="devil"].js .reveal.visible h2 .kinetic-letter{animation-name:devil-arrival}
@keyframes devil-arrival{0%{opacity:0;transform:translate3d(0,34px,-35px) rotateX(-75deg) rotateZ(-9deg)}65%{opacity:1;transform:translate3d(0,-4px,0) rotateX(5deg) rotateZ(2deg)}100%{opacity:1;transform:none}}
[data-theme="devil"] .heading-dot{color:#ff6857}
[data-theme="devil"] .glass-plane{background:linear-gradient(130deg,#d54d514d,#61152e66 48%,#2e0b2299);border-color:#ff9b7e88;box-shadow:inset 2px 2px 3px #ffbc9666,inset -2px -2px 4px #5a0b32,8px 18px 25px #0006}
[data-theme="devil"] .plane-caption,[data-theme="devil"] .plane-coordinate,[data-theme="devil"] .sculpture-symbol,[data-theme="devil"] .sculpture-word{color:#ffb09b;text-shadow:1px 2px #600f26}
[data-theme="devil"] .sculpture-symbol{font-family:'Creepster',Impact,'Arial Black',sans-serif}
[data-theme="devil"] .sculpture-word{font-family:'Creepster',Impact,'Arial Black',sans-serif;letter-spacing:2px}
[data-theme="devil"] .project-visual{background:radial-gradient(ellipse at 40% 10%,#7a2434,#320f21 70%);border:1px solid #ff897c26}
[data-theme="devil"] .visual-label,[data-theme="devil"] .visual-bottom{color:#f2b7ae}
[data-theme="devil"] .visual-status{color:#ffd4c8;background:#7b20354a;border-color:#ff957450}
[data-theme="devil"] .orbit-core{background:radial-gradient(circle at 32% 25%,#ffc9aa,#b82e42 42%,#410d28 85%);box-shadow:inset -7px -5px 14px #ff8c7299,10px 20px 25px #12000c88}
[data-theme="devil"] .orbit-ring{border-color:#ff867e99;border-bottom-color:#a0233b}
[data-theme="devil"] .lecture-window{background:#48162ed9;border-color:#ffb1a37a;box-shadow:12px 15px 25px #0005}
[data-theme="devil"] .mini-slide{background:linear-gradient(120deg,#d55651,#69152f);color:#fff1e9}
[data-theme="devil"] .mini-notes span{background:#eab5ac33}[data-theme="devil"] .mini-notes .active-line{background:#d15b5f66;border-color:#f5aea15c}
[data-theme="devil"] .project-tags span{background:#951c3026;border-color:#e6867552;color:#f6beb1}
[data-theme="devil"] .edge-corner{border-top-color:#ff755e;border-left-color:#eb395f99;border-radius:3px 0 0 0;filter:drop-shadow(0 0 3px #ff314966);animation-name:devil-corner}
@keyframes devil-corner{0%,100%{opacity:.45;transform:translate(0,0) scale(.8)}50%{opacity:1;transform:translate(3px,3px) scale(1.12)}}
[data-theme="devil"] .note-orb,[data-theme="devil"] .closing-orb{background:radial-gradient(circle at 30% 25%,#ffc1a0,#ae3040 40%,#4a0d2b 80%);box-shadow:inset -2px -3px 6px #ffb29066,0 5px 15px #c1203c40}
[data-theme="devil"] .scroll-progress,[data-theme="devil"] .loading-track>span{background:linear-gradient(90deg,#9c1737,#ff8064)}
[data-theme="devil"] .loading-screen{background:#140911f5;color:#ffe3dc}
[data-theme="devil"] .loading-cube{background:linear-gradient(125deg,#f2847266,#691028bb);color:#ffd2bc;border-color:#ff9d7c;box-shadow:inset 2px 2px 8px #ef7b6a55,8px 12px 30px #b91f4d44;position:relative}
[data-theme="devil"] .loading-cube:before,[data-theme="devil"] .loading-cube:after{content:"";position:absolute;top:-21px;width:19px;height:32px;border:solid #e76a66;border-width:0 4px 0 0;border-radius:0 0 90% 0;transform:rotate(25deg)}
[data-theme="devil"] .loading-cube:before{left:0;transform:scaleX(-1) rotate(25deg)}[data-theme="devil"] .loading-cube:after{right:0}
[data-theme="devil"] .loader-orbit{border-color:#7c203955;border-top-color:#ff725a}[data-theme="devil"] .loader-orbit.orbit-b{border-top-color:transparent;border-right-color:#d4435b}
[data-theme="devil"] .devil-edition{display:block;color:#ff9b82;font:12px Impact,'Arial Black',sans-serif;letter-spacing:5px}
[data-theme="devil"] .liquid-burst{border-color:#ff7c6866;background:radial-gradient(ellipse at 35% 30%,#ff8c7466 0,#b4133ed9 35%,#650c27bb 60%,transparent 73%);box-shadow:inset 0 0 15px #e4384666,0 3px 16px #850b3733}
.devil-claw{position:absolute;top:24%;left:calc(29% + var(--claw)*15%);height:43%;width:3%;background:#ffd7bccc;border-radius:80% 0 70% 0;transform:rotate(20deg);pointer-events:none}
[data-theme="devil"] .mobile-nav a:hover{background:#bd304433}
[data-theme="devil"] ::selection{background:#a82240;color:#fff}
@media(max-width:680px){.header-actions{gap:6px}.theme-picker select{font-size:10px;max-width:90px;padding-left:9px;padding-right:12px}.site-header{padding-left:10px;padding-right:10px}[data-theme="devil"] .name-title{font-size:clamp(42px,11.7vw,72px);letter-spacing:0}[data-theme="devil"] h2{font-size:40px}}
@media(max-width:370px){.header-actions{gap:5px}.theme-button,.menu-button{width:33px;height:36px}.theme-picker select{max-width:81px;padding-left:7px;padding-right:4px}}
@media(prefers-reduced-motion:reduce){[data-theme="devil"] .edge-corner,[data-theme="devil"].js.entered .name-title .kinetic-letter,[data-theme="devil"].js .reveal.visible h2 .kinetic-letter{animation:none!important;opacity:1;transform:none}}

/* Holographic visual core: a 3D CSS gyroscope, never a functional AI indicator. */
:root{--core-rgb:37,132,133;--core-bright:209,255,244;--core-deep:17,79,91}
[data-theme="dark"]{--core-rgb:103,221,230;--core-bright:225,255,255;--core-deep:14,61,76}
[data-theme="devil"]{--core-rgb:240,55,83;--core-bright:255,201,175;--core-deep:101,9,38}
.ai-core{position:absolute;width:min(96%,440px);aspect-ratio:1;z-index:3;perspective:900px;transform-style:preserve-3d;pointer-events:none;color:rgb(var(--core-rgb));transform:translateY(-18px)}
.core-aura{position:absolute;inset:1%;border-radius:50%;background:radial-gradient(circle,rgba(var(--core-rgb),.22),rgba(var(--core-rgb),.08) 40%,transparent 68%);animation:core-breathe 6s ease-in-out infinite}
.core-dial{position:absolute;inset:0;border:1px solid rgba(var(--core-rgb),.17);border-radius:50%;transform:rotate(-12deg);background:repeating-conic-gradient(from 0deg,rgba(var(--core-rgb),.34) 0deg .4deg,transparent .4deg 10deg);mask-image:radial-gradient(circle,transparent 68%,#000 68.3%);-webkit-mask-image:radial-gradient(circle,transparent 68%,#000 68.3%)}
.core-dial span{display:none}
.core-assembly{position:absolute;inset:14%;transform-style:preserve-3d;animation:core-levitate 9s ease-in-out infinite}
.core-shell{position:absolute;inset:13%;border-radius:50%;transform-style:preserve-3d;background:radial-gradient(circle at 30% 24%,rgba(var(--core-bright),.9),rgba(var(--core-rgb),.16) 18%,rgba(var(--core-deep),.6) 47%,rgba(var(--core-rgb),.85) 77%,rgba(var(--core-bright),.8) 88%,rgba(var(--core-rgb),.2));box-shadow:inset -16px -13px 24px rgba(var(--core-deep),.35),inset 3px 3px 12px rgba(var(--core-bright),.95),0 0 32px rgba(var(--core-rgb),.24),0 25px 35px rgba(var(--core-deep),.22);border:1px solid rgba(var(--core-bright),.85)}
.core-grid{position:absolute;inset:7%;border-radius:50%;transform-style:preserve-3d;animation:core-spin 24s linear infinite}
.core-grid i{position:absolute;inset:0;border:1px solid rgba(var(--core-bright),.45);border-radius:50%;transform:rotateY(calc(var(--meridian)*25.714deg))}
.core-light{position:absolute;inset:34%;border-radius:50%;background:radial-gradient(circle,#fff,rgba(var(--core-bright),.95) 12%,rgba(var(--core-rgb),.5) 45%,transparent 70%);box-shadow:0 0 32px rgba(var(--core-bright),.7);animation:core-breathe 4s ease-in-out infinite}
.core-reflection{position:absolute;inset:7% 19% 48% 12%;border-radius:50%;background:linear-gradient(130deg,#fff9,#fff0 65%);transform:rotate(-22deg)}
.core-scan{position:absolute;inset:10%;border-radius:50%;border-top:2px solid rgba(var(--core-bright),.8);border-bottom:1px solid rgba(var(--core-bright),.2);transform:rotateX(72deg);animation:core-scan 7s ease-in-out infinite}
.core-ring{position:absolute;inset:-5%;border:2px solid rgba(var(--core-rgb),.6);border-radius:50%;transform-style:preserve-3d;box-shadow:0 0 7px rgba(var(--core-rgb),.18),inset 0 0 4px rgba(var(--core-bright),.5);animation:gyro-alpha 15s linear infinite}
.core-ring:before{content:"";position:absolute;inset:7px;border-radius:50%;border:1px dashed rgba(var(--core-rgb),.45)}
.core-ring:after{content:"";position:absolute;left:48%;top:-5px;width:7px;height:7px;border-radius:50%;background:rgb(var(--core-bright));box-shadow:0 0 12px rgb(var(--core-rgb))}
.ring-beta{inset:-12%;border-width:1px;animation:gyro-beta 19s linear infinite}
.ring-gamma{inset:-21%;border:1px solid rgba(var(--core-rgb),.32);animation:gyro-gamma 26s linear infinite}.ring-gamma:before{inset:4px;border-style:solid;border-color:rgba(var(--core-rgb),.15)}
.core-equator{position:absolute;inset:5% -19%;border:1px solid rgba(var(--core-bright),.7);border-radius:50%;transform:rotateX(76deg) rotateZ(-18deg);box-shadow:0 0 8px rgba(var(--core-rgb),.3)}
.core-satellite{position:absolute;inset:-15%;border-radius:50%;transform-style:preserve-3d;animation:satellite-orbit 13s linear infinite}.core-satellite:after{content:"";position:absolute;left:50%;top:0;width:10px;height:10px;border-radius:3px;background:linear-gradient(135deg,rgba(var(--core-bright),.9),rgba(var(--core-rgb),.7));box-shadow:0 0 15px rgba(var(--core-rgb),.6);transform:rotate(45deg)}.satellite-two{inset:-30%;animation-duration:22s;animation-direction:reverse}.satellite-two:after{width:6px;height:6px}
.core-readout{position:absolute;left:50%;bottom:-2%;transform:translateX(-50%);white-space:nowrap;font:7px var(--sans);letter-spacing:2px;padding:9px 13px;border:1px solid rgba(var(--core-rgb),.25);border-radius:20px;background:rgba(var(--core-bright),.1);color:var(--ink)}.core-readout i{display:inline-block;width:4px;height:4px;border-radius:50%;background:rgb(var(--core-rgb));margin-right:7px}
.hero-art .sculpture{opacity:.4;transform:scale(.9) rotateX(20deg) rotateY(-25deg);animation:core-backplate 16s ease-in-out infinite}.hero-art .sculpture-word,.hero-art .sculpture-symbol{visibility:hidden}.hero-art .plane-caption,.hero-art .plane-coordinate{opacity:.5}
.hero-art .floating-note{bottom:5px;z-index:4}.hero-art .art-index{bottom:8px}.hero-art .scene-shadow{background:rgba(var(--core-rgb),.18);bottom:65px;width:310px}
.global-glass-fx{position:fixed;inset:0;pointer-events:none!important;z-index:80;overflow:hidden;contain:strict}
.glass-impact{position:absolute;width:220px;height:220px;transform:translate(-50%,-50%);pointer-events:none;color:rgb(var(--core-rgb))}
.impact-lens{position:absolute;inset:10%;border-radius:46% 54% 58% 42%;border:1px solid rgba(var(--core-bright),.9);background:radial-gradient(circle at 30% 20%,rgba(var(--core-bright),.4),rgba(var(--core-rgb),.08) 40%,transparent 62%);box-shadow:inset 0 1px 6px rgba(var(--core-bright),.65),0 0 25px rgba(var(--core-rgb),.15);animation:impact-lens 1.15s cubic-bezier(.16,1,.3,1) both}
.impact-ring{position:absolute;inset:0;border:1px solid rgba(var(--core-rgb),.55);border-radius:50%;animation:impact-ring 1.2s cubic-bezier(.16,1,.3,1) both}.impact-ring.two{inset:12%;animation-delay:.08s;transform:rotateX(50deg)}
.impact-shard{position:absolute;left:50%;top:50%;width:8px;height:13px;border:1px solid rgba(var(--core-bright),.8);background:rgba(var(--core-rgb),.25);border-radius:3px;--angle:calc(var(--shard)*60deg);animation:impact-shard 1s cubic-bezier(.12,.7,.2,1) both}
[data-theme="devil"] .impact-lens{border-radius:35% 65% 55% 45%;background:radial-gradient(circle,rgba(var(--core-rgb),.4),rgba(var(--core-deep),.1) 55%,transparent 70%)}[data-theme="devil"] .impact-shard{height:24px;width:3px;border-radius:90% 0 90% 0}
.section-arriving{animation:section-arrival 1s cubic-bezier(.2,.8,.2,1) both;transform-origin:center 10%}
.theme-wash{position:fixed;inset:0;z-index:79;pointer-events:none;background:radial-gradient(circle at 85% 5%,rgba(var(--core-rgb),.26),transparent 75%);animation:theme-wash .85s ease-out both}
@keyframes core-spin{to{transform:rotateY(360deg) rotateZ(15deg)}}
@keyframes core-levitate{0%,100%{transform:translateY(4px) rotateX(-8deg) rotateY(-10deg)}50%{transform:translateY(-12px) rotateX(12deg) rotateY(15deg)}}
@keyframes core-breathe{50%{opacity:.6;transform:scale(.92)}}
@keyframes core-scan{0%,100%{transform:translateY(-16px) rotateX(72deg)}50%{transform:translateY(22px) rotateX(72deg)}}
@keyframes gyro-alpha{from{transform:rotateX(65deg) rotateY(-20deg) rotateZ(0)}to{transform:rotateX(65deg) rotateY(-20deg) rotateZ(360deg)}}
@keyframes gyro-beta{from{transform:rotateX(30deg) rotateY(65deg) rotateZ(360deg)}to{transform:rotateX(30deg) rotateY(65deg) rotateZ(0)}}
@keyframes gyro-gamma{from{transform:rotateX(-50deg) rotateY(30deg) rotateZ(-20deg)}to{transform:rotateX(-50deg) rotateY(30deg) rotateZ(340deg)}}
@keyframes satellite-orbit{to{transform:rotateZ(360deg) rotateY(25deg)}}
@keyframes core-backplate{0%,100%{transform:scale(.9) rotateX(20deg) rotateY(-25deg) rotateZ(-12deg)}50%{transform:scale(.92) rotateX(30deg) rotateY(-15deg) rotateZ(-4deg)}}
@keyframes impact-lens{0%{scale:.1;opacity:0;rotate:-30deg}15%{opacity:.85}100%{scale:1.5;opacity:0;rotate:35deg}}
@keyframes impact-ring{0%{scale:.08;opacity:.8}100%{scale:1.35;opacity:0}}
@keyframes impact-shard{0%{transform:rotate(var(--angle)) translateY(-8px) rotate(40deg) scale(.2);opacity:.8}100%{transform:rotate(var(--angle)) translateY(-105px) rotate(130deg) scale(.3);opacity:0}}
@keyframes section-arrival{from{filter:brightness(1.13);transform:perspective(1200px) translateY(8px) rotateX(2deg)}to{filter:brightness(1);transform:none}}
@keyframes theme-wash{from{opacity:1}to{opacity:0}}
/* Pause continuous core details when offscreen or the page is hidden. */
.js .hero:not(.motion-active) .ai-core *,.page-asleep .ai-core *{animation-play-state:paused}
@media(max-width:950px){.ai-core{width:min(100%,345px)}.core-readout{font-size:6px;letter-spacing:1.3px}.hero-art .floating-note{bottom:-5px}.hero-art .scene-shadow{width:230px}}
@media(max-width:680px){.hero-art{height:430px;margin-top:16px}.ai-core{width:min(100%,340px);transform:translateY(-20px)}.core-readout{bottom:6%}.hero-art .floating-note{bottom:12px}.hero-art .art-index{bottom:19px}.hero-art .sculpture{opacity:.3}.core-ring{box-shadow:none}.glass-impact{width:180px;height:180px}}
@media(prefers-reduced-motion:reduce){.core-assembly{transform:rotateX(-8deg) rotateY(-10deg)}.ring-alpha{transform:rotateX(65deg) rotateY(-20deg)}.ring-beta{transform:rotateX(30deg) rotateY(65deg)}.ring-gamma{transform:rotateX(-50deg) rotateY(30deg)}.hero-art .sculpture{transform:scale(.9) rotateX(20deg) rotateY(-25deg)!important}.global-glass-fx,.theme-wash{display:none}}

/* Theme-aware local illumination: one light follows touch, one soft edge lights scroll. */
.touch-illumination{position:absolute;width:330px;height:330px;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;opacity:0;background:radial-gradient(circle,rgba(var(--core-bright),.26),rgba(var(--core-rgb),.10) 25%,rgba(var(--core-rgb),.035) 48%,transparent 70%);transition:opacity .7s ease-out;mix-blend-mode:screen}
.touch-illumination.illuminated{opacity:1;transition:opacity .12s ease-out}
.scroll-illumination{position:fixed;right:-90px;top:20%;height:60vh;width:190px;pointer-events:none;z-index:4;background:radial-gradient(ellipse,rgba(var(--core-rgb),.14),transparent 70%);opacity:0;transition:opacity .7s ease-out}.scroll-illumination.illuminated{opacity:1;transition:opacity .2s ease-out}
@media(max-width:680px){.touch-illumination{width:260px;height:260px}.scroll-illumination{width:130px;right:-65px}}
@media(prefers-reduced-motion:reduce){.touch-illumination,.scroll-illumination{display:none}}

/* Orb atelier: loaded on demand, gesture-isolated and bounded. */
.orb-open{position:absolute;left:50%;bottom:38px;transform:translateX(-50%);z-index:6;border-radius:30px;padding:13px 21px;white-space:nowrap;font-size:12px;min-height:46px;box-shadow:0 6px 20px rgba(var(--core-rgb),.14);background:var(--bg);display:none}.js .orb-open{display:block}.orb-open span{margin-left:22px}.orb-open:hover{box-shadow:0 7px 22px rgba(var(--core-rgb),.25)}.orb-open:disabled{cursor:wait}.hero-art .floating-note{display:none}.hero-art .art-index{bottom:0;pointer-events:none}
.orb-dialog{padding:0;width:min(1080px,calc(100% - 40px));max-width:none;max-height:calc(100dvh - 32px);border:1px solid rgba(var(--core-bright),.65);border-radius:28px;background:var(--bg);color:var(--ink);box-shadow:0 30px 110px #0005;overflow:auto;overscroll-behavior:contain}.orb-dialog::backdrop{background:#051a1cbb}.orb-dialog[open]{animation:atelier-enter .32s cubic-bezier(.16,1,.3,1) both}.orb-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:23px 28px 17px;border-bottom:1px solid var(--line)}.orb-kicker{font-size:8px;letter-spacing:2.4px;color:var(--muted)}#orb-view-title{font:400 30px/1.1 var(--serif);letter-spacing:-.8px;margin:7px 0 0}#orb-view-title>span{color:rgb(var(--core-rgb))}.orb-close{background:transparent;border:1px solid var(--line);border-radius:24px;padding:10px 16px;font-size:11px;min-height:44px;flex-shrink:0}.orb-close span{font-size:17px;margin-left:18px}
.orb-stage{position:relative;height:min(48vh,460px);min-height:240px;overflow:hidden;perspective:1100px;touch-action:none;user-select:none;cursor:grab;contain:layout paint;background:radial-gradient(ellipse at 50% 52%,rgba(var(--core-rgb),.12),transparent 62%),linear-gradient(90deg,transparent calc(50% - .5px),rgba(var(--core-rgb),.06) 50%,transparent calc(50% + .5px)),linear-gradient(0deg,transparent calc(50% - .5px),rgba(var(--core-rgb),.06) 50%,transparent calc(50% + .5px))}.orb-stage:active{cursor:grabbing}.orb-stage.pan-mode{cursor:move}.orb-stage:focus-visible{outline:2px solid rgb(var(--core-rgb));outline-offset:-6px}.orb-model{position:absolute;width:min(340px,64vw);height:min(340px,64vw);left:50%;top:50%;margin-left:calc(min(340px,64vw) / -2);margin-top:calc(min(340px,64vw) / -2);transform-origin:center;transform-style:preserve-3d;will-change:transform}.orb-rotation{position:absolute;inset:0;transform-style:preserve-3d}.orb-stage .ai-core{width:100%;height:100%;transform:none;inset:0;pointer-events:none;perspective:none;transform-style:preserve-3d}.orb-stage .core-assembly{animation:none;transform:none}.orb-stage .core-dial{inset:-9%;border-color:rgba(var(--core-rgb),.2)}.orb-stage .core-grid{animation-duration:35s}.orb-stage .core-ring{box-shadow:none}.orb-stage .core-light{box-shadow:none}.orb-stage .core-shell{background:radial-gradient(circle at 28% 22%,rgba(var(--core-bright),.85),rgba(var(--core-rgb),.12) 23%,rgba(var(--core-deep),.46) 52%,rgba(var(--core-rgb),.78) 77%,rgba(var(--core-bright),.8) 90%,transparent);box-shadow:inset -14px -12px 25px rgba(var(--core-deep),.2),inset 2px 2px 8px rgba(var(--core-bright),.7),0 20px 35px rgba(var(--core-deep),.15)}
.core-latitudes{position:absolute;inset:4%;border-radius:50%;transform-style:preserve-3d;transform:rotateX(12deg)}.core-latitudes i{position:absolute;left:calc(9% - var(--latitude)*1%);right:calc(9% - var(--latitude)*1%);top:calc(12% + var(--latitude)*14%);height:20%;border:1px solid rgba(var(--core-bright),.42);border-radius:50%;transform:rotateX(45deg)}.core-facets{position:absolute;inset:0;transform-style:preserve-3d;animation:facet-orbit 34s linear infinite;pointer-events:none}.core-facets i{position:absolute;left:50%;top:50%;width:11px;height:11px;border:1px solid rgba(var(--core-bright),.85);background:rgba(var(--core-rgb),.4);box-shadow:inset 1px 1px 4px rgba(var(--core-bright),.65);transform:rotateZ(calc(var(--facet)*45deg)) translateX(102px) rotateY(35deg) rotateX(30deg);border-radius:2px}.orb-crosshair{position:absolute;inset:14px;border:1px solid rgba(var(--core-rgb),.1);border-radius:20px;pointer-events:none}.orb-stage-note{position:absolute;left:24px;bottom:18px;font-size:7px;letter-spacing:1.8px;color:var(--muted);pointer-events:none}.orb-zoom-label{position:absolute;right:24px;bottom:15px;font:italic 18px var(--serif);pointer-events:none}.orb-bottom{padding:0 28px 21px}.orb-controls{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;border-top:1px solid var(--line);padding:16px 0}.orb-controls button{min-height:44px;min-width:44px;padding:10px 15px;border:1px solid var(--line);border-radius:24px;background:rgba(var(--core-rgb),.06);font-size:11px;transition:background .15s,transform .15s}.orb-controls button:active{transform:scale(.95)}.orb-controls button[aria-pressed="true"]{background:rgba(var(--core-rgb),.15);border-color:rgba(var(--core-rgb),.45)}.orb-details{display:grid;grid-template-columns:210px 1fr;gap:30px;padding:15px 0;border-top:1px solid var(--line);align-items:center}.orb-details label{display:flex;flex-direction:column;gap:5px;font-size:8px;letter-spacing:1px;color:var(--muted)}.orb-details select{width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:12px;font:12px var(--sans);min-height:44px;padding:10px;letter-spacing:0}.orb-details p{font-size:11px;line-height:1.7;margin:0}#orb-help{font-size:9px;line-height:1.7;color:var(--muted);margin:6px 0 0}.orb-dialog[data-detail="grid"] .core-grid{border:1px solid rgba(var(--core-bright),.7)}.orb-dialog[data-detail="grid"] .core-shell{background:rgba(var(--core-rgb),.07)}.orb-dialog[data-detail="core"] .core-shell{background:rgba(var(--core-rgb),.1)}.orb-dialog[data-detail="core"] .core-light{inset:25%;opacity:1}.orb-dialog[data-detail="shell"] .core-ring,.orb-dialog[data-detail="grid"] .core-ring{opacity:.22}.orb-dialog[data-detail="rings"] .core-shell{opacity:.4}.orb-still .ai-core *{animation-play-state:paused!important}.orb-exploring{overflow:hidden}.orb-exploring body>:not(dialog) *,.orb-exploring body>:not(dialog),.page-asleep .orb-dialog *{animation-play-state:paused!important}.orb-exploring .global-glass-fx,.orb-exploring .scroll-illumination{display:none}
@keyframes atelier-enter{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}@keyframes facet-orbit{to{transform:rotateY(360deg) rotateZ(30deg)}}
/* Performance: no invisible loader/backplate animation, no full-page moving blur on phones. */
.loading-screen.loaded{display:none}.loading-screen.loaded *{animation:none!important}.hero-art .sculpture{display:none}.hero-art .sculpture *{animation:none!important}.hero-art .ai-core .core-assembly{animation:none;transform:rotateX(-8deg) rotateY(-10deg)}.hero-art .core-aura,.hero-art .core-light,.hero-art .core-scan,.hero-art .core-satellite{animation:none}.hero-art .core-grid{animation-duration:40s}.hero-art .core-grid,.hero-art .core-ring{animation-play-state:paused}.hero.motion-active .core-grid,.hero.motion-active .core-ring{animation-play-state:running}.hero-art .core-satellite{transform:rotate(35deg)}.hero-art .satellite-two{transform:rotate(150deg)}
@media(pointer:coarse){.fluid-cloud{animation:none!important;will-change:auto}.glass{backdrop-filter:none;-webkit-backdrop-filter:none}.hero-art .core-ring.ring-gamma{animation:none;transform:rotateX(-50deg) rotateY(30deg)}.hero-art .core-shell{box-shadow:inset 2px 2px 12px rgba(var(--core-bright),.7),0 12px 24px rgba(var(--core-deep),.2)}}
@media(max-width:680px){.orb-open{bottom:40px}.orb-dialog{width:calc(100% - 16px);max-height:calc(100dvh - 16px);border-radius:22px}.orb-toolbar{padding:16px 18px 13px}#orb-view-title{font-size:24px}.orb-kicker{font-size:6px;letter-spacing:2px}.orb-close{padding:8px 12px}.orb-close span{margin-left:7px}.orb-stage{height:38dvh;min-height:210px}.orb-model{width:230px;height:230px;margin:-115px 0 0 -115px}.orb-bottom{padding:0 16px 16px}.orb-controls{gap:5px;padding:12px 0}.orb-controls button{padding:9px 10px;font-size:10px}.orb-details{grid-template-columns:1fr;gap:10px;padding:12px 0}.orb-details label{display:grid;grid-template-columns:1fr 1.6fr;align-items:center;gap:6px}.orb-details p{font-size:10px;min-height:34px}.orb-stage-note{left:18px;bottom:14px;font-size:6px;letter-spacing:1px}.orb-zoom-label{right:18px;bottom:11px}#orb-help{font-size:8px}.core-facets i{transform:rotateZ(calc(var(--facet)*45deg)) translateX(70px) rotateY(35deg) rotateX(30deg)}}
@media(prefers-reduced-motion:reduce){.orb-dialog[open]{animation:none}.orb-model{will-change:auto}.orb-stage .ai-core *{animation:none!important}.orb-stage .core-assembly{transform:none}.orb-stage .core-grid{transform:rotateY(35deg)}.orb-stage .core-facets{transform:rotateY(20deg)}}

.orb-dialog:not([open]) *{animation-play-state:paused!important}

/* 2026 editorial portfolio: content first, restrained motion, true 3D on demand. */
body,header,.glass,.glass-control,.project-body{transition:background-color 240ms,color 240ms,border-color 240ms,box-shadow 240ms}body:before{opacity:.12}.fluid-cloud,.edge-corner,.kinetic-letter,.scroll-cue-mark{animation:none!important}.loading-screen{display:none!important}.site-header{position:sticky;top:14px;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);background:color-mix(in srgb,var(--bg) 85%,transparent);border-color:var(--line);margin-top:18px;z-index:30}.desktop-nav{position:relative;gap:23px}.desktop-nav a{font-size:11px}.desktop-nav a:after{display:none}.nav-indicator{position:absolute;left:0;bottom:2px;height:2px;background:var(--accent);border-radius:2px;transition:transform 230ms,width 230ms,opacity 230ms;pointer-events:none;opacity:0}.desktop-nav a[aria-current]{color:var(--accent)}.theme-button{display:none}.header-github{display:none}.header-actions{gap:8px}main,footer{max-width:1140px}.hero{min-height:670px;grid-template-columns:1.18fr 1fr;gap:20px}.hero-copy{position:relative;padding:52px 0 62px}.name-title{position:relative;isolation:isolate;font-size:clamp(58px,6.7vw,93px);letter-spacing:-4px;line-height:1.06;margin:26px 0 18px;overflow:visible;color:var(--ink);text-shadow:0 1px 0 var(--highlight)}.name-title>span{display:block;position:relative;font-style:normal;color:var(--ink);background:linear-gradient(112deg,var(--ink) 0%,var(--ink) 34%,var(--accent) 47%,var(--ink) 60%,var(--ink) 100%);background-size:240% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:name-glass-light 16s ease-in-out infinite}.name-title:before{content:"";position:absolute;inset:-24px -25px;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 35% 50%,rgba(var(--core-rgb),.14),transparent 67%);opacity:.8;animation:name-ambient 18s ease-in-out infinite}.name-title .name-dot{display:inline;font:inherit;color:var(--accent)}.hero-tagline{font:italic 30px/1.25 var(--serif);color:var(--ink);margin:0 0 16px}.hero-intro{font-size:15px;max-width:400px;line-height:1.7;margin:0 0 26px}.hero-foot{margin-top:32px}.hero-art{height:530px;transform:none!important}.hero-art .ai-core{animation:sculpture-float 20s ease-in-out infinite}.hero-art .core-ring,.hero-art .core-grid,.hero-art .core-satellite{animation:none!important}.hero-art .core-ring.ring-alpha{transform:rotateX(65deg) rotateY(-20deg)}.hero-art .core-ring.ring-beta{transform:rotateX(30deg) rotateY(65deg)}.hero-art .core-ring.ring-gamma{transform:rotateX(-50deg) rotateY(30deg)}.hero-art .core-reflection{animation:ambient-glass-light 24s ease-in-out infinite}.hero-art .core-aura{opacity:.35;animation:none!important}.hero-art .art-index{font-size:7px;letter-spacing:1px;bottom:16px}.orb-open{bottom:47px}.scroll-cue{bottom:10px}.hero .eyebrow,.hero .name-title,.hero .hero-tagline,.hero .hero-intro,.hero .hero-actions{opacity:1;transform:none}.js .hero .name-title{animation:hero-first 550ms ease-out both}.js .hero .hero-tagline,.js .hero .hero-intro{animation:hero-next 550ms 75ms ease-out both}.js .hero .hero-actions{animation:hero-next 550ms 150ms ease-out both}.section{padding-top:70px}.section-intro{font-size:14px;line-height:1.7;max-width:660px;margin:16px 0 24px}.section-heading{margin-bottom:14px}.section-heading h2{font-size:48px}.project-filters{display:none;flex-wrap:wrap;gap:8px;margin:26px 0 15px}.js .project-filters{display:flex}.project-filters button{border:1px solid var(--line);background:transparent;border-radius:24px;padding:11px 16px;min-height:44px;font-size:11px}.project-filters button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.repo-freshness{font-size:10px;line-height:1.7;margin:10px 0 25px}.project-card{padding:12px;transform:none;transition:transform 250ms ease,box-shadow 250ms ease;overflow:hidden}.project-card[hidden]{display:none!important}.project-card:hover,.project-card:focus-within{transform:translateY(-5px)!important;box-shadow:inset 0 1px var(--highlight),0 20px 35px var(--shadow)}.project-visual{height:270px;background:var(--bg);border:1px solid var(--line);position:relative}.project-visual:before{display:none}.project-visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:top;transition:transform 250ms ease}.project-card:hover .project-visual img,.project-card:focus-within .project-visual img{transform:scale(1.025)}.preview-trigger{position:absolute;bottom:13px;left:13px;right:13px;min-height:44px;border:1px solid var(--line);border-radius:14px;padding:10px 15px;font-size:11px;display:none;align-items:center;justify-content:space-between;background:var(--bg);color:var(--ink)}.js .preview-trigger{display:flex}.project-body{padding:23px 13px 15px}.project-title{font-size:28px}.project-short{font-size:14px}.project-description{font-size:12px;line-height:1.8}.project-tags{margin:18px 0 12px}.project-tags span{font-size:9px}.project-meta{font-size:9px;margin:15px 0}.project-links{display:flex;flex-wrap:wrap;gap:10px 18px;border-top:1px solid var(--line);padding:13px 0 5px}.project-links a{font-size:11px;min-height:35px;display:inline-flex;align-items:center;border-bottom:1px solid transparent;transition:transform 250ms,color 250ms,border-color 250ms}.project-card:hover .project-links a,.project-card:focus-within .project-links a{color:var(--accent);border-bottom-color:var(--line);transform:translateY(-2px)}.case-study{margin-top:12px;border-top:1px solid var(--line);font-size:12px}.case-study summary{cursor:pointer;padding:15px 0;font-size:11px;min-height:44px}.case-study dl{margin:8px 0 18px}.case-study dt{font-weight:600;color:var(--ink);font-size:11px;margin:18px 0 5px}.case-study dd{margin:0;color:var(--muted);font-size:12px;line-height:1.8}.evidence-note{font-size:9px;line-height:1.8;border-top:1px solid var(--line);padding-top:12px}.evidence-note a{text-decoration:underline}.about-section{gap:65px;margin-top:24px;grid-template-columns:.9fr 1.15fr}.about-heading h2{font-size:54px}.about-heading p{font-size:14px;max-width:360px}.about-grid{grid-template-columns:1fr}.education-card{grid-column:1/-1}.education-timeline{list-style:none;margin:25px 0 4px;padding:0 0 0 17px;border-left:1px solid var(--line)}.education-timeline li{position:relative;padding:0 0 28px 9px}.education-timeline li:last-child{padding-bottom:0}.education-timeline li:before{content:"";position:absolute;left:-21px;top:3px;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px var(--bg)}.timeline-now{font-size:8px;letter-spacing:1px;color:var(--muted)}.education-timeline h3{margin:7px 0 6px;font-size:23px}.info-card p{font-size:12px}.location-card h3{font-size:23px;line-height:1.4;max-width:340px}.location-card svg{flex-shrink:0;width:45px}.toolkit-section{display:block}.toolkit-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:26px}.toolkit-grid .info-card{min-height:215px}.toolkit-grid h3{font-size:27px}.toolkit-grid p{font-size:12px;max-width:none}.toolkit-grid a{display:inline-block;font-size:10px;border-bottom:1px solid var(--line);margin-top:18px}.closing-section .contact-github{display:block;font-size:12px;width:fit-content;margin-top:20px;border-bottom:1px solid var(--line)}.contact-note{font-size:14px}.closing-orb{opacity:.4;animation:none!important}footer{gap:20px;flex-wrap:wrap;padding:0 0 30px}footer nav{display:flex;gap:20px}footer nav a{padding:12px 0!important}.js .reveal,.js .section-heading,.js .about-heading{opacity:1;transform:none}.js .section-heading:not(.visible),.js .about-heading:not(.visible),.js .project-card:not(.visible),.js .info-card:not(.visible),.js .closing-section:not(.visible){opacity:.2;transform:translateY(12px)}.js .visible{animation:section-content 450ms var(--reveal-delay,0ms) ease-out both}.js .reveal{transition:opacity 450ms,transform 450ms}.project-preview{width:min(1180px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:24px;border:1px solid var(--line);border-radius:24px;background:var(--bg);color:var(--ink);overflow:auto}.project-preview::backdrop{background:#06141ac9}.preview-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px}.preview-toolbar h3{font:30px var(--serif);margin:8px 0}.preview-close,.preview-zoom{border:1px solid var(--line);background:var(--glass);color:var(--ink);border-radius:24px;padding:12px 18px;min-height:44px;font-size:12px}.preview-note{font-size:12px;line-height:1.7;max-width:850px}.preview-image{max-width:100%;width:100%;display:block;border-radius:16px;border:1px solid var(--line);margin:15px 0}.image-enlarged .preview-image{max-width:none;width:1440px}.image-enlarged{overflow:auto}.preview-links{display:flex;padding-top:12px}.project-preview iframe{width:100%;height:65dvh;border:1px solid var(--line);border-radius:14px;background:#edf1ee}.previewing{overflow:hidden}.previewing .hero *{animation-play-state:paused!important}.tap-glow{position:fixed;pointer-events:none;z-index:99;width:72px;height:72px;border:1px solid rgba(var(--core-rgb),.5);border-radius:50%;background:radial-gradient(circle,rgba(var(--core-bright),.3),rgba(var(--core-rgb),.06),transparent);animation:tap-whisper 500ms ease-out both}.orb-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.orb-model[hidden]{display:none!important}.orb-stage[data-renderer="webgl"]{perspective:none}.orb-render-settings{display:flex;gap:20px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:12px 0}.orb-render-settings label{font-size:10px}.orb-render-settings select{color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:8px;min-height:40px;margin-left:8px}.orb-render-settings span{font-size:9px;color:var(--muted)}.orb-dialog .orb-controls{gap:6px}.orb-stage{height:min(48vh,460px)}.page-asleep *,.hero:not(.motion-active) .name-title>span,.hero:not(.motion-active) .name-title:before,.hero:not(.motion-active) .hero-art .ai-core,.hero:not(.motion-active) .core-reflection{animation-play-state:paused!important}a:focus-visible,button:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}select{color:var(--ink)}.project-links a:visited{color:var(--ink)}
@keyframes hero-first{from{opacity:1;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes hero-next{from{opacity:.75;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes section-content{from{opacity:.2;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes name-glass-light{0%,25%{background-position:100% 0}65%,100%{background-position:0 0}}@keyframes name-ambient{50%{opacity:.45;transform:translateX(12px)}}@keyframes sculpture-float{50%{translate:0 -7px}}@keyframes ambient-glass-light{50%{opacity:.45;transform:translateX(4px)}}@keyframes tap-whisper{from{opacity:.8;transform:translate(-50%,-50%) scale(.35)}to{opacity:0;transform:translate(-50%,-50%) scale(1.2)}}
@media(hover:none){.project-links a{color:var(--accent);border-bottom-color:var(--line)}.project-card:hover{transform:none!important}}
@media(max-width:1100px){main,footer{margin-left:30px;margin-right:30px}.site-header{margin-left:20px;margin-right:20px}.hero{gap:0}.name-title{font-size:clamp(55px,7vw,82px)}.hero-art{height:480px}.about-section{gap:35px}}
@media(max-width:800px){.desktop-nav{gap:15px}.brand-name{display:none}.hero{min-height:600px}.hero-actions{gap:8px}.hero-actions .button{font-size:10px;padding:13px 16px;gap:12px}.name-title{letter-spacing:-3px}.hero-art{height:440px}.project-visual{height:220px}.project-title{font-size:24px}.project-links{gap:8px 14px}}
@media(max-width:680px){main,footer{margin-left:20px;margin-right:20px}.site-header{top:8px;padding:10px 13px;margin:12px 12px 0;border-radius:21px}.brand-name{display:block}.header-actions .menu-button{display:grid}.desktop-nav{display:none}.hero{display:flex;flex-direction:column;gap:0;min-height:0}.hero-copy{width:100%;padding:45px 0 15px}.hero .eyebrow{font-size:8px}.name-title{font-size:clamp(53px,12.4vw,78px);margin:24px 0 18px;letter-spacing:-2.9px}.hero-tagline{font-size:28px}.hero-intro{font-size:14px;max-width:330px}.hero-actions .button{font-size:11px;min-height:48px;padding:14px 18px}.hero-foot{font-size:8px;margin-top:25px}.hero-art{height:380px;width:100%;margin:0}.hero-art .depth-scene{height:340px}.hero-art .ai-core{width:285px;transform:translateY(-20px)}.hero-art .core-reflection{animation:none}.hero-art .core-dial{font-size:5px}.hero-art .art-index{display:none}.orb-open{bottom:25px}.scroll-cue{display:none}.section{padding-top:45px;padding-bottom:40px}.section-heading{gap:15px;align-items:start}.section-heading h2{font-size:38px}.section-count{font-size:7px;max-width:90px;line-height:1.7;white-space:normal}.section-intro{font-size:13px}.project-filters{gap:6px}.project-filters button{font-size:10px;padding:10px 13px}.project-grid{grid-template-columns:1fr;gap:24px}.project-visual{height:250px}.project-body{padding:20px 12px 12px}.project-title{font-size:27px}.project-links a{font-size:11px}.about-section{display:block}.about-heading h2{font-size:46px}.about-heading p{max-width:100%;margin-bottom:30px}.about-grid{gap:14px}.toolkit-grid{grid-template-columns:1fr}.toolkit-grid .info-card{min-height:180px}.toolkit-section .section-heading h2{font-size:37px}.toolkit-grid .info-card h3{font-size:26px}.closing-section{padding:28px}.closing-section h2{font-size:43px}.closing-orb{right:-100px;opacity:.2}.contact-address{overflow-wrap:anywhere;font-size:13px}footer{font-size:10px;gap:12px;align-items:center}footer nav{gap:17px;order:3;flex-basis:100%}.project-preview{padding:17px;width:calc(100% - 16px);max-height:calc(100dvh - 16px)}.preview-toolbar h3{font-size:23px;overflow-wrap:anywhere}.preview-close{flex-shrink:0;font-size:10px;padding:10px 12px}.project-preview iframe{height:67dvh}.orb-render-settings{display:block}.orb-render-settings span{display:block;margin-top:8px}.orb-stage{height:36dvh;min-height:230px}.orb-controls button{font-size:10px}.glass{backdrop-filter:none;-webkit-backdrop-filter:none}.site-header{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.name-title>span{background:none;-webkit-text-fill-color:var(--ink);color:var(--ink)}.hero .name-title,.hero .hero-tagline,.hero .hero-intro,.hero .hero-actions,.js .reveal,.js .section-heading,.js .about-heading{opacity:1!important;transform:none!important}.project-card:hover,.project-card:focus-within,.project-card:hover img,.project-card:focus-within img{transform:none!important}}
/* Contain decorative depth, especially on narrow screens. Keep the name light compositor-only. */
.ambient,.hero-art{overflow:clip}.name-title>span{animation:none;background-position:35% 0}.name-title:after{content:"";position:absolute;inset:-3px -12px;pointer-events:none;background:linear-gradient(105deg,transparent 36%,rgba(var(--core-bright),.05) 41%,rgba(var(--core-bright),.48) 46%,transparent 53%);mix-blend-mode:soft-light;opacity:.65;animation:name-light-sweep 18s ease-in-out infinite;will-change:transform}.hero:not(.motion-active) .name-title:after{animation-play-state:paused!important}@keyframes name-light-sweep{0%,25%{transform:translateX(-25%);opacity:0}40%{opacity:.65}68%,100%{transform:translateX(25%);opacity:0}}@media(prefers-reduced-motion:reduce){.name-title:after{display:none}}
.hero-art{overflow:hidden;contain:paint}.ambient{overflow:hidden;contain:strict}.name-title:before{inset:-20px 0}.hero-copy{min-width:0}
.name-title>span:after{display:none}
@media(forced-colors:active){.name-title>span{background:none;color:CanvasText;-webkit-text-fill-color:CanvasText;text-shadow:none}.name-title:before,.name-title:after{display:none}.glass,.glass-control{border:1px solid CanvasText}.nav-indicator{background:Highlight}}
/* Elastic local feedback: two short-lived lenses, zero gesture capture or page movement. */
.tap-glow{width:88px;height:72px;border-radius:45% 55% 50% 50%;border:1px solid rgba(var(--core-rgb),.4);background:radial-gradient(ellipse at 35% 30%,rgba(var(--core-bright),.38),rgba(var(--core-rgb),.11) 42%,transparent 72%);box-shadow:inset 0 1px 1px rgba(var(--core-bright),.5);animation:tap-liquid-spring 600ms cubic-bezier(.18,.7,.2,1) both;transform-origin:center;contain:paint}.tap-glow:after{content:"";position:absolute;inset:9px;border:1px solid rgba(var(--core-bright),.5);border-radius:50%}.tap-glow.calm{animation:none;opacity:.22;transform:translate(-50%,-50%);width:50px;height:50px}
@keyframes tap-liquid-spring{0%{opacity:.7;transform:translate(-50%,-50%) scale(.35,.25) rotate(-8deg)}30%{opacity:.6;transform:translate(-50%,-50%) scale(1.12,.75) rotate(5deg)}58%{opacity:.4;transform:translate(-50%,-50%) scale(.92,1.1) rotate(-2deg)}80%{opacity:.2;transform:translate(-50%,-50%) scale(1.03,.96)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.1,1.03)}}
@media(prefers-reduced-motion:reduce){.tap-glow{animation:none!important;transform:translate(-50%,-50%);opacity:.22}}
/* Native scrolling plus a single local, transform/opacity-only glass edge light. */
.depth-scene{translate:0 var(--scroll-depth,0px)}.scroll-glass-light{position:fixed;right:-60px;top:25%;width:140px;height:45vh;pointer-events:none;z-index:4;background:radial-gradient(ellipse,rgba(var(--core-rgb),.15),transparent 70%);opacity:0;transition:opacity 250ms ease-out;contain:paint}.scroll-glass-light.scrolling{opacity:.75}.orb-exploring .scroll-glass-light,.previewing .scroll-glass-light{display:none}@media(max-width:680px){.scroll-glass-light{width:100px;right:-50px}}@media(prefers-reduced-motion:reduce){.scroll-glass-light{display:none}.depth-scene{translate:none}}
@media(max-width:680px){html{scroll-padding-top:96px}}
/* Expanded case studies should not stretch the neighbouring project into an empty panel. */
.project-grid{align-items:start}

/* Luminous glass refinement. Continuous depth uses compositor transforms, not a second WebGL scene. */
body{isolation:isolate}
.ambient{position:fixed;inset:0;height:auto;z-index:-1;contain:strict;background:radial-gradient(ellipse at 78% 15%,rgba(var(--core-rgb),.12),transparent 56%),radial-gradient(ellipse at 12% 70%,rgba(var(--core-rgb),.07),transparent 50%)}
.glass-wallpaper{position:absolute;inset:0;perspective:1200px;pointer-events:none;overflow:hidden}
.wallpaper-drift{position:absolute;width:230px;height:230px;left:76%;top:18%;animation:wallpaper-drift 34s ease-in-out infinite;transform-style:preserve-3d}
.wallpaper-prism{position:absolute;width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(28deg) rotateY(-32deg) rotateZ(15deg);animation:wallpaper-turn 48s ease-in-out infinite}
.prism-face{position:absolute;inset:0;display:block;border:1px solid rgba(var(--core-rgb),.16);border-radius:18px;background:linear-gradient(135deg,rgba(var(--core-bright),.16),rgba(var(--core-rgb),.025) 35%,rgba(var(--core-rgb),.07) 76%,rgba(var(--core-bright),.24));box-shadow:inset 1px 1px 0 rgba(var(--core-bright),.35);backface-visibility:visible}
.face-front{transform:translateZ(115px)}.face-back{transform:rotateY(180deg) translateZ(115px)}.face-left{transform:rotateY(-90deg) translateZ(115px)}.face-right{transform:rotateY(90deg) translateZ(115px)}.face-top{transform:rotateX(90deg) translateZ(115px);background:linear-gradient(120deg,rgba(var(--core-bright),.28),rgba(var(--core-rgb),.035))}.face-bottom{transform:rotateX(-90deg) translateZ(115px)}
.drift-1{left:-10%;top:66%;scale:.8;animation-duration:42s;animation-delay:-12s}.drift-1 .wallpaper-prism{animation-direction:reverse;animation-delay:-17s}
.drift-2{left:53%;top:84%;scale:.45;animation-duration:38s;animation-delay:-7s}.drift-2 .wallpaper-prism{animation-delay:-26s}
@keyframes wallpaper-drift{0%,100%{transform:translate3d(-10px,8px,0)}50%{transform:translate3d(25px,-38px,35px)}}
@keyframes wallpaper-turn{0%,100%{transform:rotateX(28deg) rotateY(-32deg) rotateZ(15deg)}50%{transform:rotateX(50deg) rotateY(30deg) rotateZ(-7deg)}}
/* Readable ink remains unchanged; soft light is behind, never over the letterforms. */
.name-title:before{inset:-40px -5px;background:radial-gradient(ellipse at 32% 50%,rgba(var(--core-rgb),.32),rgba(var(--core-rgb),.12) 37%,transparent 72%);animation:name-radiance 12s ease-in-out infinite}
.name-title>span{text-shadow:0 1px 0 rgba(var(--core-bright),.35),0 0 18px rgba(var(--core-rgb),.17)}
.name-title:after{background:linear-gradient(105deg,transparent 31%,rgba(var(--core-bright),.08) 38%,rgba(var(--core-bright),.72) 46%,transparent 56%);animation-duration:12s}
@keyframes name-radiance{0%,100%{opacity:.65;transform:translate3d(-5px,0,0) scale(.97)}50%{opacity:1;transform:translate3d(8px,-3px,0) scale(1.03)}}
/* Tappable surfaces retain their own semantics and independent focus outline. */
.button,.glass-control,.project-filters button,.preview-trigger,.preview-close,.preview-zoom,.orb-controls button,.orb-close,.orb-render-settings select,.orb-details select,.theme-select{box-shadow:inset 0 1px 1px rgba(var(--core-bright),.48),inset 0 -1px 1px rgba(var(--core-rgb),.1),0 4px 14px rgba(var(--core-rgb),.08)}
.button:not(.primary),.glass-control,.project-filters button:not([aria-pressed="true"]),.preview-close,.preview-zoom,.orb-controls button,.ambient-toggle{background:linear-gradient(135deg,rgba(var(--core-bright),.16),var(--glass) 45%,rgba(var(--core-rgb),.065));border-color:rgba(var(--core-rgb),.24)}
:is(a,button,summary,select):focus-visible{outline:3px solid var(--accent);outline-offset:4px}
@media(hover:hover){:is(.button,.glass-control,.project-filters button,.preview-trigger,.orb-controls button,.ambient-toggle):hover{box-shadow:inset 0 1px 1px rgba(var(--core-bright),.6),0 0 20px rgba(var(--core-rgb),.18),0 5px 14px var(--shadow)}}
/* Child lens bounces locally; the independent wave travels to the farthest viewport corner. */
.tap-glow{width:0;height:0;border:0;box-shadow:none;background:none;border-radius:0;contain:none;animation:none;transform:none;isolation:isolate}
.tap-glow:before{content:"";position:absolute;left:-48px;top:-38px;width:96px;height:76px;border-radius:46% 54% 50% 50%;border:1px solid rgba(var(--core-bright),.7);background:radial-gradient(ellipse at 35% 30%,rgba(var(--core-bright),.48),rgba(var(--core-rgb),.19) 44%,transparent 74%);box-shadow:inset 0 1px 3px rgba(var(--core-bright),.6),0 0 18px rgba(var(--core-rgb),.1);animation:glass-tap-bounce 650ms ease-out both}
.tap-glow:after{display:none}
.screen-wave{position:absolute;left:-70px;top:-70px;width:140px;height:140px;border-radius:50%;border:1px solid rgba(var(--core-bright),.62);background:radial-gradient(circle,transparent 57%,rgba(var(--core-rgb),.025) 62%,rgba(var(--core-rgb),.1) 67%,rgba(var(--core-bright),.16) 69%,transparent 71%);pointer-events:none;animation:screen-wave-flow 1100ms cubic-bezier(.12,.48,.25,1) both;transform-origin:center}
@keyframes glass-tap-bounce{0%{opacity:0;transform:scale(.3,.2)}25%{opacity:1;transform:scale(1.15,.8)}50%{opacity:.75;transform:scale(.93,1.1)}72%{opacity:.4;transform:scale(1.04,.96)}100%{opacity:0;transform:scale(1.15)}}
@keyframes screen-wave-flow{0%{opacity:.6;transform:scale(.15)}35%{opacity:.4}100%{opacity:0;transform:scale(var(--wave-scale,15))}}
.tap-glow.calm{width:0;height:0;transform:none;opacity:1}.tap-glow.calm:before{width:44px;height:44px;left:-22px;top:-22px;animation:none;opacity:.3}
.ambient-toggle{position:fixed;right:16px;bottom:14px;z-index:35;padding:9px 13px;min-height:40px;font:10px var(--sans);color:var(--ink);border:1px solid var(--line);border-radius:24px;background:var(--bg);box-shadow:inset 0 1px var(--highlight),0 3px 12px var(--shadow)}
.ambient-toggle[aria-pressed="true"]{border-color:var(--accent)}
.ambient-paused .glass-wallpaper *,.page-asleep .glass-wallpaper *,.previewing .glass-wallpaper *,.orb-exploring .glass-wallpaper *{animation-play-state:paused!important}
.ambient-paused .name-title:before,.ambient-paused .name-title:after,.ambient-paused .hero-art *{animation-play-state:paused!important}
@media(max-width:680px),(prefers-reduced-data:reduce){.drift-2{display:none}.wallpaper-drift{left:74%;top:25%;scale:.65;animation-duration:45s}.drift-1{left:-25%;top:80%;scale:.5}.ambient-toggle{font-size:9px;right:12px;bottom:10px;min-height:38px}}
@media(prefers-reduced-motion:reduce){.glass-wallpaper *{animation:none!important}.wallpaper-prism{transform:rotateX(28deg) rotateY(-32deg) rotateZ(15deg)}.screen-wave{display:none!important}.name-title:before{animation:none!important;opacity:.65}.tap-glow{transform:none!important}.tap-glow:before{animation:none!important;opacity:.3;width:44px;height:44px;left:-22px;top:-22px}}
@media(forced-colors:active){.glass-wallpaper,.screen-wave{display:none}.ambient-toggle{background:Canvas;color:CanvasText;border:1px solid CanvasText}}
.touch-wave-layer{position:fixed;inset:0;overflow:hidden;contain:strict;pointer-events:none!important;z-index:99}.touch-wave-layer *{pointer-events:none!important}
/* Cull back-facing panes and keep a single compositor animation per floating solid. */
.wallpaper-drift{animation:none}.wallpaper-prism{animation:wallpaper-solid 42s ease-in-out infinite}.prism-face{backface-visibility:hidden}
.drift-1 .wallpaper-prism{animation-duration:52s;animation-delay:-17s}.drift-2 .wallpaper-prism{animation-duration:47s;animation-delay:-26s}
@keyframes wallpaper-solid{0%,100%{transform:translate3d(-10px,8px,0) rotateX(28deg) rotateY(-32deg) rotateZ(15deg)}50%{transform:translate3d(18px,-30px,35px) rotateX(50deg) rotateY(30deg) rotateZ(-7deg)}}
.name-title:after{mask-image:radial-gradient(ellipse,#000 30%,transparent 72%);-webkit-mask-image:radial-gradient(ellipse,#000 30%,transparent 72%)}
.hero-art .core-readout{display:none}
/* Keep the scroll edge light wholly inside the viewport, including during resize. */
.scroll-glass-light{right:0;width:80px;background:radial-gradient(ellipse at right,rgba(var(--core-rgb),.15),transparent 72%)}
@media(max-width:680px){.scroll-glass-light{right:0;width:50px}}
/* The moving name caustic stays inside its hero column at every viewport size. */
.hero-copy{overflow:clip}

/* The home-page nucleus uses the same spatial meshes and neural shader as the explorer.
   Pointer-transparent canvas keeps native finger scrolling and navigation intact. */
.hero-neural-stage{position:absolute;inset:0 0 36px;z-index:4;pointer-events:none;contain:layout paint}
.hero-neural-canvas{display:block;width:100%;height:100%;pointer-events:none}
.hero-art.hero-webgl .depth-scene{visibility:hidden}.hero-art.hero-webgl .depth-scene *{animation:none!important}
.hero-neural-caption{position:absolute;top:26px;left:12px;font:7px var(--sans);letter-spacing:1.3px;color:var(--muted);white-space:nowrap;pointer-events:none}
.hero-art .hero-signal-toggle{position:absolute;right:12px;top:12px;z-index:6;border-radius:18px;padding:9px 12px;font-size:9px;min-height:36px}
@media(max-width:680px){.hero-neural-stage{inset:0 0 40px}.hero-neural-caption{top:14px;font-size:6px;letter-spacing:1px}.hero-art .hero-signal-toggle{top:0;right:0}}

/* Explicit quality choice keeps the detailed home scene accessible without the explorer. */
.hero-quality-control{position:absolute;z-index:8;right:0;top:56px;padding:6px 9px;font-size:9px;display:flex;align-items:center;gap:4px;border-radius:12px;border:1px solid var(--line);background:var(--glass);color:var(--muted)}.hero-quality-control select{min-height:32px;max-width:125px;font:10px var(--sans);border:0;background:var(--bg);color:var(--ink);border-radius:8px;padding:4px}.hero-quality-control:focus-within{outline:2px solid var(--accent)}
@media(max-width:680px){.hero-quality-control{top:43px;font-size:8px;padding:3px 5px}.hero-quality-control select{max-width:103px;font-size:9px}}

.apk-downloads{margin:10px 0 0;border-top:1px solid var(--line);font-size:11px}.apk-downloads summary{cursor:pointer;min-height:44px;padding:13px 0;font-size:11px}.apk-download-note{margin:0 0 12px;color:var(--muted);font-size:10px;line-height:1.7}.apk-download-groups{display:grid;gap:12px;margin:0 0 14px}.apk-download-group h4{margin:8px 0 5px;color:var(--ink);font-size:10px;letter-spacing:.04em}.apk-download-group ul{list-style:none;margin:0;padding:0}.apk-download-group li+li{margin-top:2px}.apk-download-group a{display:flex;align-items:center;min-height:36px;padding:4px 0;color:var(--muted);font-size:10px;line-height:1.5;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.apk-download-group a:hover,.apk-download-group a:focus-visible{color:var(--accent)}

/* Prominent stable APK action: transparent glass, crisp border and restrained ambient glow. */
.project-card .project-links a.apk-primary-download{isolation:isolate;position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:56px;width:min(100%,360px);padding:13px 19px;border:1px solid color-mix(in srgb,var(--accent) 52%,var(--highlight));border-radius:16px;background:linear-gradient(132deg,color-mix(in srgb,var(--accent) 17%,transparent),var(--glass) 52%,color-mix(in srgb,var(--accent) 9%,transparent));box-shadow:inset 0 1px 0 var(--highlight),0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent),0 8px 22px var(--shadow),0 0 24px color-mix(in srgb,var(--accent) 19%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:var(--ink);font-size:12px;font-weight:700;letter-spacing:.015em;text-decoration:none;transform:none}
.project-card .project-links a.apk-primary-download::before{content:"";position:absolute;z-index:-1;inset:-45%;pointer-events:none;background:radial-gradient(ellipse at 24% 8%,color-mix(in srgb,var(--accent) 25%,transparent),transparent 60%);opacity:.72}
.project-card .project-links a.apk-primary-download:hover{border-color:var(--accent);box-shadow:inset 0 1px 0 var(--highlight),0 0 0 1px color-mix(in srgb,var(--accent) 20%,transparent),0 9px 25px var(--shadow),0 0 30px color-mix(in srgb,var(--accent) 27%,transparent);color:var(--ink);transform:translateY(-2px)}
.project-card .project-links a.apk-primary-download:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
@media(max-width:680px){.project-card .project-links a.apk-primary-download{width:100%;min-height:56px;padding:14px 16px;font-size:12px}}
