<style>
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    :root {
      --bg: #0c0c0b;
      --bg2: #141412;
      --fg: #e8e4d9;
      --fg-muted: #7a7670;
      --accent: #c8f060;
      --accent-dim: rgba(200, 240, 96, 0.08);
      --border: rgba(232, 228, 217, 0.08);
      --border-hover: rgba(200, 240, 96, 0.3);
      --font-display: 'Syne', sans-serif;
      --font-mono: 'DM Mono', monospace;
    }

    html, body {
      height: 100%;
      background: var(--bg);
      color: var(--fg);
      font-family: var(--font-mono);
      overflow: hidden;
    }

    /* scanline overlay */
    body::before {
      content: '';
      position: fixed;
      inset: 0;
      background: repeating-linear-gradient(
        0deg,
        transparent,
        transparent 2px,
        rgba(0,0,0,0.03) 2px,
        rgba(0,0,0,0.03) 4px
      );
      pointer-events: none;
      z-index: 100;
    }

    .wrapper {
      min-height: 100vh;
      min-height: 100dvh;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 2rem;
    }

    .card {
      position: relative;
      width: 100%;
      max-width: 480px;
    }

    /* top bar decoration */
    .top-bar {
      display: flex;
      align-items: center;
      gap: 8px;
      margin-bottom: 2.5rem;
      opacity: 0;
      animation: fadeUp 0.4s ease forwards;
      animation-delay: 0.1s;
    }

    .dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: var(--fg-muted);
    }

    .dot.accent { background: var(--accent); }

    .top-bar-line {
      flex: 1;
      height: 1px;
      background: var(--border);
    }

    .top-bar-label {
      font-size: 10px;
      font-weight: 400;
      color: var(--fg-muted);
      letter-spacing: 0.12em;
      text-transform: uppercase;
    }

    /* avatar */
    .avatar-wrap {
      margin-bottom: 2rem;
      opacity: 0;
      animation: fadeUp 0.4s ease forwards;
      animation-delay: 0.2s;
    }

    .avatar {
      width: 72px;
      height: 72px;
      border-radius: 4px;
      object-fit: cover;
      display: block;
      filter: grayscale(20%) contrast(1.05);
      border: 1px solid var(--border);
      transition: filter 0.3s ease, border-color 0.3s ease;
    }

    .avatar:hover {
      filter: grayscale(0%) contrast(1.1);
      border-color: var(--border-hover);
    }

    /* name */
    .name {
      font-family: var(--font-display);
      font-size: clamp(2.4rem, 8vw, 3.8rem);
      line-height: 0.95;
      letter-spacing: -0.02em;
      color: var(--fg);
      margin-bottom: 0.6rem;
      overflow: hidden;
    }

    .name-inner {
      display: block;
      opacity: 0;
      animation: fadeUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
      animation-delay: 0.35s;
    }

    /* typed cursor on title */
    .title-wrap {
      margin-bottom: 2.8rem;
      opacity: 0;
      animation: fadeUp 0.4s ease forwards;
      animation-delay: 0.55s;
    }

    .title-prefix {
      color: var(--accent);
      font-size: 11px;
      font-weight: 400;
      margin-right: 6px;
      user-select: none;
    }

    .title {
      font-size: 13px;
      font-weight: 300;
      color: var(--fg-muted);
      letter-spacing: 0.04em;
    }

    .cursor {
      display: inline-block;
      width: 7px;
      height: 13px;
      background: var(--accent);
      margin-left: 3px;
      vertical-align: middle;
      animation: blink 1.1s step-end infinite;
    }

    @keyframes blink {
      0%, 100% { opacity: 1; }
      50% { opacity: 0; }
    }

    /* links */
    .links {
      display: flex;
      flex-direction: column;
      gap: 2px;
    }

    .link-item {
      opacity: 0;
      animation: fadeUp 0.4s ease forwards;
    }

    .link-item:nth-child(1) { animation-delay: 0.7s; }
    .link-item:nth-child(2) { animation-delay: 0.8s; }
    .link-item:nth-child(3) { animation-delay: 0.9s; }

    .link-item a {
      display: flex;
      align-items: center;
      gap: 0;
      padding: 10px 0;
      text-decoration: none;
      color: var(--fg-muted);
      font-size: 12px;
      font-weight: 400;
      letter-spacing: 0.06em;
      border-bottom: 1px solid var(--border);
      transition: color 0.2s ease, border-color 0.2s ease;
      position: relative;
      overflow: hidden;
    }

    .link-item a::before {
      content: '> ';
      color: var(--accent);
      opacity: 0;
      transform: translateX(-8px);
      transition: opacity 0.2s ease, transform 0.2s ease;
      white-space: pre;
    }

    .link-item a:hover {
      color: var(--fg);
      border-color: var(--border-hover);
    }

    .link-item a:hover::before {
      opacity: 1;
      transform: translateX(0);
    }

    .link-label {
      text-transform: uppercase;
      letter-spacing: 0.1em;
      font-size: 10px;
    }

    .link-arrow {
      margin-left: auto;
      opacity: 0;
      transform: translateX(-4px);
      transition: opacity 0.2s ease, transform 0.2s ease;
      font-size: 11px;
      color: var(--accent);
    }

    .link-item a:hover .link-arrow {
      opacity: 1;
      transform: translateX(0);
    }

    /* footer */
    .footer {
      margin-top: 2.5rem;
      display: flex;
      justify-content: space-between;
      align-items: center;
      opacity: 0;
      animation: fadeUp 0.4s ease forwards;
      animation-delay: 1.05s;
    }

    .footer-copy {
      font-size: 10px;
      color: var(--fg-muted);
      opacity: 0.5;
      letter-spacing: 0.06em;
    }

    .footer-location {
      font-size: 10px;
      color: var(--fg-muted);
      opacity: 0.5;
      letter-spacing: 0.06em;
    }

    @keyframes fadeUp {
      from { opacity: 0; transform: translateY(12px); }
      to { opacity: 1; transform: translateY(0); }
    }

    /* custom cursor */
    body { cursor: none; }

    .custom-cursor {
      position: fixed;
      width: 6px;
      height: 6px;
      background: var(--accent);
      border-radius: 50%;
      pointer-events: none;
      z-index: 9999;
      transform: translate(-50%, -50%);
      will-change: left, top;
    }

    .custom-cursor.transitioning {
      transition: transform 0.15s ease, opacity 0.15s ease;
    }

    .custom-cursor.on-link {
      transform: translate(-50%, -50%) scale(3);
      opacity: 0.5;
    }

    @media (max-width: 480px) {
      body { cursor: auto; }
      .custom-cursor { display: none; }
    }
  </style>