:root{color-scheme:dark;--bg:#17151b;--text:#f6f4f7;--muted:#aaa4af;--accent:#db91ec;--border:#353139;--sans:'Inter',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--accent);outline-offset:6px}h1,h2,h3,p{margin-top:0}.wrap{width:min(1080px,calc(100% - 64px));margin:auto}.header{display:flex;justify-content:space-between;align-items:center;padding:26px 0}.brand{display:flex;gap:12px;align-items:center;font-weight:600}.brand-icon{color:var(--accent);font-size:25px}.brand-sub{color:var(--muted);font-weight:400}nav{display:flex;gap:28px}nav a{font-size:13px;padding:10px 0}.hero{display:grid;grid-template-columns:1.5fr 1fr;align-items:center;gap:45px;padding:70px 0 80px}h1{font-size:clamp(48px,6.2vw,78px);font-weight:600;letter-spacing:-.065em;line-height:1.04;white-space:nowrap;margin-bottom:25px}.title-dot{color:#c359dc}.intro{font-size:18px;line-height:1.2;max-width:355px;color:#bcb6c3;margin-bottom:28px}.intro strong{font-weight:500;color:var(--text)}.button{display:inline-flex;gap:24px;align-items:center;font-size:13px;font-weight:500;background:#8d03ac;border-radius:12px;color:white;padding:13px 18px;transition:background .2s}.button:hover{background:#a621c3}.hero-art{position:relative;display:grid;place-items:center;min-height:285px;background:#28212e;border:1px solid #483b51;border-radius:18px;overflow:hidden;transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s}.hero-art img{width:73%;height:auto;margin-top:30px;transform:rotate(-12deg)}.window-bar{position:absolute;inset:0 0 auto;height:36px;background:#322a38;display:flex;align-items:center;justify-content:space-between;padding:0 13px;font-size:10px;color:#b9aebf;border-bottom:1px solid #483b51}.window-dots{display:flex;gap:6px;width:43px}.window-dots i{width:9px;height:9px;border-radius:50%;background:#ff6058}.window-dots i:nth-child(2){background:#ffbd2e}.window-dots i:nth-child(3){background:#28c840}.window-spacer{width:43px}.art-grid,.art-bottom{display:none}.projects{padding-bottom:70px}.section-head{margin-bottom:25px}h2{font-size:25px;line-height:1.2;letter-spacing:-.8px;font-weight:600}.featured{display:grid;grid-template-columns:1fr 1fr;min-height:290px;border-radius:38px;background:#0069d9;overflow:hidden;font-family:'Manrope',var(--sans);position:relative;transition:transform .25s}.featured-copy{padding:36px 40px}.featured h3{font-size:34px;letter-spacing:-1px;line-height:1.2;margin:18px 0 12px}.featured h3>span{display:none}.featured p{font-size:15px;line-height:1.4;max-width:310px;color:#e1eeff;margin-bottom:24px}.badge{font-size:11px;font-weight:600;color:#fff}.badge:before{content:'';display:inline-block;width:6px;height:6px;background:#adffb9;border-radius:50%;margin-right:7px}.text-link{font-size:13px;font-weight:600}.text-link>span{margin-left:8px}.unifinder-art{display:grid;place-items:center;padding:40px;background:#ffffff0a}.uf-logo{width:100%;max-width:310px;height:auto;background:#fff;border-radius:20px;padding:25px}.unifinder-art .window-bar,.uf-topics,.uf-domain,.tags{display:none}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:22px}.app-card{aspect-ratio:1;min-width:0;border-radius:36px;padding:28px;display:flex;flex-direction:column;justify-content:space-between;background:#f4f1f7;color:#201724;position:relative;overflow:hidden}.app-icon{color:#8d03ac;display:flex;align-items:center;flex:1}.app-icon svg{width:83px;height:83px;stroke-width:1.35}.app-copy h3{font-size:23px;letter-spacing:-.8px;line-height:1.1;margin:12px 0 7px;font-weight:600}.app-copy p{font-size:13px;line-height:1.35;max-width:195px;margin-bottom:9px;color:#6b606f}.app-status{font-size:10px;color:#807587}.app-card:nth-child(2){background:#2b1736;color:#f5d9ff}.app-card:nth-child(2) .app-icon{color:#e09bf3}.app-card:nth-child(2) .app-copy p,.app-card:nth-child(2) .app-status{color:#c1a9ca}.app-card:nth-child(3){background:#e0d1ea}.app-card:nth-child(3) .app-icon{color:#56316a}.featured:hover,a.app-card:hover{transform:translateY(-5px)}a.app-card{transition:transform .25s}.repo-link{display:inline-flex;gap:18px;font-size:12px;color:var(--muted);margin-top:24px}.about,.connect{border-top:1px solid var(--border);padding:50px 0;display:grid;grid-template-columns:1fr 1.2fr;gap:75px}.eyebrow{font-size:12px;color:var(--muted);margin-bottom:12px}.about-details{display:flex;flex-direction:column;gap:7px;font-size:10px;color:var(--muted);margin-top:25px}.about-copy p{font-size:15px;line-height:1.5;color:var(--muted);margin-bottom:16px}.about-copy .about-lead{font-size:17px;color:#e4dfe8}.interests{display:none}.connect p:not(.eyebrow){font-size:14px;color:var(--muted);margin:20px 0}.socials{display:flex;flex-direction:column;gap:0}.socials>a{display:flex;justify-content:space-between;border-bottom:1px solid var(--border);padding:14px 0}.socials>a span{color:var(--muted);font-size:12px}.socials>a:hover{color:var(--accent)}.connect .social-note{font-size:10px}.footer{border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:25px 0;font-size:11px;color:var(--muted)}.footer-brand{font-size:20px;color:var(--text)}.skip{position:absolute;top:-100px}.skip:focus{top:10px;background:#8d03ac;padding:12px;z-index:9}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.reveal-pending{opacity:0;transform:translateY(16px)}.reveal-ready{transition:opacity .5s,transform .5s}.reveal-visible{opacity:1;transform:none}
@media(max-width:900px){.hero{gap:25px}.hero-art{min-height:245px}.app-card{padding:23px;border-radius:30px}.app-icon svg{width:65px;height:65px}.app-copy h3{font-size:20px}.about,.connect{gap:35px}}
@media(max-width:650px){.wrap{width:calc(100% - 36px)}.header{padding:16px 0}.header nav{gap:15px}.nav-contact{display:none}.brand{font-size:14px}.hero{grid-template-columns:1fr;padding:40px 0 45px;gap:30px}h1{font-size:clamp(42px,10.5vw,65px)}.intro{font-size:17px;max-width:330px}.hero-art{min-height:240px;width:100%}.hero-art img{width:210px}.featured{border-radius:30px;grid-template-columns:1fr;min-height:0}.featured-copy{padding:28px}.featured h3{font-size:29px}.unifinder-art{display:none}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.app-card{padding:19px;border-radius:28px;aspect-ratio:1;min-height:185px}.app-icon svg{width:50px;height:50px}.app-copy h3{font-size:17px;margin-bottom:5px}.app-copy p{display:none}.app-status{font-size:10px}.app-card:last-child{grid-column:1/-1;aspect-ratio:2.1;min-height:160px;flex-direction:row;align-items:center;gap:15px}.app-card:last-child .app-icon{flex:0 0 35%;justify-content:center}.app-card:last-child .app-icon svg{width:70px;height:70px}.app-card:last-child .app-copy{flex:1}.app-card:last-child .app-copy p{display:block}.projects{padding-bottom:42px}.about,.connect{grid-template-columns:1fr;gap:25px;padding:35px 0}.footer{flex-wrap:wrap;gap:20px}.footer>span{order:3;width:100%}.footer>a:last-child{margin-left:auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.hero-art{transform:none!important}.reveal-pending{opacity:1;transform:none}}

.app-card{width:100%}

/* Desktop windows: shared neutral surfaces with restrained tinting. */
:root{--bg:#191b1e;--text:#eeeff1;--muted:#a4a9af;--accent:#b4c5be;--border:#363a3e}
.title-dot,.brand-icon{color:#b4c5be}.button{background:#dce3df;color:#202a26}.button:hover{background:#f0f4f1}.hero-art{background:linear-gradient(150deg,#2d3335,#25282e);border-color:#42464b}.window-bar{background:#303337;border-color:#45484d;color:#b8bdc3}
.featured,.app-card,.app-card:nth-child(2),.app-card:nth-child(3){border:1px solid #454a50;border-radius:13px;box-shadow:0 12px 25px #00000018;color:var(--text);position:relative;overflow:hidden;transition:transform .2s,border-color .2s}
.featured{background:linear-gradient(120deg,#292f35,#2c3640);grid-template-columns:1.1fr 1fr;min-height:290px;padding-top:37px}.featured-copy{padding:29px 34px}.featured h3{font-size:30px;font-weight:600}.featured p{color:#b9c3cd}.featured .badge{color:#a9c4b7}.featured .badge:before{background:#9bb7aa}.featured:hover,a.app-card:hover{transform:translateY(-3px);border-color:#747d86}.unifinder-art{background:none;padding:32px}.uf-logo{background:#e7ecef;border-radius:10px;padding:24px;max-width:310px}.featured .text-link{color:#d4e0eb}
.project-titlebar{position:absolute;top:0;left:0;right:0;height:37px;display:flex;align-items:center;justify-content:space-between;padding:0 13px;background:#ffffff04;border-bottom:1px solid #ffffff12;font:10px/1 Inter,sans-serif;color:#a9afb6;letter-spacing:.1px}.traffic-lights{display:flex;gap:6px;width:43px}.traffic-lights i{width:9px;height:9px;border-radius:50%;background:#de7772}.traffic-lights i:nth-child(2){background:#d7b86d}.traffic-lights i:nth-child(3){background:#83b48c}.chrome-spacer{width:43px}
.project-grid{gap:18px;margin-top:18px}.app-card{aspect-ratio:auto;min-height:245px;padding:61px 26px 25px;background:linear-gradient(135deg,#303632,#272d2d)}.app-card:nth-child(2){background:linear-gradient(135deg,#34323a,#2c2d33)}.app-card:nth-child(3){background:linear-gradient(135deg,#38352f,#2f3030)}.app-icon{flex:0 0 auto;margin-bottom:18px;color:#b4c5be}.app-card:nth-child(2) .app-icon{color:#c2becd}.app-card:nth-child(3) .app-icon{color:#ccc5b7}.app-icon svg{width:43px;height:43px;stroke-width:1.5}.app-copy h3{font-size:20px;letter-spacing:-.5px;margin:0 0 9px}.app-copy p,.app-card:nth-child(2) .app-copy p{color:#adb3b9;font-size:13px}.app-status,.app-card:nth-child(2) .app-status{color:#959ea7}.app-copy p{min-height:35px;margin-bottom:12px}.app-card:nth-child(3) .app-copy p{color:#b8b5ae}
@media(max-width:650px){.project-grid{grid-template-columns:1fr;gap:15px}.app-card,.app-card:last-child{display:grid;grid-template-columns:48px 1fr;gap:19px;align-items:center;min-height:175px;aspect-ratio:auto;padding:62px 23px 23px;border-radius:12px}.app-card:last-child .app-icon{display:block}.app-icon,.app-card:last-child .app-icon{margin:0}.app-icon svg,.app-card:last-child .app-icon svg{width:42px;height:42px}.app-copy h3{font-size:18px}.app-copy p{display:block;min-height:0;max-width:none}.featured{border-radius:12px;min-height:0;grid-template-columns:1fr}.featured-copy{padding:26px}.featured h3{font-size:28px}.featured .unifinder-art{display:none}}

/* Apple-inspired colour pass: clear glass, soft system colours, quiet depth. */
:root{
  --bg:#0d0f13;
  --text:#f5f5f7;
  --muted:#a1a1aa;
  --accent:#64a8ff;
  --border:#ffffff17;
}
body{
  background:
    radial-gradient(circle at 82% 5%,#3478f61a 0,transparent 26rem),
    radial-gradient(circle at 8% 36%,#bf5af218 0,transparent 24rem),
    linear-gradient(180deg,#101217 0%,#0d0f13 58%,#111216 100%);
  background-attachment:fixed;
}
.header{position:relative}.header:after{content:'';position:absolute;inset:auto 0 0;height:1px;background:linear-gradient(90deg,transparent,#ffffff1c,transparent)}
.brand-icon,.title-dot{color:#64a8ff}.brand-sub{color:#8e8e93}
.header nav a{color:#c7c7cc;transition:color .2s}.header nav a:hover{color:#fff}
.hero{padding-top:62px}.hero h1{font-weight:650;letter-spacing:-.07em}.intro{color:#aeb0b7}.intro strong{color:#fff}
.button{background:#0a84ff;color:#fff;border-radius:980px;padding:12px 19px;box-shadow:0 8px 24px #007aff2b;transition:transform .2s,background .2s,box-shadow .2s}
.button:hover{background:#2997ff;transform:translateY(-2px);box-shadow:0 12px 30px #007aff3d}
.hero-art{
  border-color:#ffffff20;
  border-radius:22px;
  background:
    radial-gradient(circle at 22% 20%,#bf5af23b,transparent 45%),
    radial-gradient(circle at 82% 82%,#0a84ff42,transparent 46%),
    linear-gradient(145deg,#26232e,#17202d);
  box-shadow:0 26px 70px #0000005c,inset 0 1px #ffffff24;
}
.window-bar,.project-titlebar{background:#ffffff0d;border-color:#ffffff17;color:#d1d1d6;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}
.window-dots i,.traffic-lights i{background:#ff5f57}.window-dots i:nth-child(2),.traffic-lights i:nth-child(2){background:#febc2e}.window-dots i:nth-child(3),.traffic-lights i:nth-child(3){background:#28c840}
.projects{padding-top:14px}.section-head h2{font-size:28px;letter-spacing:-1.1px}
.featured,.app-card,.app-card:nth-child(2),.app-card:nth-child(3){
  border-color:#ffffff1f;
  box-shadow:0 22px 55px #00000038,inset 0 1px #ffffff17;
}
.featured{
  background:#1d4f78;
}
.featured:hover,a.app-card:hover{border-color:#ffffff45;transform:translateY(-4px);box-shadow:0 30px 70px #0000004a,inset 0 1px #ffffff26}
.featured p{color:#c7d2e0}.featured .badge{color:#b9ead0}.featured .badge:before{background:#30d158;box-shadow:0 0 12px #30d15899}.featured .text-link{color:#9ac8ff}
.uf-logo{background:#f5f5f7;border-radius:15px;box-shadow:0 16px 44px #00182f52}
.app-card{background:#193a2b}
.app-card:nth-child(2){background:#35243e}
.app-card:nth-child(3){background:#43331f}
.app-icon{color:#5ee08c}.app-card:nth-child(2) .app-icon{color:#d98aff}.app-card:nth-child(3) .app-icon{color:#ffb340}
.app-copy p,.app-card:nth-child(2) .app-copy p,.app-card:nth-child(3) .app-copy p{color:#b4b4bd}.app-status,.app-card:nth-child(2) .app-status{color:#8e8e98}
.repo-link{color:#98989f}.repo-link:hover{color:#64a8ff}
.about,.connect,.footer{border-color:#ffffff16}.eyebrow,.about-details{color:#7d7d86}.about-copy p,.connect p:not(.eyebrow){color:#a6a6ae}.about-copy .about-lead{color:#e5e5ea}
.socials>a{border-color:#ffffff14;transition:color .2s,padding .2s}.socials>a:hover{color:#64a8ff;padding-left:6px}.footer-brand span{color:#64a8ff}
@media(max-width:650px){
  body{background:radial-gradient(circle at 90% 7%,#3478f61c,transparent 20rem),linear-gradient(#101217,#0d0f13)}
  .hero{padding-top:34px}.hero-art{border-radius:19px}
  .featured,.app-card,.app-card:last-child{border-radius:17px}
}

/* Interaction and utility surfaces. */
.hero-art{background:#202936}
.hero-art img{animation:turtle-drift 5.5s ease-in-out infinite;transform-origin:50% 58%;will-change:transform}
@keyframes turtle-drift{0%,100%{transform:translate3d(0,0,0) rotate(-12deg)}50%{transform:translate3d(0,-9px,0) rotate(-9deg)}}
.featured,.app-card,.app-card:nth-child(2),.app-card:nth-child(3){border-color:#686b70}
.project-titlebar{background:#34363a;border-bottom-color:#55585d}
.project-toggle{font:inherit;text-align:left;cursor:pointer;width:100%}
.project-toggle:focus-visible{outline:3px solid #64a8ff;outline-offset:4px}
.drawer-arrow{display:inline-block;transition:transform .25s}.project-toggle[aria-expanded=true] .drawer-arrow{transform:rotate(180deg)}
.project-drawer{overflow:hidden;margin-top:18px;padding:25px;background:#1b1d22;border:1px solid #55585d;border-radius:15px;box-shadow:0 18px 45px #0004;animation:drawer-in .32s ease both}
.project-drawer[hidden]{display:none}
@keyframes drawer-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.drawer-heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:20px}.drawer-heading h3{font-size:22px;margin:4px 0 0}.drawer-heading>a,.drawer-heading>span{font-size:12px;color:#64a8ff}.drawer-kicker{font-size:10px;color:#8e8e98}
.drawer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.drawer-grid a{display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:11px;background:#25272d;border:1px solid #ffffff12;transition:background .2s,transform .2s}.drawer-grid a:hover{background:#2d3037;transform:translateY(-2px)}.drawer-grid strong{font-size:14px}.drawer-grid span,.project-drawer>p{font-size:12px;color:#96969f}.project-drawer>p{margin:0;max-width:620px}
.ad-slot{display:grid;place-items:center;text-align:center;border:1px dashed #53565c;background:#17191d;color:#777b82}.ad-slot span{font-size:9px;letter-spacing:.13em;text-transform:uppercase}.ad-slot p{font-size:11px;margin:6px 0 0}.ad-slot-wide{min-height:96px;border-radius:12px;margin-top:32px}
.social-name{display:inline-flex;align-items:center;gap:11px;color:inherit!important;font-size:14px!important}.social-name svg{width:19px;height:19px;fill:currentColor;flex:0 0 19px}.socials>a>span:last-child{align-self:center}
@media(max-width:650px){.drawer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.drawer-heading{align-items:start;flex-direction:column;gap:10px}.project-drawer{padding:20px}.ad-slot-wide{min-height:82px}}
@media(prefers-reduced-motion:reduce){.hero-art img{animation:none}.project-drawer{animation:none}.drawer-arrow{transition:none}}

/* Final window palette and clearer controls. */
:root{--bg:#15191e;--text:#f5f6f7;--muted:#adb4bc;--accent:#8fc5ff;--border:#3c444e}
body{background:radial-gradient(circle at 50% -18rem,#344557 0,transparent 46rem),linear-gradient(180deg,#171c22 0%,#12161b 100%);background-attachment:fixed}
.brand-icon{width:38px;height:38px;display:grid;place-items:center;overflow:hidden;border:1px solid #515d69;border-radius:11px;background:#2b3440;box-shadow:inset 0 1px #ffffff19}
.brand-icon img{width:34px;height:34px;object-fit:contain;transform:rotate(-12deg)}
.hero-art{background:#2b3440;border-color:#56616d;border-radius:22px;box-shadow:0 24px 58px #05080b52,inset 0 1px #ffffff17}
.featured,.app-card,.app-card:nth-child(2),.app-card:nth-child(3){border-color:#56616d;border-radius:22px;background:#2b3440;box-shadow:0 18px 42px #05080b38,inset 0 1px #ffffff12}
.featured{background:#304052}.app-card{background:#2d403b}.app-card:nth-child(2){background:#373a48}.app-card:nth-child(3){background:#403b34}
.window-bar,.project-titlebar{background:#46505b;border-bottom-color:#626e7a;color:#eef1f4;backdrop-filter:none;-webkit-backdrop-filter:none}
.project-titlebar{height:42px;font-size:11px;font-weight:550}.featured{padding-top:42px}.app-card{padding-top:66px}
.featured:hover,a.app-card:hover,.project-toggle:hover{border-color:#7e8c99;transform:translateY(-4px);box-shadow:0 28px 60px #05080b52,inset 0 1px #ffffff19}
.project-toggle{transition:transform .2s,border-color .2s,box-shadow .2s}.project-toggle:hover .app-status,a.app-card:hover .app-status{color:#fff}
.app-status,.app-card:nth-child(2) .app-status{display:inline-flex;align-items:center;gap:7px;color:#dce5ed;font-size:14px;font-weight:650;line-height:1.3;margin-top:3px}
.app-copy p,.app-card:nth-child(2) .app-copy p,.app-card:nth-child(3) .app-copy p{color:#c5ccd3}
.text-link{font-size:14px}.repo-link{font-size:15px;font-weight:600;color:#d6dde5;margin-top:28px;padding:10px 0}.repo-link:hover{color:#fff}
.project-drawer{background:#252d37;border-color:#56616d;border-radius:20px;transform-origin:center top;box-shadow:0 25px 65px #05080b66,inset 0 1px #ffffff12}
.project-drawer.drawer-opening{animation:window-expand .48s cubic-bezier(.2,.85,.25,1) both}
@keyframes window-expand{0%{opacity:.1;transform:translate(var(--drawer-x),var(--drawer-y)) scale(var(--drawer-scale-x),var(--drawer-scale-y));border-radius:22px}65%{opacity:1}100%{opacity:1;transform:translate(0,0) scale(1);border-radius:20px}}
.drawer-heading>a,.drawer-heading>span{font-size:14px;font-weight:600;color:#9dccff}.drawer-grid a{background:#313b46;border-color:#ffffff17;padding:18px}.drawer-grid strong{font-size:15px}.drawer-grid span{font-size:13px;color:#b9c9d8}
@media(max-width:650px){.brand-icon{width:34px;height:34px}.brand-icon img{width:30px;height:30px}.featured,.app-card,.app-card:last-child,.hero-art{border-radius:19px}.project-titlebar{height:40px}.app-card,.app-card:last-child{padding-top:62px}.app-status{font-size:13px}.repo-link{font-size:14px}}
@media(prefers-reduced-motion:reduce){.project-drawer.drawer-opening{animation:none}}

/* Slate, violet and graphite project palette. */
.hero-copy .intro{margin-bottom:0}
.featured{background:#355d7b}
.featured p{color:#d5e4ef}.featured .text-link{color:#c4e3ff}
.project-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.project-grid>.project-drawer{grid-column:1/-1;margin-top:0}
.app-card,.app-card:nth-child(1){background:#d8dde3;color:#171b20}
.app-card:nth-child(1) .app-icon{color:#313943}.app-card:nth-child(1) .app-copy p{color:#59636e}.app-card:nth-child(1) .app-status{color:#2f3944}
.app-card:nth-child(2){background:#514364;color:#f7f3fb}.app-card:nth-child(2) .app-icon{color:#d5b4ff}.app-card:nth-child(2) .app-copy p{color:#d4cbdc}.app-card:nth-child(2) .app-status{color:#f1e8f8}
.app-card:nth-child(3){background:#292e35;color:#f5f6f7}.app-card:nth-child(3) .app-icon{color:#b8c1cb}.app-card:nth-child(3) .app-copy p{color:#bec5cc}.app-card:nth-child(3) .app-status{color:#e4e8ec}
.app-card:nth-child(4){background:#3d4652;color:#f5f6f7}.app-card:nth-child(4) .app-icon{color:#a9d3ff}.app-card:nth-child(4) .app-copy p{color:#c7d0da}.app-card:nth-child(4) .app-status{color:#e8eef5}
.project-drawer{animation:none}
.project-drawer.drawer-opening{animation:window-expand .46s cubic-bezier(.2,.82,.25,1) both}
.project-drawer.drawer-closing{animation:window-expand .34s cubic-bezier(.5,0,.8,.2) reverse both;pointer-events:none}
.repo-link{display:flex;width:max-content;margin-left:auto}
.automation-project{display:grid;grid-template-columns:1fr auto;align-items:end;gap:28px;padding:21px;border:1px solid #ffffff17;border-radius:14px;background:#313b46}.automation-type{font-size:10px;letter-spacing:.09em;color:#9fb0c0}.automation-project h4{font-size:18px;margin:7px 0}.automation-project p{max-width:650px;margin:0;color:#b9c5d0;font-size:13px;line-height:1.5}.automation-project>a{font-size:14px;font-weight:650;color:#acd3ff;white-space:nowrap}.drawer-footnote{margin-top:16px!important}
@media(max-width:650px){.project-grid{grid-template-columns:1fr}.app-card:last-child{grid-column:auto;aspect-ratio:auto;min-height:175px;flex-direction:initial}.automation-project{grid-template-columns:1fr;align-items:start;gap:18px}.repo-link{margin-left:0}.featured{background:#355d7b}}
@media(prefers-reduced-motion:reduce){.project-drawer.drawer-opening,.project-drawer.drawer-closing{animation:none}}

/* Light is the default. Each tool keeps its own colour identity. */
:root{color-scheme:light;--bg:#eef1f4;--text:#171b20;--muted:#66717c;--accent:#286da8;--border:#c9d0d7}
body{background:radial-gradient(circle at 50% -20rem,#ffffff 0,transparent 48rem),linear-gradient(180deg,#f2f4f6 0%,#e9edf0 100%);color:var(--text);transition:background .25s,color .25s}
.header:after{background:linear-gradient(90deg,transparent,#6f7b861f,transparent)}
.brand-sub{color:#737c85}.header nav a{color:#555f69}.header nav a:hover{color:#11161b}
.title-dot{color:#3486c7}.intro{color:#5d6873}.intro strong{color:#171b20}
.theme-switch{display:inline-flex;gap:2px;margin-top:18px;padding:3px;border:1px solid #c4cbd2;border-radius:9px;background:#dfe4e8;box-shadow:inset 0 1px #ffffffb8}
.theme-switch button{border:0;border-radius:6px;background:transparent;color:#626c76;padding:5px 9px;font:600 11px/1 Inter,sans-serif;cursor:pointer}.theme-switch button span{margin-right:4px}.theme-switch button[aria-pressed=true]{background:#fff;color:#1e242a;box-shadow:0 1px 4px #27313a20}
.brand-icon{background:#dce2e7;border-color:#bac3cc;box-shadow:inset 0 1px #fff}
.hero-art{background:#dde3e8;border-color:#b9c3cc;box-shadow:0 24px 58px #52606c20,inset 0 1px #fff}
.window-bar,.project-titlebar{background:#edf0f3;border-bottom-color:#cdd3d9;color:#4b5660;box-shadow:inset 0 1px #fff}
.featured{background:#d8eaf8;color:#15222e;border-color:#adc6d8;box-shadow:0 18px 42px #48677e20,inset 0 1px #fff}.featured p{color:#455e72}.featured .badge{color:#34634b}.featured .text-link{color:#1c659e}.uf-logo{box-shadow:0 16px 38px #4b718e26}
.featured:hover,a.app-card:hover,.project-toggle:hover{border-color:#929da7;box-shadow:0 25px 54px #52606c2b,inset 0 1px #fff}
.app-card,.app-card:nth-child(1){background:#dcefe3;color:#183326;border-color:#abc8b6}.app-card:nth-child(1) .app-icon{color:#217346}.app-card:nth-child(1) .app-copy p{color:#526d5e}.app-card:nth-child(1) .app-status{color:#1d6240}
.app-card:nth-child(2){background:#ebe1f5;color:#352443;border-color:#c6b2d8}.app-card:nth-child(2) .app-icon{color:#78519b}.app-card:nth-child(2) .app-copy p{color:#685876}.app-card:nth-child(2) .app-status{color:#624080}
.app-card:nth-child(3){background:#dfe4ea;color:#222930;border-color:#b9c1c9}.app-card:nth-child(3) .app-icon{color:#52606e}.app-card:nth-child(3) .app-copy p{color:#5e6974}.app-card:nth-child(3) .app-status{color:#3f4b56}
.app-card:nth-child(4){background:#f3e6ce;color:#3b2c17;border-color:#d8c19b}.app-card:nth-child(4) .app-icon{color:#9a651c}.app-card:nth-child(4) .app-copy p{color:#725e3e}.app-card:nth-child(4) .app-status{color:#7c5118}
.project-drawer{background:#f7f9fa;border-color:#bdc6ce;box-shadow:0 25px 65px #52606c2b,inset 0 1px #fff;color:#20262c}.drawer-kicker{color:#75808a}.drawer-heading>a,.drawer-heading>span{color:#276d9f}.drawer-grid a,.automation-project{background:#e9edf1;border-color:#cdd4da}.drawer-grid a:hover{background:#dfe5ea}.drawer-grid span,.project-drawer>p,.automation-project p{color:#606d79}.automation-type{color:#6a7885}.automation-project>a{color:#276d9f}
.repo-link{color:#4d5964}.repo-link:hover{color:#171b20}
.about,.connect,.footer{border-color:#cbd2d8}.eyebrow,.about-details{color:#727e89}.about-copy p,.connect p:not(.eyebrow){color:#626e79}.about-copy .about-lead{color:#263039}.socials>a{border-color:#cdd4da}.socials>a:hover{color:#286da8}.footer-brand{color:#171b20}

html[data-theme=dark]{color-scheme:dark;--bg:#15191e;--text:#f5f6f7;--muted:#adb4bc;--accent:#8fc5ff;--border:#3c444e}
html[data-theme=dark] body{background:radial-gradient(circle at 50% -18rem,#344557 0,transparent 46rem),linear-gradient(180deg,#171c22 0%,#12161b 100%);color:var(--text)}
html[data-theme=dark] .header:after{background:linear-gradient(90deg,transparent,#ffffff1c,transparent)}
html[data-theme=dark] .brand-sub{color:#8e8e93}html[data-theme=dark] .header nav a{color:#c7c7cc}html[data-theme=dark] .header nav a:hover{color:#fff}
html[data-theme=dark] .title-dot{color:#64a8ff}html[data-theme=dark] .intro{color:#aeb0b7}html[data-theme=dark] .intro strong{color:#fff}
html[data-theme=dark] .theme-switch{background:#222932;border-color:#46515d;box-shadow:inset 0 1px #ffffff0f}html[data-theme=dark] .theme-switch button{color:#9da8b3}html[data-theme=dark] .theme-switch button[aria-pressed=true]{background:#3a4551;color:#fff;box-shadow:0 1px 5px #0006}
html[data-theme=dark] .brand-icon{background:#2b3440;border-color:#515d69;box-shadow:inset 0 1px #ffffff19}html[data-theme=dark] .hero-art{background:#2b3440;border-color:#56616d;box-shadow:0 24px 58px #05080b52,inset 0 1px #ffffff17}
html[data-theme=dark] .window-bar,html[data-theme=dark] .project-titlebar{background:#46505b;border-bottom-color:#626e7a;color:#eef1f4}
html[data-theme=dark] .featured{background:#355d7b;color:#f5f6f7;border-color:#56616d;box-shadow:0 18px 42px #05080b38,inset 0 1px #ffffff12}html[data-theme=dark] .featured p{color:#d5e4ef}html[data-theme=dark] .featured .badge{color:#b9ead0}html[data-theme=dark] .featured .text-link{color:#c4e3ff}
html[data-theme=dark] .app-card:nth-child(1){background:#214b35;color:#f2faf5;border-color:#56616d}html[data-theme=dark] .app-card:nth-child(1) .app-icon{color:#65d997}html[data-theme=dark] .app-card:nth-child(1) .app-copy p{color:#bdd4c6}html[data-theme=dark] .app-card:nth-child(1) .app-status{color:#e1f2e7}
html[data-theme=dark] .app-card:nth-child(2){background:#514364;color:#f7f3fb;border-color:#6e6578}html[data-theme=dark] .app-card:nth-child(2) .app-icon{color:#d5b4ff}html[data-theme=dark] .app-card:nth-child(2) .app-copy p{color:#d4cbdc}html[data-theme=dark] .app-card:nth-child(2) .app-status{color:#f1e8f8}
html[data-theme=dark] .app-card:nth-child(3){background:#292e35;color:#f5f6f7;border-color:#56616d}html[data-theme=dark] .app-card:nth-child(3) .app-icon{color:#b8c1cb}html[data-theme=dark] .app-card:nth-child(3) .app-copy p{color:#bec5cc}html[data-theme=dark] .app-card:nth-child(3) .app-status{color:#e4e8ec}
html[data-theme=dark] .app-card:nth-child(4){background:#59472f;color:#fff8ec;border-color:#76654f}html[data-theme=dark] .app-card:nth-child(4) .app-icon{color:#f0bb6f}html[data-theme=dark] .app-card:nth-child(4) .app-copy p{color:#dfd0b9}html[data-theme=dark] .app-card:nth-child(4) .app-status{color:#fff1dc}
html[data-theme=dark] .featured:hover,html[data-theme=dark] a.app-card:hover,html[data-theme=dark] .project-toggle:hover{border-color:#7e8c99;box-shadow:0 28px 60px #05080b52,inset 0 1px #ffffff19}
html[data-theme=dark] .project-drawer{background:#252d37;border-color:#56616d;box-shadow:0 25px 65px #05080b66,inset 0 1px #ffffff12;color:#f5f6f7}html[data-theme=dark] .drawer-kicker{color:#8e99a4}html[data-theme=dark] .drawer-heading>a,html[data-theme=dark] .drawer-heading>span{color:#9dccff}html[data-theme=dark] .drawer-grid a,html[data-theme=dark] .automation-project{background:#313b46;border-color:#ffffff17}html[data-theme=dark] .drawer-grid a:hover{background:#384451}html[data-theme=dark] .drawer-grid span,html[data-theme=dark] .project-drawer>p,html[data-theme=dark] .automation-project p{color:#b9c5d0}html[data-theme=dark] .automation-type{color:#9fb0c0}html[data-theme=dark] .automation-project>a{color:#acd3ff}
html[data-theme=dark] .repo-link{color:#d6dde5}html[data-theme=dark] .repo-link:hover{color:#fff}html[data-theme=dark] .about,html[data-theme=dark] .connect,html[data-theme=dark] .footer{border-color:#ffffff16}html[data-theme=dark] .eyebrow,html[data-theme=dark] .about-details{color:#7d7d86}html[data-theme=dark] .about-copy p,html[data-theme=dark] .connect p:not(.eyebrow){color:#a6a6ae}html[data-theme=dark] .about-copy .about-lead{color:#e5e5ea}html[data-theme=dark] .socials>a{border-color:#ffffff14}html[data-theme=dark] .socials>a:hover{color:#64a8ff}html[data-theme=dark] .footer-brand{color:#f5f6f7}
@media(max-width:650px){body{background:linear-gradient(180deg,#f2f4f6,#e9edf0)}html[data-theme=dark] body{background:radial-gradient(circle at 90% 7%,#3478f61c,transparent 20rem),linear-gradient(#101217,#0d0f13)}}

/* Stable tool colours, independent from their position in the grid. */
.app-card.tool-qr{background:#dcefe3;color:#183326;border-color:#abc8b6}.app-card.tool-qr .app-icon{color:#217346}.app-card.tool-qr .app-copy p{color:#526d5e}.app-card.tool-qr .app-status{color:#1d6240}
.app-card.tool-color{background:#f5dfdf;color:#452526;border-color:#ddb8b9}.app-card.tool-color .app-icon{color:#b84952}.app-card.tool-color .app-copy p{color:#765657}.app-card.tool-color .app-status{color:#963d44}
.app-card.tool-json{background:#dcecf1;color:#17343d;border-color:#aed0da}.app-card.tool-json .app-icon{color:#19778d}.app-card.tool-json .app-copy p{color:#4d6c74}.app-card.tool-json .app-status{color:#17687b}
.app-card.tool-playground{background:#ebe1f5;color:#352443;border-color:#c6b2d8}.app-card.tool-playground .app-icon{color:#78519b}.app-card.tool-playground .app-copy p{color:#685876}.app-card.tool-playground .app-status{color:#624080}
.app-card.tool-web{background:#dfe4ea;color:#222930;border-color:#b9c1c9}.app-card.tool-web .app-icon{color:#52606e}.app-card.tool-web .app-copy p{color:#5e6974}.app-card.tool-web .app-status{color:#3f4b56}
.app-card.tool-home{background:#f3e6ce;color:#3b2c17;border-color:#d8c19b}.app-card.tool-home .app-icon{color:#9a651c}.app-card.tool-home .app-copy p{color:#725e3e}.app-card.tool-home .app-status{color:#7c5118}
html[data-theme=dark] .hero-art,html[data-theme=dark] .featured,html[data-theme=dark] .app-card,html[data-theme=dark] .project-drawer{box-shadow:0 22px 55px #05080b52}
html[data-theme=dark] .window-bar,html[data-theme=dark] .project-titlebar{box-shadow:none;border-top:0}
html[data-theme=dark] .app-card.tool-qr{background:#214b35;color:#f2faf5;border-color:#486b58}html[data-theme=dark] .app-card.tool-qr .app-icon{color:#65d997}html[data-theme=dark] .app-card.tool-qr .app-copy p{color:#bdd4c6}html[data-theme=dark] .app-card.tool-qr .app-status{color:#e1f2e7}
html[data-theme=dark] .app-card.tool-color{background:#59343a;color:#fff3f4;border-color:#76545a}html[data-theme=dark] .app-card.tool-color .app-icon{color:#ff9ba5}html[data-theme=dark] .app-card.tool-color .app-copy p{color:#dfc4c7}html[data-theme=dark] .app-card.tool-color .app-status{color:#ffe5e8}
html[data-theme=dark] .app-card.tool-json{background:#254957;color:#effaff;border-color:#496b77}html[data-theme=dark] .app-card.tool-json .app-icon{color:#80d4e8}html[data-theme=dark] .app-card.tool-json .app-copy p{color:#c2d9df}html[data-theme=dark] .app-card.tool-json .app-status{color:#e4f7fb}
html[data-theme=dark] .app-card.tool-playground{background:#514364;color:#f7f3fb;border-color:#6e6578}html[data-theme=dark] .app-card.tool-playground .app-icon{color:#d5b4ff}html[data-theme=dark] .app-card.tool-playground .app-copy p{color:#d4cbdc}html[data-theme=dark] .app-card.tool-playground .app-status{color:#f1e8f8}
html[data-theme=dark] .app-card.tool-web{background:#292e35;color:#f5f6f7;border-color:#4d5660}html[data-theme=dark] .app-card.tool-web .app-icon{color:#b8c1cb}html[data-theme=dark] .app-card.tool-web .app-copy p{color:#bec5cc}html[data-theme=dark] .app-card.tool-web .app-status{color:#e4e8ec}
html[data-theme=dark] .app-card.tool-home{background:#59472f;color:#fff8ec;border-color:#76654f}html[data-theme=dark] .app-card.tool-home .app-icon{color:#f0bb6f}html[data-theme=dark] .app-card.tool-home .app-copy p{color:#f0dfc6}html[data-theme=dark] .app-card.tool-home .app-status{color:#fff1dc}

/* Touch devices must follow links on the first tap. Safari otherwise keeps
   layout-changing hover styles active and waits for a second interaction. */
@media (hover:none),(pointer:coarse){
  a.app-card,.featured,.project-toggle,.drawer-grid a,.socials>a,.button,.repo-link{touch-action:manipulation;-webkit-tap-highlight-color:#3478f62b}
  .featured:hover,a.app-card:hover,.project-toggle:hover,.drawer-grid a:hover,.button:hover{transform:none!important}
  .socials>a:hover{padding-left:0}
}
.footer a[href^="mailto:"]{color:var(--muted)}.footer a[href^="mailto:"]:hover{color:var(--text)}
@media(max-width:650px){.footer a[href^="mailto:"]{order:2}.footer>span{order:3}.footer>a:last-child{order:1}}
