.project-wall{padding:8px 24px 48px}.wall-grid{grid-template-columns:minmax(0,1fr);gap:24px;max-width:720px;margin-inline:auto;display:grid}.wall-side{display:none}.wall-center{flex-direction:column;gap:12px;min-width:0;display:flex}.wall-hero{border-radius:14px;padding:3px;display:flex;position:relative;overflow:hidden}.wall-hero:before{content:"";background-image:linear-gradient(#00b7ff,#ff30ff);width:180px;height:220%;animation:6s linear infinite wall-spin;position:absolute;top:50%;left:50%;translate:-50% -50%}.wall-hero-in{background:#f7f3f0;border-radius:11px;flex-direction:column;flex:1;justify-content:center;gap:16px;min-width:0;padding:22px 20px;display:flex;position:relative}.glyph-tile{color:#3336;white-space:nowrap;background:#ffffff47;border:1.5px solid #33333324;border-radius:10px;place-items:center;height:100%;font-size:15px;font-weight:500;display:grid;overflow:hidden}.glyph-tile.on-grid{background-image:linear-gradient(#3333331f 1px,#0000 1px),linear-gradient(90deg,#3333331f 1px,#0000 1px);background-position:-1px -1px;background-size:16px 16px}.g-cursor:after{content:"_";animation:1s step-end infinite g-blink}.g-dots span{animation:1.2s ease-in-out infinite g-hop;display:inline-block}.g-dots span:nth-child(2){animation-delay:.15s}.g-dots span:nth-child(3){animation-delay:.3s}.g-spin{animation:8s linear infinite wall-spin;display:inline-block}.g-blink{display:grid}.g-blink>*{grid-area:1/1}.g-blink .open{animation:3.6s step-end infinite g-eyes-open}.g-blink .shut{animation:3.6s step-end infinite g-eyes-shut}.g-heart{color:#d9668a;font-weight:700;animation:1.4s ease-in-out infinite g-beat;display:inline-block}.g-led{gap:7px;display:flex}.g-led span{opacity:.18;background:teal;border-radius:50%;width:8px;height:8px;animation:1.2s linear infinite g-led}.g-led span:nth-child(2){animation-delay:.4s}.g-led span:nth-child(3){animation-delay:.8s}.g-wave{width:56px;height:20px;overflow:hidden}.g-wave svg{width:112px;height:20px;animation:1.8s linear infinite g-slide}.g-type{width:0;animation:g-type 4s steps(var(--n)) infinite;border-right:2px solid;display:inline-block;overflow:hidden}.g-bounce{background:#0080808c;border-radius:50%;width:12px;height:12px;animation:.9s cubic-bezier(.5,0,.5,1) infinite alternate g-bounce;display:block}.g-bar{justify-items:center;gap:6px;font-size:11px;display:grid}.g-bar i{background:#3333331f;border-radius:3px;width:52px;height:5px;display:block;overflow:hidden}.g-bar i:after{content:"";transform-origin:0;background:#00808080;height:100%;animation:2.4s ease-in-out infinite g-fill;display:block}@media (min-width:1200px){html:has(.project-wall){height:100%;overflow:hidden}body:has(.project-wall){flex-direction:column;height:100dvh;display:flex;overflow:hidden}.project-wall{flex:1 1 0;min-height:0;padding:8px 6vw 56px}.wall-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.8fr) minmax(0,1fr);max-width:none;height:100%}.wall-side{grid-template-rows:repeat(5,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;height:100%;display:grid}.wall-side>*{grid-column:var(--c) / span var(--w);grid-row:var(--r) / span var(--h);min-width:0;min-height:0}.wall-center{min-height:0}.wall-hero{flex:1;min-height:0}.wall-hero-in{padding:32px 36px}}@media (min-width:1200px) and (max-height:760px){.wall-hero-in{gap:10px;padding:20px 24px}.wall-hero-in h1{font-size:28px}.wall-desc{font-size:13.5px;line-height:1.7}}@media (min-width:1200px) and (max-height:600px){:is(html:has(.project-wall),body:has(.project-wall)){height:auto;display:block;overflow:auto}.project-wall,.wall-grid,.wall-side{height:auto}.wall-side{grid-template-rows:repeat(5,88px)}}@keyframes wall-spin{to{rotate:360deg}}@keyframes g-blink{50%{opacity:0}}@keyframes g-hop{0%,60%,to{translate:0}30%{translate:0 -4px}}@keyframes g-eyes-open{0%{opacity:1}88%{opacity:0}94%{opacity:1}}@keyframes g-eyes-shut{0%{opacity:0}88%{opacity:1}94%{opacity:0}}@keyframes g-beat{0%,40%,to{scale:1}20%{scale:1.25}30%{scale:1.05}}@keyframes g-led{0%{opacity:1}33%,to{opacity:.18}}@keyframes g-slide{to{translate:-56px}}@keyframes g-type{0%{width:0}45%,75%{width:calc(var(--n) * 1ch)}to{width:0}}@keyframes g-bounce{0%{translate:0 -9px}to{translate:0 9px;scale:1.15 .85}}@keyframes g-fill{0%{transform:scaleX(0)}70%,to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.wall-hero:before,.glyph-tile *,.glyph-tile :before,.glyph-tile :after{animation:none!important}.g-type{border-right:0;width:auto}.g-blink .shut{opacity:0}.wall-tile,.wall-tile:hover{transition:none;transform:none}}
