/* shared styles for sub pages (about / privacy / terms / contact / blog)
   tokens kept in sync with index.html so theme switching matches */
:root{
  --pink:#ef9bb4; --teal:#2dd4bf; --mint:#34d399;
  --accent:#9b8cff; --accent-2:#7dd3fc;
  --r:16px;
  --mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,"Liberation Mono",monospace;
  --jp:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP","Yu Gothic",sans-serif;
}
html[data-theme="dark"]{
  --bg:#0a0e0f; --bg2:#0d1314; --surface:#11191a; --surface-2:#0e1516;
  --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.05);
  --text:#e9efee; --muted:#8b9a97; --faint:#5e6c69;
  --grid:rgba(255,255,255,.025);
  --accent:#a99bff;
}
html[data-theme="light"]{
  --bg:#f6f7f7; --bg2:#eef0f0; --surface:#ffffff; --surface-2:#f9fafa;
  --line:rgba(10,20,18,.1); --line-2:rgba(10,20,18,.06);
  --text:#141f1d; --muted:#5b6764; --faint:#9aa6a3;
  --grid:rgba(10,20,18,.03);
  --accent:#6d5cf0;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--jp); background:var(--bg); color:var(--text);
  line-height:1.8; -webkit-font-smoothing:antialiased;
  transition:background .4s ease,color .4s ease; overflow-x:hidden;
}
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(ellipse 90% 60% at 70% 0%,#000 0%,transparent 75%);
}
.mono{font-family:var(--mono)}
a{color:inherit;text-decoration:none}
.wrap{max-width:880px;margin:0 auto;padding:0 32px;position:relative;z-index:1}
.wrap-wide{max-width:1180px}

/* nav */
nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);
  background:color-mix(in srgb,var(--bg) 78%,transparent);
  border-bottom:1px solid var(--line);}
.nav-in{max-width:1180px;margin:0 auto;padding:14px 32px;display:flex;align-items:center;gap:24px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-weight:600;font-size:15px;letter-spacing:.02em}
.brand .dot{width:22px;height:22px;border-radius:7px;background:linear-gradient(135deg,var(--accent),var(--accent-2));display:grid;place-items:center;font-size:12px;color:#0a0e0f;font-weight:800}
.brand small{color:var(--faint);font-weight:400}
.nav-links{display:flex;gap:4px;margin-left:auto}
.nav-links a{font-family:var(--mono);font-size:13px;color:var(--muted);padding:7px 12px;border-radius:8px;transition:.2s}
.nav-links a:hover,.nav-links a.active{color:var(--text);background:var(--surface)}
.nav-tools{display:flex;align-items:center;gap:6px}
.icon-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--muted);display:grid;place-items:center;cursor:pointer;transition:.2s}
.icon-btn:hover{color:var(--text);border-color:var(--accent);transform:translateY(-1px)}
.icon-btn svg{width:16px;height:16px}

/* buttons */
.btn{font-family:var(--mono);font-size:13.5px;padding:12px 20px;border-radius:11px;cursor:pointer;transition:.2s;display:inline-flex;align-items:center;gap:9px;border:1px solid transparent}
.btn-primary{background:var(--accent);color:#0a0e0f;font-weight:700}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 30px -8px var(--accent)}
.btn-ghost{border-color:var(--line);color:var(--text);background:var(--surface)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}

/* page hero */
.page-hero{padding:64px 0 30px}
.crumbs{font-family:var(--mono);font-size:12.5px;color:var(--faint);margin-bottom:22px;display:flex;gap:8px;flex-wrap:wrap}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--accent)}
.eyebrow{font-family:var(--mono);font-size:12.5px;letter-spacing:.16em;color:var(--accent);text-transform:uppercase;display:flex;align-items:center;gap:10px;margin-bottom:18px}
.eyebrow::before{content:"";width:28px;height:1px;background:var(--accent)}
.page-title{font-size:clamp(30px,4.4vw,46px);line-height:1.18;font-weight:800;letter-spacing:-.01em;text-wrap:balance}
.page-sub{margin-top:18px;font-size:16px;color:var(--muted);max-width:60ch;line-height:1.85}
.post-meta{margin-top:20px;display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:12.5px;color:var(--faint);align-items:center}
.tag{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:6px;border:1px solid color-mix(in srgb,var(--tc,var(--accent)) 30%,transparent);color:var(--tc,var(--accent));background:color-mix(in srgb,var(--tc,var(--accent)) 12%,transparent)}

