/* A little console-avatar world. */
.page-home{padding:22px 0 18px;min-height:calc(100svh - 164px)}
.suvu-world{width:min(820px,100%);margin:auto;text-align:center}
.suvu-title{font:400 clamp(3rem,6vw,4.7rem)/1.15 var(--hand);letter-spacing:-.035em;margin:0;transform:rotate(-2deg);text-shadow:0 2px 18px #132b3440}
:root[data-theme=day] .suvu-title{text-shadow:0 2px 16px #e9e7c8b3}
.character-stage{position:relative;width:100%;height:clamp(430px,55svh,520px);margin:0 auto;isolation:isolate}
.character-stage #avatarCanvas{inset:0;position:absolute;pointer-events:none}
.character-stage #avatarCanvas canvas,.character-stage #avatarCanvas>svg{display:block;width:100%;height:100%}
.avatar-hit{position:absolute;left:50%;top:8%;width:27%;height:77%;transform:translateX(-50%);border:0;border-radius:45%;background:transparent;touch-action:pan-y;z-index:2;outline-offset:5px}
.avatar-hit .avatar-fallback{height:94%;width:auto;max-width:100%;bottom:0}
.avatar-hit[data-render-state=ready] .avatar-fallback{display:none}
.greeting-ring{position:absolute;inset:0;z-index:4;pointer-events:none}
.greeting-card{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%) rotate(var(--tilt));min-width:124px;padding:10px 18px 12px;background:#fff3d8;color:#2b463e;border:1.5px solid #96a385;border-radius:46% 43% 38% 44% / 40% 42% 38% 43%;box-shadow:0 4px 0 #143f3921;transition:left .65s cubic-bezier(.2,.7,.25,1),top .65s cubic-bezier(.2,.7,.25,1),opacity .38s,scale .38s;animation:greeting-in .35s ease-out}
.greeting-card::after{content:"";position:absolute;bottom:-5px;left:48%;width:11px;height:11px;background:#fff3d8;border-bottom:1.5px solid #96a385;border-right:1.5px solid #96a385;transform:rotate(45deg);border-radius:0 0 5px}
.greeting-card[data-slot="0"]{--x:24%;--y:18%;--tilt:-7deg}
.greeting-card[data-slot="1"]{--x:76%;--y:18%;--tilt:6deg}
.greeting-card[data-slot="2"]{--x:83%;--y:51%;--tilt:4deg}
.greeting-card[data-slot="3"]{--x:50%;--y:92%;--tilt:-3deg}
.greeting-card[data-slot="4"]{--x:17%;--y:51%;--tilt:-5deg}
.greeting-card.is-leaving{opacity:0;scale:.72}
.greeting-language{display:block;font:500 14px/1.3 var(--body);opacity:.8;margin-bottom:1px}
.greeting-word{display:block;font:600 2.25rem/1.15 var(--hand);white-space:nowrap}
.greeting-word:lang(ne),.greeting-word:lang(hi){font:500 1.65rem/1.5 'Noto Sans Devanagari','Nirmala UI',sans-serif}
@keyframes greeting-in{from{opacity:0;scale:.75}to{opacity:1;scale:1}}
.suvu-world .avatar-hint{display:block;font:400 1.25rem/1.45 var(--hand);margin:4px auto 12px;padding:2px 15px 5px;max-width:100%;background:color-mix(in srgb,var(--paper) 92%,transparent)}
.suvu-world .avatar-hint span{font:400 14px/1.4 var(--body)}
.suvu-study{display:inline-block;margin:0;padding:9px 23px 13px;background:color-mix(in srgb,var(--paper) 92%,transparent);border:1px solid var(--line);border-radius:28px 23px 26px 21px;color:var(--ink);font:400 clamp(1.3rem,2.5vw,1.65rem)/1.4 var(--hand)}
.suvu-study span{display:block}.suvu-study span+span{font:400 15px/1.6 var(--body);margin-top:3px}
.companion-hit{position:absolute;z-index:3;width:86px;height:85px;background:transparent;border:0;border-radius:50%;transform:translate(-50%,-50%);padding:0;touch-action:manipulation}
.companion-hit span{position:absolute;top:100%;left:50%;transform:translateX(-50%) rotate(-4deg);white-space:nowrap;font:400 1.05rem/1.25 var(--hand);color:var(--ink);background:color-mix(in srgb,var(--paper) 93%,transparent);padding:2px 9px 4px;border-radius:12px;opacity:0;transition:opacity .2s}
.companion-hit:hover span,.companion-hit:focus-visible span,.cat-hit[data-state=offering] span{opacity:1}
.yarn-hit{width:46px;height:46px}.yarn-hit span{opacity:1;font-size:1rem}
.pet-reaction{position:absolute;z-index:4;left:72%;top:55%;transform:translate(-50%,-100%) rotate(8deg);font:600 1.6rem/1.2 var(--hand);color:#354137;background:#fff3d8;border-radius:15px 17px 5px 16px;padding:5px 13px;pointer-events:none}
.site-footer{justify-content:center}
.wii-pointer{position:absolute;display:block;width:51px;height:51px;max-width:none;left:-6px;top:-10px;object-fit:contain;filter:drop-shadow(0 2px 2px #20352b30);transform-origin:20% 25%;transition:scale .2s}
.pointer-night{width:53px;height:60px;left:-13px;top:-13px}
.pointer-day{display:none}:root[data-theme=day] .pointer-day{display:block}:root[data-theme=day] .pointer-night{display:none}
.cursor-root.is-hover .wii-pointer{scale:1.13}
.cursor-root .cursor-tip{width:4px;height:4px;background:#fff4d7;outline:1px solid #3e5040;left:-2px;top:-2px}
.cursor-root .cursor-glow{width:74px;height:74px;top:-31px;left:-28px;opacity:.36}
:root[data-theme=day] .cursor-root .cursor-glow{display:none}
.cursor-creature{position:absolute;left:0;top:0;width:39px;height:39px;will-change:transform;pointer-events:none}
.cursor-creature[data-follower="1"]{width:32px;height:32px}.cursor-creature[data-follower="2"]{width:28px;height:28px}
.wing-frame{position:absolute;inset:0;background:center/contain no-repeat;animation:wing-beat .28s steps(1,end) infinite}
.wing-up{background-image:url('./assets/cursors/moth-up.png')}.wing-down{background-image:url('./assets/cursors/moth-down.png');animation-direction:reverse}
:root[data-theme=day] .wing-up{background-image:url('./assets/cursors/bird-up.png')}:root[data-theme=day] .wing-down{background-image:url('./assets/cursors/bird-down.png')}
.cursor-creature[data-follower="1"] .wing-frame{animation-duration:.24s}.cursor-creature[data-follower="2"] .wing-frame{animation-duration:.33s}
.cursor-root[data-behavior=wandering] .wing-frame{animation-duration:.46s}
@keyframes wing-beat{0%,49%{opacity:1}50%,100%{opacity:0}}
.calm .wing-frame{animation:none}.calm .wing-down{display:none}
@media(max-width:620px){.page-home{padding:17px 0 25px}.suvu-title{font-size:clamp(2.75rem,11vw,3.7rem);white-space:nowrap}.character-stage{height:450px;width:calc(100% + 22px);margin-left:-11px}.avatar-hit{top:20%;width:39%;height:62%}.greeting-card{min-width:88px;padding:8px 11px 10px}.greeting-language{font-size:12px}.greeting-word{font-size:1.85rem}.greeting-word:lang(ne),.greeting-word:lang(hi){font-size:1.27rem}.greeting-card[data-slot="0"]{--x:23%;--y:11%}.greeting-card[data-slot="1"]{--x:77%;--y:11%}.greeting-card[data-slot="2"]{--x:84%;--y:43%}.greeting-card[data-slot="3"]{--x:50%;--y:94%}.greeting-card[data-slot="4"]{--x:16%;--y:43%}.companion-hit{width:64px;height:64px}.yarn-hit{width:40px;height:40px}.suvu-world .avatar-hint{font-size:1.1rem;margin-top:10px;margin-bottom:12px}.suvu-world .avatar-hint span{display:inline;font-size:12px}.suvu-study{padding:9px 15px 12px;font-size:1.3rem}.suvu-study span+span{font-size:14px}.site-footer{justify-content:center;flex-direction:row;text-align:center}.pet-reaction{font-size:1.35rem}}
@media(max-width:370px){.character-stage{height:430px}.suvu-title{font-size:2.65rem}.greeting-card{min-width:80px;padding:7px 9px 9px}.greeting-word{font-size:1.65rem}.greeting-word:lang(ne),.greeting-word:lang(hi){font-size:1.2rem}.greeting-language{font-size:12px}.suvu-study{font-size:1.15rem;padding-inline:10px}.suvu-world .avatar-hint span{display:none}}
@media(prefers-reduced-motion:reduce){.greeting-card{animation:none;transition:none}.wing-frame{animation:none}.wing-down{display:none}}

/* One introduction, told a little at a time. */
.suvu-world{position:relative}
.suvu-title{position:absolute;left:0;top:101px;z-index:2;width:245px;text-align:left;transform:rotate(-3deg);margin:0;line-height:1.05}
.suvu-title>span{display:block;font:400 2.1rem/1.3 var(--hand);letter-spacing:0}
.suvu-title>strong{display:block;font:400 5.45rem/1.03 var(--hand);letter-spacing:-.04em}
.character-stage{height:530px}
.interaction-sign{position:absolute;z-index:3;left:6%;top:55%;padding:6px 12px 8px;color:var(--ink);background:color-mix(in srgb,var(--paper) 93%,transparent);border:1px solid var(--line);border-radius:17px 19px 14px 21px;box-shadow:0 3px 0 #183b2b20;transform:rotate(-7deg);font:400 1.4rem/1.1 var(--hand);white-space:nowrap;pointer-events:none}
.interaction-sign span{display:inline-block;margin-left:4px;transform:rotate(15deg)}
.intro-bubble{position:absolute;right:0;top:90px;width:250px;max-width:32%;z-index:4;padding:21px 23px 17px;text-align:left;background:#fff3d9;color:#30473e;border:1px solid #adba9c;border-radius:28px 31px 27px 8px;box-shadow:0 5px 0 #12392e18;pointer-events:none}
.intro-bubble::after{content:"";position:absolute;left:-8px;bottom:25px;width:17px;height:17px;transform:rotate(45deg);background:#fff3d9;border-left:1px solid #adba9c;border-bottom:1px solid #adba9c;border-radius:0 0 0 4px}
.intro-bubble.is-popping{animation:greeting-in .26s ease-out}
.intro-hellos{display:flex;flex-wrap:wrap;gap:1px 9px;margin:0 0 13px;font:600 1.85rem/1.22 var(--hand)}
.intro-hellos :lang(ne),.intro-hellos :lang(hi){font:500 1.22rem/1.65 'Noto Sans Devanagari','Nirmala UI',sans-serif}
.intro-languages{font:400 14px/1.55 var(--body);margin:0}
.intro-copy{font:400 1.7rem/1.32 var(--hand);margin:0 0 8px}.intro-copy strong{font-weight:600}
.intro-progress{display:block;font:400 12px/1.4 var(--body);color:#53675a;border-top:1px solid #a9b29566;margin-top:15px;padding-top:9px}
.intro-dialog{width:min(510px,calc(100% - 36px));padding:37px 34px 32px;background:#fff3dd;color:#2b443c;border:1px solid #a9b896;border-radius:29px 34px 26px 30px;box-shadow:0 18px 90px #102f3b55;max-height:90svh;overflow:auto}
.intro-dialog::backdrop{background:#142934a6;backdrop-filter:blur(5px)}
.dialog-close{position:absolute;right:16px;top:12px;width:36px;height:36px;font:400 28px/1 var(--body);border:0;background:transparent;color:inherit;border-radius:50%}
.dialog-eyebrow{font:400 1.5rem/1.3 var(--hand);margin:0 0 10px;color:#65775b}
.intro-dialog h2{font:400 clamp(2.5rem,5vw,3.4rem)/1.05 var(--hand);margin:0 0 19px;letter-spacing:-.025em}
.intro-dialog>p:not(.dialog-eyebrow){font:400 16px/1.7 var(--body);margin:0 0 25px}
.intro-actions{display:flex;flex-wrap:wrap;gap:12px}.intro-actions a{padding:11px 17px;border:1px solid #5d745e;border-radius:17px 19px 15px 18px;font:400 1.35rem/1.3 var(--hand)}
.intro-actions a:first-child{background:#385646;color:#fff3dd}.intro-actions a:hover{background:#688166;color:#fff8e7}
.yarn-hit{position:fixed;z-index:85;touch-action:none;user-select:none;-webkit-user-select:none}
.yarn-hit.is-held span{opacity:0}.yarn-hit[data-play=flying] span,.yarn-hit[data-play=returning] span{display:none}
.yarn-play-layer{position:fixed;inset:0;z-index:80;pointer-events:none!important;overflow:hidden}
.yarn-play-layer canvas,.yarn-play-layer>svg{display:block;width:100%;height:100%;pointer-events:none}
@media(max-width:900px) and (min-width:621px){.suvu-title{width:190px;top:110px}.suvu-title>strong{font-size:4.5rem}.suvu-title>span{font-size:1.75rem}.intro-bubble{padding:16px;width:215px;max-width:30%}.intro-copy{font-size:1.5rem}.intro-hellos{font-size:1.5rem}.intro-languages{font-size:14px}}
@media(max-width:620px){.suvu-title{position:relative;top:auto;left:auto;display:flex;align-items:baseline;justify-content:center;gap:10px;width:100%;text-align:center;transform:none;white-space:normal;margin:0 0 4px}.suvu-title>span{font-size:1.7rem}.suvu-title>strong{font-size:3.7rem}.character-stage{height:430px}.interaction-sign{left:1%;top:28%;font-size:1.15rem;padding:5px 9px 7px}.character-stage:has(.intro-bubble:not([hidden])){height:610px}.character-stage:has(.intro-bubble:not([hidden])) #avatarCanvas{bottom:180px}.avatar-hit{top:77px;height:290px}.intro-bubble{top:auto;bottom:9px;right:auto;left:50%;transform:translateX(-50%);width:calc(100% - 26px);max-width:350px;padding:16px 20px;border-radius:25px 27px 24px 21px}.intro-bubble::after{left:48%;bottom:auto;top:-9px;border-bottom:0;border-top:1px solid #adba9c;border-radius:4px 0 0}.intro-hellos{font-size:1.6rem;gap:2px 9px;margin-bottom:8px}.intro-languages{font-size:14px;line-height:1.45}.intro-progress{margin-top:9px;padding-top:7px}.intro-copy{font-size:1.7rem}.intro-dialog{padding:34px 23px 25px}.intro-actions{flex-direction:column}.intro-actions a{text-align:center}.suvu-world .avatar-hint{margin-top:8px}}
@media(max-width:370px){.suvu-title>span{font-size:1.55rem}.suvu-title>strong{font-size:3.3rem}.interaction-sign{top:30%;font-size:1.05rem}}
@media(prefers-reduced-motion:reduce){.intro-bubble.is-popping{animation:none}}

/* One speech bubble beside Suvu; below her on small screens. */
.intro-notes{position:absolute;right:0;top:100px;width:250px;max-width:32%;z-index:4;pointer-events:none}
.intro-notes:empty{display:none}
.conversation-note{position:relative;inset:auto;transform:none;width:100%;max-width:none;padding:18px 21px;pointer-events:none}
.conversation-note .intro-copy{font-size:1.55rem;margin:0}
.conversation-note .intro-languages{font-size:14px}
.cat-hit span{opacity:1}
.cat-hit:is([data-state=playing],[data-state=offering],[data-state=waiting],[data-state=grumpy]) span{display:none}
@media(max-width:620px){
 .intro-notes{position:relative;inset:auto;width:calc(100% - 16px);max-width:350px;margin:0 auto 16px}
 .conversation-note{padding:16px 20px;border-radius:25px 27px 24px 21px}
 .conversation-note .intro-copy{font-size:1.55rem}
 .character-stage{height:430px}
}

.yarn-hit[data-play=fetching] span,.yarn-hit[data-play=carrying] span{display:none}

/* Keep each painted cloud's natural shape during the page reveal. */
.page-clouds .cloud{width:max(135vw,140svh);height:auto;max-width:none;left:50%;object-fit:contain}
.page-clouds .cloud-top{top:-5%;transform:translate(-50%,-115%)}
.page-clouds .cloud-bottom{bottom:-5%;transform:translate(-50%,115%) scaleX(-1)}
.page-clouds.is-covered .cloud-top{transform:translate(-50%,-5%)}
.page-clouds.is-covered .cloud-bottom{transform:translate(-50%,5%) scaleX(-1)}
.page-clouds .cloud-greeting{width:calc(100% - 32px);text-align:center;white-space:normal}
@media(max-width:620px){
  .page-clouds .cloud{width:max(180vw,150svh);height:auto;left:50%}
  .page-clouds .cloud-sg{font-size:3.6rem}
  .page-clouds .cloud-greeting{font-size:1.7rem}
}

.intro-dialog .cursor-root{position:fixed;top:0;left:0;overflow:visible;z-index:150}
.has-custom-cursor .intro-dialog::backdrop{cursor:none}
.about-intro{display:grid;grid-template-columns:190px minmax(0,1fr);align-items:center;gap:28px}
.about-headshot{display:block;width:190px;height:245px;object-fit:cover;object-position:center 30%;margin:0;border-radius:18px;box-shadow:0 5px 0 #163d2a20}
.about-copy p{font-size:1.08rem;line-height:1.85;color:var(--muted);margin:0 0 18px}
.about-copy p:last-child{margin-bottom:0}
.people-photo{display:block;width:100%;height:auto;object-fit:contain;border-radius:3px}
@media(max-width:620px){.about-intro{grid-template-columns:1fr;gap:22px}.about-headshot{width:180px;height:230px;margin:0 auto}.about-copy p{font-size:16px;line-height:1.75}}

/* Mobile: keep the introduction in the open space beside the character. */
@media(max-width:620px){
  .suvu-world .suvu-title{position:absolute;top:38px;left:3px;z-index:5;display:block;width:40%;margin:0;text-align:left;transform:rotate(-4deg)}
  .suvu-title>span{display:block;font-size:clamp(1.2rem,5vw,1.55rem);line-height:1.2}
  .suvu-title>strong{display:block;font-size:clamp(2.7rem,11vw,3.35rem);line-height:1.02}
  .character-stage,.character-stage:has(.intro-bubble:not([hidden])){height:430px}
  .character-stage:has(.intro-bubble:not([hidden])) #avatarCanvas{bottom:0}
  .avatar-hit{top:18%;height:66%}
  .suvu-world .intro-notes{position:absolute;top:18px;right:-3px;left:auto;width:39%;max-width:160px;margin:0;z-index:6}
  .conversation-note{padding:11px 12px 12px;border-radius:20px 23px 20px 8px}
  .conversation-note::after{top:auto;bottom:24px;left:-8px;border-top:0;border-bottom:1px solid #adba9c;border-left:1px solid #adba9c}
  .conversation-note .intro-copy{font-size:1.3rem;line-height:1.18;overflow-wrap:break-word}
  .conversation-note .intro-hellos{font-size:1.35rem;line-height:1.1;gap:0 6px;margin-bottom:7px}
  .conversation-note .intro-hellos :lang(ne),.conversation-note .intro-hellos :lang(hi){font-size:1rem;line-height:1.4}
  .conversation-note .intro-languages{font-size:12px;line-height:1.3}
}
@media(max-width:370px){
  .suvu-world .suvu-title{left:0;top:40px;width:38%}
  .suvu-title>strong{font-size:2.55rem}
  .suvu-world .intro-notes{right:-2px;top:16px;width:39%;max-width:135px}
  .conversation-note{padding:9px 10px 10px}
  .conversation-note .intro-copy{font-size:1.18rem}
  .character-stage,.character-stage:has(.intro-bubble:not([hidden])){height:410px}
}

/* Work opens directly on the experience cards. Logos rest on the card surface. */
.page-work .work-header{margin:0 0 34px}
.page-work .work-header .page-heading{margin:0}
.page-work .experience-chapter .collection-heading{margin-bottom:26px}
.page-work .work-section-heading h2{font-size:clamp(2.35rem,4vw,3rem)}
.page-work .work-grid .note-card,.page-work .work-grid .note-card:nth-child(2n){transform:none}
.page-work .company-logo{width:172px;height:70px;padding:0;margin:0 0 18px;background:transparent;border:0;border-radius:0;transform:none;box-shadow:none}
.page-work .company-logo img{filter:none;mix-blend-mode:multiply}
:root[data-theme=night] .page-work .company-logo img{mix-blend-mode:normal;filter:brightness(1.15)}
:root[data-theme=night] .page-work .opaque-logo img{mix-blend-mode:screen;filter:invert(1) hue-rotate(180deg)}
.page-work .deere-logo{width:135px;height:92px}
.page-work .deere-logo img,:root[data-theme=night] .page-work .deere-logo img{mix-blend-mode:normal;border-radius:7px;filter:invert(1) sepia(1) saturate(7) hue-rotate(350deg) contrast(1.12)}

/* All four project notes stay in view; none slide or scroll sideways. */
.projects-layout{width:min(850px,100%);margin:0 auto}
.page-work .project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 22px;overflow:visible}
.page-work .project-grid>.note-card{transform:none}
.page-work .project-grid>.note-card:nth-child(2n){transform:none}
.page-work .post-link:has(.post-image){display:flex;align-items:center}
.page-work .post-link .post-image{width:110px;height:86px;grid-column:auto;object-fit:cover;border-radius:8px;flex-shrink:0;background:#203c48}
@media(max-width:620px){.page-work .post-link .post-image{width:90px;height:75px}}
@media(max-width:620px){.page-work .work-header{margin-bottom:25px}.page-work .project-grid{grid-template-columns:1fr;gap:20px}}
