/* ==================================================
   Base
================================================== */

:root{
  --bg0:#070a12;
  --bg1:#0b1020;
  --line:rgba(255,255,255,.10);
  --txt:rgba(255,255,255,.92);
  --muted:rgba(255,255,255,.68);
  --shadow: 0 18px 60px rgba(0,0,0,.55);
  --radius: 20px;
  --tap: 56px;
}

*{
  box-sizing:border-box;
}

html{
  height:100%;
  background:#070a12; /* 継ぎ目防止 */
}

body{
  margin:0;
  min-height:100%;

  font-family:
    ui-sans-serif,
    system-ui,
    -apple-system,
    "Segoe UI",
    Roboto,
    "Noto Sans JP",
    "Hiragino Kaku Gothic ProN",
    "Meiryo",
    Arial,
    sans-serif;

  color:var(--txt);
  overflow-x:hidden;

  background:none; /* 背景は固定レイヤーに任せる */
}

a{
  color:inherit;
  text-decoration:none;
}


/* ==================================================
   Background (Fix mobile gradient jump)
================================================== */

body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;

  background:
    radial-gradient(1400px 900px at 15% -10%, rgba(124,92,255,.16), transparent 70%),
    radial-gradient(1300px 900px at 105% 15%, rgba(0,224,255,.12), transparent 72%),
    radial-gradient(1400px 1100px at 40% 120%, rgba(255,66,152,.10), transparent 74%),
    linear-gradient(180deg, var(--bg0), var(--bg1));

  background-repeat:no-repeat;

  /* iOS安定化 */
  transform:translateZ(0);
}


/* ==================================================
   Layout
================================================== */

.wrap{
  width:min(960px, 100%);
  margin:0 auto;

  padding:
    32px
    clamp(16px, 4vw, 32px)
    40px;
}


/* ==================================================
   Header
================================================== */

header{
  display:flex;
  gap:18px;
  align-items:center;

  padding:18px;

  border:1px solid var(--line);
  border-radius:var(--radius);

  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.08),
      rgba(255,255,255,.04)
    );

  box-shadow:var(--shadow);

  position:relative;
  overflow:hidden;
}

header::before{
  content:"";
  position:absolute;
  inset:-2px;

  background:
    radial-gradient(500px 220px at 15% 20%, rgba(124,92,255,.20), transparent 60%),
    radial-gradient(500px 220px at 85% 20%, rgba(0,224,255,.18), transparent 60%);

  filter:blur(10px);
  opacity:.9;
  pointer-events:none;
}

.avatar{
  width:72px;
  height:72px;

  border-radius:999px;
  border:1px solid var(--line);

  background:
    radial-gradient(circle at 30% 30%, rgba(255,255,255,.18), transparent 45%),
    linear-gradient(135deg, rgba(124,92,255,.55), rgba(0,224,255,.35));

  box-shadow:0 18px 40px rgba(0,0,0,.35);

  flex:0 0 auto;
  position:relative;
}

.avatar::after{
  content:"";
  position:absolute;
  inset:6px;

  border-radius:999px;
  border:1px dashed rgba(255,255,255,.18);
  opacity:.6;
}

.profile{
  flex:1;
  min-width:0;
  position:relative;
  z-index:1;
}

.name{
  display:flex;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;

  margin:0;

  font-weight:800;
  letter-spacing:.02em;

  font-size:clamp(18px, 2.4vw, 22px);
  line-height:1.1;
}

.badge{
  font-size:12px;

  padding:6px 10px;

  border-radius:999px;
  border:1px solid var(--line);

  background:rgba(255,255,255,.06);

  color:var(--muted);
  white-space:nowrap;
}

.bio{
  margin:8px 0 0;

  color:var(--muted);

  line-height:1.6;
  font-size:14px;
}


/* ==================================================
   Buttons
================================================== */

.pill{
  height:40px;

  display:inline-flex;
  align-items:center;
  gap:10px;

  padding:0 14px;

  border-radius:999px;
  border:1px solid var(--line);

  background:rgba(0,0,0,.18);

  color:inherit;
  font:inherit;

  cursor:pointer;
  user-select:none;

  transition:
    transform .18s ease,
    background .18s ease,
    border-color .18s ease;
}

.pill:hover{
  transform:translateY(-1px);
  background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.20);
}

.pill i{
  opacity:.9;
}

.pill span{
  font-size:13px;
  color:var(--muted);
}


/* ==================================================
   Section
================================================== */

.section{
  margin-top:18px;

  padding:
    0
    clamp(8px, 2vw, 16px);

  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}