/* document / article typography */
.doc{padding:18px 0 70px;font-size:16px}
.doc>*+*{margin-top:18px}
.doc h2{font-size:clamp(22px,2.6vw,28px);font-weight:800;letter-spacing:-.01em;margin-top:48px;padding-top:8px;line-height:1.35}
.doc h2::before{content:"# ";color:var(--accent);font-family:var(--mono);font-weight:600}
.doc h3{font-size:18.5px;font-weight:700;margin-top:32px}
.doc p{color:var(--text);line-height:1.95}
.doc a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent)}
.doc a:hover{text-decoration-color:var(--accent)}
.doc ul,.doc ol{padding-left:1.4em;color:var(--text)}
.doc li{margin:8px 0;line-height:1.85}
.doc li::marker{color:var(--accent)}
.doc strong{font-weight:700;color:var(--text)}
.doc blockquote{border-left:3px solid var(--accent);padding:6px 18px;color:var(--muted);background:var(--surface-2);border-radius:0 10px 10px 0}
.doc code{font-family:var(--mono);font-size:.88em;background:var(--surface-2);border:1px solid var(--line-2);border-radius:6px;padding:2px 6px;color:var(--accent-2)}
.doc pre{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:18px 20px;overflow-x:auto;line-height:1.7}
.doc pre code{background:none;border:0;padding:0;font-size:13px;color:var(--text)}
.doc table{width:100%;border-collapse:collapse;font-size:14px;display:block;overflow-x:auto}
.doc th,.doc td{border:1px solid var(--line);padding:10px 14px;text-align:left;vertical-align:top}
.doc th{background:var(--surface-2);font-family:var(--mono);font-size:12.5px;letter-spacing:.03em;color:var(--muted);white-space:nowrap}
.doc figure{margin:24px 0}
.doc figcaption{font-family:var(--mono);font-size:12px;color:var(--faint);margin-top:8px}
.callout{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 22px}
.callout h4{font-size:14px;font-family:var(--mono);letter-spacing:.04em;color:var(--accent);margin-bottom:8px}
.callout p{font-size:14.5px;color:var(--muted);margin:0}
.divider{height:1px;background:var(--line-2);border:0;margin:36px 0}

/* blog index list */
.post-list{display:grid;gap:16px;padding:18px 0 60px}
.post-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px 26px;transition:.24s;display:block}
.post-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 50%,var(--line));box-shadow:0 22px 46px -28px rgba(0,0,0,.55)}
.post-card .pc-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.post-card .pc-date{font-family:var(--mono);font-size:12px;color:var(--faint)}
.post-card h3{font-size:19px;font-weight:800;line-height:1.45;letter-spacing:-.005em}
.post-card p{color:var(--muted);font-size:14.5px;margin-top:8px;line-height:1.8}
.post-card .pc-go{font-family:var(--mono);font-size:12.5px;color:var(--accent);margin-top:14px;display:inline-flex;gap:8px;transition:.2s}
.post-card:hover .pc-go{gap:13px}

/* contact + info blocks */
.info-grid{display:grid;grid-template-columns:160px 1fr;gap:14px 24px;padding:18px 0}
.info-grid dt{font-family:var(--mono);font-size:13px;color:var(--muted)}
.info-grid dd{font-size:15px}
.link-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:16px 20px;transition:.22s;margin-top:12px}
.link-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.link-card .lc-ico{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line);flex-shrink:0}
.link-card .lc-ico svg{width:20px;height:20px}
.link-card .lc-main{display:flex;flex-direction:column}
.link-card .lc-name{font-size:15px;font-weight:700}
.link-card .lc-sub{font-family:var(--mono);font-size:12px;color:var(--faint)}

/* footer */
footer{border-top:1px solid var(--line);margin-top:50px;padding:56px 0 40px}
.foot-grid{max-width:1180px;margin:0 auto;padding:0 32px;display:flex;justify-content:space-between;align-items:flex-start;gap:40px;flex-wrap:wrap}
.foot-brand .brand{font-size:18px;margin-bottom:14px}
.foot-brand p{color:var(--muted);font-size:13.5px;max-width:34ch}
.foot-social{display:flex;gap:10px;margin-top:20px}
.foot-cols{display:flex;gap:56px;flex-wrap:wrap}
.foot-col h5{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:14px}
.foot-col a{display:block;color:var(--muted);font-size:13.5px;padding:5px 0;transition:.2s}
.foot-col a:hover{color:var(--accent)}
.copy{max-width:1180px;margin:46px auto 0;padding:24px 32px 0;border-top:1px solid var(--line-2);display:flex;justify-content:space-between;color:var(--faint);font-family:var(--mono);font-size:12px;flex-wrap:wrap;gap:10px}

@media(max-width:880px){
  .nav-links{display:none}
  .nav-tools{margin-left:auto}
  .wrap,.nav-in,.foot-grid,.copy{padding-left:20px;padding-right:20px}
  .info-grid{grid-template-columns:1fr;gap:4px 0}
  .info-grid dt{margin-top:14px}
}
