/* ===== CSS Reset (modern) ===== */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html,body{height:100%}
img,svg,video,canvas{display:block;max-width:100%}
input,button,textarea,select{font:inherit}
/* ===== Theme tokens ===== */
:root{
  --bg: #ffffff;
  --bg-elev: #f6f7f9;
  --text: #111827;
  --muted: #6b7280;
  --primary: #3b82f6;
  --primary-fg: #ffffff;
  --accent: #0ea5e9;
  --border: #e5e7eb;
  --shadow: 0 1px 2px rgba(0,0,0,.06), 0 1px 3px rgba(0,0,0,.1);
}
[data-theme="dark"]{
  --bg: #0b0f14;
  --bg-elev: #111827;
  --text: #e5e7eb;
  --muted: #a1a1aa;
  --primary: #60a5fa;
  --primary-fg: #0b0f14;
  --accent: #22d3ee;
  --border: #1f2937;
  --shadow: 0 2px 8px rgba(0,0,0,.45);
}

html{scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--text);
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Noto Sans JP, "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo", sans-serif;
  line-height:1.6;
}

.container{max-width:1080px;margin-inline:auto;padding:0 20px}
.section{padding:80px 0}
.section h2{font-size:1.75rem;margin-bottom:16px}

/* Header */
.site-header{position:sticky;top:0;background:rgba(255,255,255,.7);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--border);z-index:1000}
[data-theme="dark"] .site-header{background:rgba(11,15,20,.7)}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0}
.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}
.brand-text{font-weight:700}

.site-nav .nav-list{display:flex;gap:16px;list-style:none}
.site-nav a{color:inherit;text-decoration:none;padding:8px 10px;border-radius:8px}
.site-nav a:hover{background:var(--bg-elev)}

.nav-toggle{display:none;flex-direction:column;gap:4px;border:1px solid var(--border);background:var(--bg-elev);padding:8px;border-radius:8px}
.nav-toggle .bar{display:block;width:20px;height:2px;background:var(--text)}

.theme-toggle{border:1px solid var(--border);background:var(--bg-elev);padding:8px 10px;border-radius:8px;cursor:pointer}
.theme-toggle:hover{filter:brightness(0.98)}

/* Hero */
.hero{padding-top:96px}
.hero-inner{display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:32px}
.hero h1{font-size:clamp(1.8rem, 2.5vw + 1rem, 2.6rem);line-height:1.2}
.hero .lead{color:var(--muted);margin-top:12px}
.hero-cta{display:flex;gap:12px;margin-top:20px}
.hero-visual{justify-self:end}
.avatar{width:240px;height:240px;border-radius:50%;box-shadow:var(--shadow);border:1px solid var(--border)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:10px;border:1px solid var(--border);text-decoration:none;color:inherit;background:var(--bg-elev);box-shadow:var(--shadow);transition:transform .04s ease}
.btn:hover{transform:translateY(-1px)}
.btn.primary{background:var(--primary);color:var(--primary-fg);border-color:transparent}
.btn.ghost{background:transparent}
.btn.small{padding:8px 10px;font-size:.9rem}

/* Meta list */
.meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:12px}
.meta li{list-style:none;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elev)}

/* Chips */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.chip{padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg-elev);font-size:.95rem}

/* Projects */
.grid.projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:8px}
.card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;background:var(--bg);box-shadow:var(--shadow);overflow:hidden}
.card-thumb{background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);height:140px}
.card-body{padding:14px}
.card-title{font-size:1.1rem;margin-bottom:6px}
.card-text{color:var(--muted)}
.card-actions{display:flex;gap:8px;margin-top:12px}

/* Timeline */
.timeline{display:grid;gap:16px;margin-top:8px;padding-left:0}
.timeline li{list-style:none;display:grid;grid-template-columns:20px 1fr;gap:12px}
.tl-dot{width:12px;height:12px;border-radius:50%;background:var(--primary);margin-top:6px}
.tl-header{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:space-between}
.tl-meta{color:var(--muted);font-size:.95rem}

/* Contact */
.contact-box{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}

/* Footer */
.site-footer{border-top:1px solid var(--border);padding:24px 0;background:var(--bg-elev);margin-top:40px}

/* Skip link */
.skip-link{position:absolute;left:-9999px;top:auto}
.skip-link:focus{left:16px;top:16px;background:#111;color:#fff;padding:8px 12px;border-radius:8px}

/* Responsive */
@media (max-width: 900px){
  .hero-inner{grid-template-columns:1fr;}
  .hero-visual{justify-self:start}
}

@media (max-width: 760px){
  .site-nav .nav-list{display:none;position:absolute;right:20px;top:56px;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:10px;flex-direction:column;min-width:200px}
  .site-nav .nav-list.open{display:flex}
  .nav-toggle{display:flex}
}

