/* Homepage compositions. Shared type, spacing, focus and controls live in site.css. */
.portfolio-home .home-hero{background:#fff;padding:16px 0 0}
.portfolio-home .hero-grid{position:relative;isolation:isolate;width:calc(100% - 48px);max-width:1124px;grid-template-columns:1.08fr .92fr;gap:35px;background:#101f36;border-radius:26px;padding:48px 48px 44px;color:white;overflow:hidden}
.portfolio-home .hero-grid::before{content:"";position:absolute;z-index:-1;inset:0;background:radial-gradient(ellipse at 87% 20%,#244d8559,transparent 55%)}
.portfolio-home .hero-grid::after{content:"";position:absolute;z-index:-1;inset:0;background-image:radial-gradient(#97bbff26 .75px,transparent .75px);background-size:23px 23px;mask-image:linear-gradient(to right,transparent 50%,black)}
.portfolio-home .hero-main{position:relative;z-index:2}
.portfolio-home .hero-main h1{font-size:clamp(40px,4.5vw,58px);line-height:1.12;letter-spacing:-.025em;max-width:14ch;margin-bottom:20px}
.portfolio-home .hero-main h1>span{color:#94bdff}
.portfolio-home .hero-main .eyebrow{color:#a4c8ff;font-size:12px;letter-spacing:.08em;text-transform:none;margin-bottom:17px}
.portfolio-home .availability{color:#b6c7dc;font-size:10px;letter-spacing:.02em;padding:6px 11px;border:1px solid #ffffff18;border-radius:100px;margin-bottom:27px}
.portfolio-home .availability::before{background:#8cddb9;width:6px;height:6px}
.hero-role{font-size:13px;font-weight:600;color:#edf4ff;margin-bottom:12px}
.portfolio-home .hero-intro{color:#bac7d9;font-size:15px;line-height:1.8;max-width:490px}
.portfolio-home .hero-actions{margin-top:25px;gap:22px}
.portfolio-home .hero-actions .button-accent{background:#246be0;color:#fff;box-shadow:0 4px 18px #438df71f}
.portfolio-home .hero-actions .button-accent:hover{background:#1558bc}
.hero-work-link{font-size:12px;color:#dce6f7;display:inline-flex;gap:15px;align-items:center}
.hero-work-link:hover{color:white}
.hero-specialisms{display:flex;gap:12px;margin-top:33px;align-items:center;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#8396b3}
.hero-specialisms i{font-style:normal;color:#4a6487}
.portrait-stage{position:relative;min-height:430px;display:flex;align-items:center;justify-content:center;padding:0 20px}
.portfolio-home .hero-person{margin:0;padding:0;max-width:305px;width:100%;position:relative;z-index:2}
.portfolio-home .hero-person>img{border:0;box-shadow:0 20px 40px #0003;position:relative;background:#438df7;border-radius:50%;aspect-ratio:1}
.portrait-orbit{position:absolute;width:365px;height:365px;border:1px solid #8db7ff28;border-radius:50%;top:25px;left:50%;transform:translateX(-50%)}
.portrait-orbit::before{content:"";position:absolute;inset:15px;border:1px dashed #8db7ff28;border-radius:50%}
.portfolio-home .person-caption{position:relative;margin:-22px auto 0;z-index:3;width:max-content;max-width:100%;display:grid;grid-template-columns:9px 1fr;gap:0 10px;text-align:left;padding:14px 20px;background:#fff;border:1px solid #ecf0f6;border-radius:12px;box-shadow:0 9px 30px #0002;color:var(--ink)}
.portfolio-home .person-caption strong{font-size:16px;line-height:1.4}
.portfolio-home .person-caption>span:last-child{grid-column:2;font-size:9px;color:#66758a}
.caption-dot{width:7px;height:7px;background:#2e906c;border-radius:50%;align-self:center}
.floating-tool{position:absolute;z-index:4;display:grid;place-items:center;width:61px;height:61px;background:#fff;border:1px solid #ecf1fa;border-radius:15px;box-shadow:0 14px 40px #0003;animation:tool-float 2.4s ease-in-out 2}
.floating-tool img{object-fit:contain}
.tool-wordpress{left:8px;top:59px;transform:rotate(-9deg)}
.tool-elementor{right:0;top:153px;background:#fff0f6;transform:rotate(9deg);animation-delay:-.8s}
.tool-code{left:31px;bottom:60px;width:54px;height:54px;background:#e7f0ff;color:#286cd7;transform:rotate(5deg);animation-delay:-1.6s}
.tool-code>span:first-child{font-family:monospace;font-size:20px;letter-spacing:-2px}
.portrait-note{position:absolute;bottom:2px;right:2px;color:#91a6c4;font-size:10px;line-height:1.7;text-align:right;margin:0}
.portfolio-home .proof-strip{margin-top:0;padding-top:26px;padding-bottom:26px;border-bottom:1px solid var(--line);border-top:0;gap:38px}
.portfolio-home .proof-strip strong{font-size:24px}
.portfolio-home .proof-strip span{font-size:11px}
.proof-profile{display:inline-flex;gap:12px;margin-left:auto;font-size:12px;color:var(--blue)}
.toolbelt{padding:25px 0 0}.toolbelt-inner{display:flex;gap:40px;align-items:center}
.toolbelt-inner>p{font-size:11px;line-height:1.7;min-width:160px;margin:0;color:var(--muted)}
.toolbelt-inner>p strong{color:var(--ink);font-weight:500}
.toolbelt-logos{flex:1;display:flex;align-items:center;justify-content:space-between;gap:20px;min-width:0}
.toolbelt-logos>a,.toolbelt-logos>span{display:flex;align-items:center;gap:9px;font-family:"Cal Sans",sans-serif;font-size:15px;white-space:nowrap;color:#45536a;transition:color .2s,transform .2s}
.toolbelt-logos img{opacity:.65;object-fit:contain;max-width:37px;max-height:28px}
.toolbelt-logos>a:hover{transform:translateY(-2px);color:var(--blue)}
.portfolio-home #work{padding-top:69px}
.portfolio-home #work .section-heading{margin-bottom:28px}
.portfolio-home .selected-project:first-child{grid-template-columns:1.4fr .6fr;gap:35px;border:0;padding:25px;background:#f2f5fa;border-radius:22px;position:relative}
.portfolio-home .selected-project:first-child .project-image{border-radius:13px}
.portfolio-home .selected-project:first-child h3{font-size:29px}
.portfolio-home .selected-project .project-copy>.eyebrow{color:#4f6584}
.portfolio-home .selected-project:nth-child(n+2) .project-image{border-radius:18px;position:relative}
.portfolio-home .project-image{position:relative;isolation:isolate}
.portfolio-home .project-image::after{content:"View project ↗";position:absolute;bottom:18px;right:18px;padding:8px 13px;color:var(--ink);background:#fffffff5;border:1px solid #ffffff6b;border-radius:100px;font-size:11px;opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s}
.portfolio-home .project-image:hover::after,.portfolio-home .project-image:focus-visible::after{opacity:1;transform:none}
.portfolio-home .services-home{background:#f4f7fc;padding-top:60px;padding-bottom:60px}
.service-explorer{display:grid;grid-template-columns:270px 1fr;gap:32px;margin-top:35px}
.service-options{display:flex;flex-direction:column;gap:7px}
.service-options>button{display:flex;align-items:center;gap:12px;min-height:59px;width:100%;padding:16px 17px;text-align:left;border:1px solid transparent;border-radius:11px;background:transparent;color:#5c6b81;font-size:13px;cursor:pointer;transition:background .2s,color .2s,box-shadow .2s}
.service-options>button>span:last-child{margin-left:auto}
.service-options>button:hover{background:#e9effa;color:var(--ink)}
.service-options>button[aria-selected="true"]{background:#fff;border-color:#dce5f1;color:#1b5cbf;box-shadow:0 7px 17px #1f3f7110}
.service-option-number{font-size:10px;color:#536987}
.services-all{margin:18px 17px 0;font-size:12px}
.service-panels{min-width:0}
.service-preview{display:grid;grid-template-columns:1fr .8fr;gap:23px;align-items:center;min-height:375px;padding:30px;border-radius:18px;border:1px solid #dfe7f4;background:#fff;overflow:hidden;animation:panel-in .3s ease}
.service-preview[hidden]{display:none}
.service-brand{object-fit:contain;margin-bottom:19px;opacity:.75}
.service-preview h3{font-size:25px;line-height:1.2;margin-bottom:13px}
.service-preview p{font-size:13px;color:var(--muted);line-height:1.75}
.service-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 20px}
.service-tags>span{padding:4px 8px;border-radius:5px;background:#f0f4fa;color:#5b7190;font-size:9px}
.service-preview .line-link{font-size:12px}
.service-preview-visual{position:relative;align-self:stretch;min-height:265px;background:#edf3fc;border-radius:12px;overflow:hidden;display:flex;align-items:center}
.service-preview-visual>img{width:100%;height:100%;position:absolute;object-fit:cover;object-position:48% 50%}
.visual-caption{position:absolute;left:12px;right:12px;bottom:12px;padding:8px 10px;background:#fffffff0;border-radius:7px;font-size:9px;color:#33465f}
.portfolio-home .about-home-grid{gap:70px;grid-template-columns:1.05fr .95fr}
.portfolio-home .working-steps{padding:25px 27px;background:#f5f8fc;border:1px solid #e5ebf4;border-radius:18px}
.portfolio-home .working-steps li:last-child{border-bottom:0;padding-bottom:0}
.portfolio-home .working-steps h3{font-size:19px}
.portfolio-home .working-steps p{font-size:12px}
.developer-stack{background:#101f36;color:white;padding-top:60px;padding-bottom:60px}
.stack-heading{display:flex;align-items:end;justify-content:space-between;gap:45px;margin-bottom:33px}
.stack-heading .eyebrow{color:#8eb8fb}
.stack-heading h2{font-size:35px;margin:0}
.stack-heading>p{max-width:340px;color:#a1b3cc;font-size:13px}
.stack-showcase{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.stack-core{position:relative;padding:26px 25px;background:#192d49;border:1px solid #315073;border-radius:16px;overflow:hidden;display:flex;flex-direction:column;align-items:start;transition:transform .25s,border-color .25s}
.stack-core:hover{transform:translateY(-4px);border-color:#8db7ff}
.stack-index{font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:#8ea8cc;display:block;margin-bottom:29px}
.stack-core>img{filter:invert(1);object-fit:contain;object-position:left;margin-bottom:20px}
.stack-core h3{font-size:25px;margin-bottom:12px}
.stack-core p{color:#aebdd2;font-size:12px;line-height:1.75;margin-bottom:25px}
.stack-link{display:flex;gap:20px;font-size:10px;color:#c6dcff;margin-top:auto}
.stack-elementor{background:#28213e;border-color:#4b3a65}
.stack-woo{background:#212441;border-color:#3d4272}
.toolbox{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-top:32px;padding-top:24px;border-top:1px solid #ffffff13}
.toolbox-label{font-size:10px;color:#8198b7;margin-right:auto}
.toolbox-item{display:flex;align-items:center;gap:8px;font-size:10px;color:#b1c0d6}
.toolbox-item img{filter:invert(1);opacity:.75;object-fit:contain}
.portfolio-home .proof-section{background:#eff5ff;padding-top:58px;padding-bottom:58px}
.portfolio-home .closing-grid{background:linear-gradient(110deg,#142a49,#1e4172);position:relative;overflow:hidden}
.portfolio-home .closing-grid::after{content:"↗";position:absolute;right:18px;top:-53px;font-size:260px;line-height:1;color:#ffffff05;pointer-events:none}
/* Portrait motion finishes; nothing keeps drifting while a visitor reads. */
.portfolio-home .hero-person{animation:portrait-arrive .85s cubic-bezier(.22,1,.36,1) both}
.portrait-orbit::before{animation:orbit-arrive 3.6s ease-out both}
@keyframes portrait-arrive{from{translate:0 18px;rotate:-2deg}to{translate:0 0;rotate:0deg}}
@keyframes orbit-arrive{from{rotate:-28deg}to{rotate:0deg}}
@media(hover:hover) and (pointer:fine){.portfolio-home .hero-person>img{transition:transform .45s cubic-bezier(.22,1,.36,1)}.portrait-stage:hover .hero-person>img{transform:translateY(-4px)}}
@keyframes tool-float{0%,100%{translate:0 0}50%{translate:0 -9px}}
@keyframes panel-in{from{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:none}}
@media(max-width:1000px){.portfolio-home .hero-grid{padding:38px 34px;gap:15px}.portrait-stage{min-height:400px;padding:0 12px}.portfolio-home .hero-person{max-width:275px}.portrait-orbit{width:325px;height:325px}.tool-wordpress{left:0}.tool-elementor{right:0}.toolbelt-inner{gap:22px}.toolbelt-logos{flex-wrap:wrap;justify-content:flex-start;gap:18px 26px}.service-explorer{grid-template-columns:230px 1fr;gap:20px}.service-preview{grid-template-columns:1fr;padding:25px}.service-preview-visual{display:none}.service-preview p{max-width:480px}.toolbox{gap:18px}.toolbox-label{flex-basis:100%}}
@media(max-width:700px){.portfolio-home .hero-grid{width:calc(100% - 24px);padding:30px 25px 25px;border-radius:20px;grid-template-columns:1fr;gap:12px}.portfolio-home .hero-main h1{font-size:43px;max-width:none}.portfolio-home .availability{font-size:9px;padding:5px 9px;margin-bottom:21px}.portfolio-home .hero-main .eyebrow{font-size:12px}.hero-role{font-size:11px}.portfolio-home .hero-intro{font-size:13px;line-height:1.8}.portfolio-home .hero-actions{gap:16px;align-items:center;flex-wrap:wrap}.portfolio-home .hero-actions .button{font-size:12px;padding:12px 16px}.hero-work-link{font-size:11px;gap:7px}.hero-specialisms{margin-top:22px;font-size:9px}.portrait-stage{min-height:345px;max-width:360px;justify-self:center;width:100%;padding-top:20px}.portfolio-home .hero-person{max-width:240px}.portrait-orbit{width:285px;height:285px;top:22px}.tool-wordpress{width:48px;height:48px;top:45px;left:0}.tool-elementor{width:48px;height:48px;top:135px;right:0}.tool-code{width:44px;height:44px;bottom:41px;left:10px}.floating-tool img{max-width:26px;height:26px}.portfolio-home .person-caption{padding:11px 14px}.portfolio-home .person-caption strong{font-size:14px}.portfolio-home .person-caption>span:last-child{font-size:8px}.portrait-note{font-size:9px;bottom:0}.portfolio-home .proof-strip{gap:12px;padding:22px 20px;align-items:start}.portfolio-home .proof-strip>div{gap:7px}.portfolio-home .proof-strip strong{font-size:22px}.portfolio-home .proof-strip span{font-size:9px}.proof-profile{display:none}.toolbelt{padding-top:24px}.toolbelt-inner{display:block}.toolbelt-inner>p{font-size:10px;margin-bottom:20px}.toolbelt-inner>p br{display:none}.toolbelt-logos{display:grid;grid-template-columns:repeat(3,1fr);gap:20px 12px}.toolbelt-logos>a,.toolbelt-logos>span{font-size:11px;gap:6px}.toolbelt-logos img{max-width:22px;max-height:22px}.portfolio-home #work{padding-top:47px}.portfolio-home .selected-project:first-child{display:block;padding:15px;border-radius:18px}.portfolio-home .selected-project:first-child .project-copy{padding:19px 4px 8px}.portfolio-home .selected-project:first-child h3{font-size:25px}.portfolio-home .project-image::after{opacity:1;transform:none;bottom:12px;right:12px;font-size:9px;padding:6px 10px}.portfolio-home .services-home{padding:45px 0}.service-explorer{display:block;margin-top:23px}.service-options{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:18px}.service-options>button{font-size:11px;gap:7px;padding:11px 10px;min-height:50px}.service-option-number{font-size:9px}.service-options>button>span:last-child{display:none}.services-all{margin:8px 0;font-size:11px;grid-column:1/-1}.service-preview{padding:22px;min-height:335px}.service-preview h3{font-size:24px}.service-preview p{font-size:13px}.service-brand{width:29px;height:29px}.portfolio-home .about-home-grid{grid-template-columns:1fr;gap:27px}.portfolio-home .working-steps{padding:23px}.developer-stack{padding:45px 0}.stack-heading{display:block}.stack-heading h2{font-size:30px;margin-bottom:16px}.stack-heading>p{font-size:13px;max-width:none}.stack-showcase{grid-template-columns:1fr;gap:12px}.stack-core{display:grid;grid-template-columns:50px 1fr;gap:0 18px;padding:21px}.stack-index{grid-column:1/-1;margin-bottom:18px}.stack-core>img{grid-column:1;grid-row:2/5;width:42px;height:42px;margin:0}.stack-core h3{grid-column:2;font-size:22px;margin-bottom:10px}.stack-core p{grid-column:2;font-size:12px;margin-bottom:17px}.stack-link{grid-column:2;font-size:10px}.toolbox{display:grid;grid-template-columns:repeat(4,1fr);gap:20px 10px}.toolbox-label{grid-column:1/-1}.toolbox-item{display:grid;gap:8px;font-size:10px}.portfolio-home .proof-section{padding:45px 0}}
@media(max-width:360px){.portfolio-home .hero-grid{padding:26px 20px}.portfolio-home .hero-main h1{font-size:38px}.portrait-stage{min-height:315px}.portfolio-home .hero-person{max-width:210px}.portrait-orbit{width:250px;height:250px}.tool-wordpress{top:50px}.tool-elementor{right:-3px}.toolbelt-logos>a,.toolbelt-logos>span{font-size:10px}.toolbelt-logos{gap:18px 8px}.portfolio-home .hero-actions{gap:15px}}
@media(prefers-reduced-motion:reduce){.floating-tool{animation:none}.service-preview{animation:none}}
