@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'DM Sans', sans-serif; -webkit-tap-highlight-color: transparent; } body { min-height: 100vh; min-height: -webkit-fill-available; display: flex; align-items: center; justify-content: center; background-color: #fce4ec; padding: 16px; overflow-x: hidden; } html { height: -webkit-fill-available; } .card { position: relative; background: linear-gradient(145deg, #fff5f8, #fff); border-radius: clamp(24px, 5vw, 40px); padding: clamp(24px, 5vw, 60px); width: 100%; max-width: min(600px, 90vw); overflow: hidden; animation: cardAppear 0.6s ease-out; box-shadow: 0 10px 20px rgba(244, 143, 177, 0.15); border: 2px solid rgba(244, 143, 177, 0.2); } .card::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle, rgba(244, 143, 177, 0.1) 0%, transparent 50%); opacity: 0; transition: opacity 0.3s; pointer-events: none; } .card:hover::before { opacity: 1; } .profile { position: relative; text-align: center; margin-bottom: clamp(30px, 5vw, 45px); } .avatar-container { position: relative; width: clamp(140px, 30vw, 200px); height: clamp(140px, 30vw, 200px); margin: 0 auto clamp(25px, 5vw, 35px); animation: avatarAppear 0.6s ease-out 0.3s both; } .avatar { width: 100%; height: 100%; border-radius: clamp(20px, 4vw, 30px); overflow: hidden; transform: rotate(-5deg); transition: transform 0.3s ease; border: 4px solid #f48fb1; touch-action: manipulation; } @media (hover: hover) { .avatar:hover { transform: rotate(0deg); } } .avatar:hover { transform: rotate(0deg); } .avatar:active { transform: scale(0.98) rotate(0deg); } .avatar img { width: 100%; height: 100%; object-fit: cover; } .cap-link { position: absolute; top: clamp(-25px, -5vw, -30px); left: 50%; transform: translateX(-50%); width: clamp(60px, 12vw, 80px); height: clamp(60px, 12vw, 80px); cursor: pointer; transition: transform 0.3s ease; z-index: 10; touch-action: manipulation; } @media (hover: hover) { .cap-link:hover { transform: translateX(-50%) rotate(10deg); } } .cap-link:active { transform: translateX(-50%) scale(0.95); } .cap-link:hover { transform: translateX(-50%) rotate(10deg); } .cap-link img { width: 100%; height: 100%; object-fit: contain; } .decorative-circle { position: absolute; width: 200px; height: 200px; border: 2px solid rgba(244, 143, 177, 0.3); border-radius: 30px; top: -5px; left: calc(50% - 100px); transform: rotate(5deg); pointer-events: none; } .name { color: #e91e63; font-size: clamp(1.8em, 5vw, 2.5em); font-weight: 600; margin-bottom: 12px; letter-spacing: -0.5px; transition: all 0.3s ease; cursor: pointer; position: relative; display: inline-block; touch-action: manipulation; } .name:hover { color: #f06292; animation: kawaiiBounce 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .name::before { content: "⩺///"; position: absolute; color: #f8bbd0; font-size: 0.4em; top: -1em; left: 50%; transform: translateX(-50%) scale(0); opacity: 0; transition: transform 0.3s ease, opacity 0.3s ease; white-space: nowrap; } .name::after { content: "hehe"; position: absolute; color: #f8bbd0; font-size: 0.4em; bottom: -1em; right: -1em; transform: scale(0) rotate(-10deg); opacity: 0; transition: transform 0.3s ease, opacity 0.3s ease; } .name:hover::before, .name:hover::after { transform: translateX(-50%) scale(1); opacity: 1; } .name:hover::after { transform: scale(1) rotate(-10deg); } @keyframes kawaiiBounce { 0%, 100% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-5px) rotate(-3deg); } 35% { transform: translateY(-5px) rotate(2deg); } 45% { transform: translateY(-3px) rotate(-1deg); } 55% { transform: translateY(-1px) rotate(1deg); } 65% { transform: translateY(0px) rotate(0deg); } 75% { transform: translateY(-2px); } 85% { transform: translateY(-1px); } } @keyframes shyWiggle { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(-3deg); } 75% { transform: rotate(3deg); } } .bio { color: #f06292; font-size: clamp(1em, 3vw, 1.2em); margin-bottom: auto; line-height: 1.6; font-weight: 500; min-height: 1.6em; display: inline-block; position: relative; } .bio-cursor { display: inline-block; margin-left: 2px; animation: blink 0.7s infinite; font-weight: 100; color: #f06292; } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .social-links { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(15px, 3vw, 25px); margin-top: clamp(35px, 5vw, 45px); animation: textAppear 0.6s ease-out 0.6s both; } .social-link { padding: clamp(15px, 3vw, 20px); text-align: center; text-decoration: none; color: #e91e63; background: rgba(244, 143, 177, 0.1); border-radius: clamp(16px, 3vw, 20px); transition: all 0.3s ease; position: relative; overflow: hidden; border: 1px solid rgba(244, 143, 177, 0.2); display: flex; align-items: center; justify-content: center; gap: 12px; font-weight: 500; font-size: clamp(1em, 2.5vw, 1.2em); touch-action: manipulation; } @media (hover: hover) { .social-link:hover { background: rgba(244, 143, 177, 0.15); transform: translateY(-2px); box-shadow: 0 5px 15px rgba(244, 143, 177, 0.2); } } .social-link:active { transform: translateY(1px); background: rgba(244, 143, 177, 0.2); } @media (max-width: 768px) { .social-links { grid-template-columns: 1fr; } .social-link { padding: 20px; font-size: 1.1em; } } .name, .social-link { user-select: none; -webkit-user-select: none; } .social-link i { font-size: 1.2em; } .social-link::after { content: ''; position: absolute; width: 100%; height: 100%; top: 0; left: -100%; background: linear-gradient(90deg, transparent, rgba(244, 143, 177, 0.2), transparent ); transition: 0.5s; } .social-link:hover::after { left: 100%; } .social-link:hover { background: rgba(244, 143, 177, 0.15); transform: translateY(-2px); box-shadow: 0 5px 15px rgba(244, 143, 177, 0.2); } .background-grain { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4KICA8ZmlsdGVyIGlkPSJub2lzZSIgeD0iMCIgeT0iMCI+CiAgICA8ZmVUdXJidWxlbmNlIHR5cGU9ImZyYWN0YWxOb2lzZSIgYmFzZUZyZXF1ZW5jeT0iMC42NSIgbnVtT2N0YXZlcz0iMyIgc3RpdGNoVGlsZXM9InN0aXRjaCIvPgogIDwvZmlsdGVyPgogIDxyZWN0IHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIiBmaWx0ZXI9InVybCgjbm9pc2UpIiBvcGFjaXR5PSIwLjA1Ii8+Cjwvc3ZnPg=='); pointer-events: none; opacity: 0.5; z-index: -1; } @keyframes cardAppear { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes avatarAppear { from { opacity: 0; transform: scale(0.8) rotate(-5deg); } to { opacity: 1; transform: scale(1) rotate(-5deg); } } @media (max-width: 480px) { .card { padding: 30px; max-width: 380px; border-radius: 30px; } .avatar-container { width: 120px; height: 120px; } .decorative-circle { width: 120px; height: 120px; left: calc(50% - 60px); } .name { font-size: 1.8em; padding: 8px; } .cap-link { width: 60px; height: 60px; top: -25px; } .bio { font-size: 1em; } .social-links { gap: 15px; margin-top: 35px; } .social-link { padding: 15px; font-size: 1em; min-height: 60px; } }