.section h2{
  margin:0;

  font-size:14px;

  color:rgba(255,255,255,.78);

  letter-spacing:.08em;
  text-transform:uppercase;
}

.hint{
  margin:0;

  font-size:12px;
  color:rgba(255,255,255,.55);

  display:flex;
  gap:8px;
  align-items:center;
}


/* ==================================================
   Grid / Cards
================================================== */

.grid{
  margin-top:12px;

  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:12px;

  padding-inline:clamp(8px, 2vw, 16px);
}

@media (max-width:720px){
  header{
    flex-direction:column;
    align-items:flex-start;
  }

  .grid{
    grid-template-columns:1fr;
  }
}

.card{
  position:relative;

  border-radius:var(--radius);
  border:1px solid var(--line);

  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.10),
      rgba(255,255,255,.06)
    );

  overflow:hidden;

  box-shadow:0 14px 40px rgba(0,0,0,.35);

  transition:
    transform .18s ease,
    border-color .18s ease;
}

.card:hover{
  transform:translateY(-2px);
  border-color:rgba(255,255,255,.20);
}

.card a{
  display:flex;
  align-items:center;
  gap:14px;

  padding:14px;

  min-height:var(--tap);
}

.icon{
  width:48px;
  height:48px;

  border-radius:14px;

  display:grid;
  place-items:center;

  border:1px solid rgba(255,255,255,.14);

  background:rgba(0,0,0,.18);

  flex:0 0 auto;
}

.icon i{
  font-size:20px;
}


/* Platform Colors */

.icon--insta{
  background:
    radial-gradient(circle at 30% 110%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285AEB 90%);
}

.icon--x{
  background:linear-gradient(135deg,#000,#222);
}

.icon--yt{
  background:linear-gradient(135deg,#ff0033,#aa0000);
}

.icon--dc{
  background:linear-gradient(135deg,#5865f2,#3b42c4);
}

.icon--gh{
  background:linear-gradient(135deg,#222,#000);
}

.icon--web{
  background:linear-gradient(135deg,#00e0ff,#7c5cff);
}


/* ==================================================
   Card Text
================================================== */

.meta{
  flex:1;
  min-width:0;
}

.title{
  margin:0;

  font-weight:800;
  font-size:15px;

  display:flex;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;
}

.desc{
  margin:6px 0 0;

  font-size:13px;
  line-height:1.5;

  color:var(--muted);

  overflow:hidden;

  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
}

.arrow{
  opacity:.75;
  transition:.18s;
}

.card:hover .arrow{
  transform:translateX(2px);
  opacity:1;
}


/* ==================================================
   Footer
================================================== */

footer{
  margin-top:16px;

  padding:14px 2px 0;

  color:rgba(255,255,255,.45);

  font-size:12px;

  display:flex;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
}


/* ==================================================
   Modal
================================================== */

.modal{
  position:fixed;
  inset:0;

  background:rgba(0,0,0,.55);
  backdrop-filter:blur(6px);

  display:none;
  place-items:center;

  z-index:999;
}

.modal.show{
  display:grid;
}

.modal-bg{
  position:absolute;
  inset:0;
}

.modal-box{
  position:relative;

  width:min(90%,380px);

  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.12),
      rgba(255,255,255,.05)
    );

  border:1px solid var(--line);
  border-radius:18px;

  padding:22px 20px 18px;

  text-align:center;

  box-shadow:var(--shadow);
}

.mail{
  margin:6px 0 14px;

  padding:10px 12px;

  background:rgba(0,0,0,.25);

  border:1px solid rgba(255,255,255,.10);
  border-radius:12px;

  font-family:monospace;

  word-break:break-all;
}

.copy-btn{
  width:100%;
  height:44px;

  border-radius:12px;
  border:1px solid rgba(0,224,255,.45);

  background:rgba(0,224,255,.16);

  color:#fff;
  font-weight:700;

  cursor:pointer;
}

.close-btn{
  margin-top:10px;

  width:100%;
  height:40px;

  border-radius:12px;
  border:1px solid rgba(255,255,255,.12);

  background:rgba(255,255,255,.06);

  color:rgba(255,255,255,.75);

  cursor:pointer;
}


/* ==================================================
   Reduce Motion
================================================== */

@media (prefers-reduced-motion: reduce){

  *{
    transition:none !important;
    animation:none !important;
  }

  .card:hover,
  .pill:hover{
    transform:none;
  }
}

/* ===== Avatar Image ===== */

.avatar{
  overflow: hidden; /* はみ出し防止 */
}

.avatar img{
  width: 100%;
  height: 100%;
  object-fit: cover; /* トリミングきれい */
  border-radius: 50%;
  display: block;
}