:root{
  --bg:#050507;--surface:#0b0b10;--border:#ffffff0a;
  --text:#e4e4e7;--muted:#71717a;--accent:#818cf8;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scrollbar-width:thin;scrollbar-color:#ffffff12 transparent;}
::-webkit-scrollbar{width:6px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:#ffffff15;border-radius:3px;}
::-webkit-scrollbar-thumb:hover{background:#ffffff25;}
body{
  background:var(--bg);color:var(--text);
  font-family:'Inter',-apple-system,'Segoe UI','Noto Sans SC','Noto Sans JP',sans-serif;
  -webkit-font-smoothing:antialiased;
}

/* === NAV === */
nav{
  position:fixed;top:0;left:0;right:0;z-index:50;
  padding:0 2.5rem;height:56px;
  display:flex;align-items:center;justify-content:space-between;
  background:#050507cc;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
}
.nav-logo{
  font-size:1rem;font-weight:700;letter-spacing:-.02em;
  background:linear-gradient(135deg,#60a5fa,#a78bfa);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}
.nav-right{display:flex;align-items:center;gap:.5rem;}
.lang-btn{
  background:transparent;border:none;color:var(--muted);
  padding:.3rem .55rem;border-radius:5px;font-size:.72rem;
  cursor:pointer;transition:.2s;font-family:inherit;font-weight:500;
}
.lang-btn:hover{color:var(--text);}
.lang-btn.active{color:var(--text);background:#ffffff0c;}
.nav-email{
  font-size:.72rem;color:var(--muted);text-decoration:none;
  padding:.35rem .7rem;border:1px solid #ffffff12;border-radius:6px;
  transition:.2s;margin-left:.5rem;
}
.nav-email:hover{color:var(--text);border-color:#ffffff25;}

/* === HERO === */
.hero{
  min-height:100vh;display:flex;flex-direction:column;
  justify-content:center;align-items:center;text-align:center;
  padding:7rem 2rem 2rem;position:relative;
}
.orb{
  position:absolute;top:10%;left:50%;transform:translateX(-50%);
  width:700px;height:500px;
  background:radial-gradient(ellipse at center,rgba(99,102,241,.12) 0%,rgba(139,92,246,.06) 35%,transparent 70%);
  pointer-events:none;filter:blur(40px);
}
.hero-content{position:relative;z-index:1;max-width:800px;}
.hero-video-btn{position:relative;z-index:2;margin-top:1.5rem;}
.hero h1{
  font-size:clamp(2.8rem,6vw,4.5rem);font-weight:800;
  letter-spacing:-.04em;line-height:1.05;
  margin-bottom:1.5rem;
  background:linear-gradient(180deg,#f0f0f0 30%,#71717a 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}
.hero-sub{
  font-size:clamp(.95rem,1.8vw,1.15rem);
  line-height:1.8;color:var(--muted);font-weight:300;
  max-width:520px;margin:0 auto 3rem;
}
.hero-cta{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.65rem 1.6rem;border-radius:8px;
  background:var(--accent);color:#fff;font-size:.85rem;font-weight:600;
  text-decoration:none;transition:.3s;
  box-shadow:0 0 20px rgba(99,102,241,.25);
}
.hero-cta:hover{transform:translateY(-1px);box-shadow:0 0 30px rgba(99,102,241,.35);}
.hero-cta svg{width:16px;height:16px;}
/* hero-video: inline replacement for hero-content */
.hero-video{
  position:relative;z-index:1;
  width:100%;max-width:800px;aspect-ratio:16/9;
  border-radius:12px;overflow:hidden;
  border:1px solid #ffffff10;
  display:none;
}
.hero-video canvas{position:absolute;inset:0;width:100%;height:100%;}
.hero-video.active{display:block;}
.hero-cta-video{
  background:transparent;border:1px solid #ffffff18;color:var(--muted);
  box-shadow:none;cursor:pointer;font-family:inherit;
  font-size:.78rem;font-weight:400;padding:.5rem 1.2rem;
}
.hero-cta-video:hover{background:#ffffff08;box-shadow:none;border-color:#ffffff30;color:var(--text);}

.video-placeholder-text{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  font-size:clamp(.85rem,1.5vw,1rem);color:#ffffff25;
  font-weight:300;letter-spacing:.08em;z-index:1;
}

/* scroll hint states */
.scroll-hint .scroll-hint-video{display:none;}
.scroll-hint.video-mode .scroll-hint-default{display:none;}
.scroll-hint.video-mode .scroll-hint-video{display:block;}
.scroll-hint.video-mode{animation:none;opacity:.6;cursor:default;}

/* === PRODUCTS === */
.products{
  padding:6rem 2rem 7rem;max-width:1100px;margin:0 auto;
  position:relative;
}
.products::before{
  content:'';position:absolute;top:0;left:10%;right:10%;height:1px;
  background:linear-gradient(90deg,transparent,#ffffff0a,transparent);
}
.section-header{text-align:center;margin-bottom:4rem;}
.section-tag{
  display:inline-block;font-size:.68rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.16em;
  color:var(--accent);margin-bottom:1rem;
  padding:.35rem .9rem;border:1px solid #818cf825;
  border-radius:100px;background:#818cf808;
}
.section-title{
  font-size:clamp(1.6rem,3vw,2.2rem);font-weight:700;
  letter-spacing:-.03em;margin-bottom:.8rem;
}
.section-desc{
  color:var(--muted);font-size:.92rem;font-weight:300;
  max-width:480px;margin:0 auto;line-height:1.7;
}
.grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  background:#ffffff06;border-radius:16px;overflow:hidden;
  border:1px solid #ffffff08;
}
.card{
  background:var(--bg);padding:2.2rem 1.8rem 2rem;
  transition:.4s;position:relative;cursor:pointer;
}
.card:hover{background:#0c0c14;}
.card-icon{
  width:44px;height:44px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;
  margin-bottom:1.4rem;
}
.card-icon svg{width:22px;height:22px;stroke-width:1.5;}
.card-icon.c1{background:#6366f112;border:1px solid #6366f118;}
.card-icon.c1 svg{stroke:#818cf8;}
.card-icon.c2{background:#06b6d410;border:1px solid #06b6d418;}
.card-icon.c2 svg{stroke:#22d3ee;}
.card-icon.c3{background:#8b5cf610;border:1px solid #8b5cf618;}
.card-icon.c3 svg{stroke:#a78bfa;}
.card-icon.c4{background:#f59e0b10;border:1px solid #f59e0b18;}
.card-icon.c4 svg{stroke:#fbbf24;}
.card h3{
  font-size:.92rem;font-weight:600;margin-bottom:.55rem;
  letter-spacing:-.01em;
}
.card p{
  font-size:.8rem;line-height:1.7;color:var(--muted);font-weight:300;
}

/* === CONTACT === */
.contact{
  text-align:center;padding:5rem 2rem 3rem;position:relative;
}
.contact::before{
  content:'';position:absolute;top:0;left:10%;right:10%;height:1px;
  background:linear-gradient(90deg,transparent,#ffffff08,transparent);
}
.contact-title{
  font-size:1.3rem;font-weight:600;letter-spacing:-.02em;margin-bottom:.6rem;
}
.contact-desc{
  font-size:.85rem;color:var(--muted);font-weight:300;
  margin-bottom:1.5rem;
}
.contact-link{
  display:inline-flex;align-items:center;gap:.4rem;
  font-size:.9rem;color:var(--accent);text-decoration:none;
  font-weight:500;transition:.2s;
}
.contact-link:hover{color:#a5b4fc;}
.contact-link svg{width:16px;height:16px;}

/* === SCROLL HINT === */
.scroll-hint{
  position:absolute;bottom:2.5rem;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:.25rem;
  color:#a1a1aa;font-size:.75rem;font-weight:500;
  letter-spacing:.12em;text-transform:uppercase;
  animation:hintPulse 2s ease-in-out infinite;
  cursor:pointer;z-index:2;transition:opacity .4s;
}
.scroll-hint svg{width:18px;height:18px;stroke:#a1a1aa;stroke-width:2;}
.scroll-hint.hidden{opacity:0;pointer-events:none;}
@keyframes hintPulse{
  0%,100%{opacity:.5;transform:translateX(-50%) translateY(0);}
  50%{opacity:1;transform:translateX(-50%) translateY(8px);}
}

/* === BACK TO TOP === */
.back-top{
  position:fixed;bottom:2rem;right:2rem;z-index:50;
  width:40px;height:40px;border-radius:10px;
  background:#ffffff0a;border:1px solid #ffffff10;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:.35s;opacity:0;pointer-events:none;
  transform:translateY(8px);
}
.back-top.visible{opacity:1;pointer-events:auto;transform:translateY(0);}
.back-top:hover{background:#ffffff14;border-color:#ffffff20;}
.back-top svg{width:18px;height:18px;stroke:var(--muted);stroke-width:2;}

/* === MODAL === */
.modal-overlay{
  position:fixed;inset:0;z-index:100;
  background:rgba(0,0,0,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .3s;
  padding:2rem;
}
.modal-overlay.open{opacity:1;pointer-events:auto;}
.modal-panel{
  background:#111118;border:1px solid #ffffff10;border-radius:16px;
  max-width:560px;width:100%;max-height:80vh;overflow-y:auto;
  padding:2.5rem;position:relative;
  transform:translateY(12px);transition:transform .3s;
  scrollbar-width:thin;scrollbar-color:#ffffff12 transparent;
}
.modal-panel::-webkit-scrollbar{width:6px;}
.modal-panel::-webkit-scrollbar-track{background:transparent;}
.modal-panel::-webkit-scrollbar-thumb{background:#ffffff15;border-radius:3px;}
.modal-panel::-webkit-scrollbar-thumb:hover{background:#ffffff25;}
.modal-overlay.open .modal-panel{transform:translateY(0);}
.modal-close{
  position:absolute;top:1.2rem;right:1.2rem;
  background:none;border:none;color:var(--muted);
  font-size:1.3rem;cursor:pointer;transition:.2s;
  width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  border-radius:8px;
}
.modal-close:hover{color:var(--text);background:#ffffff0a;}
.modal-head{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;}
.modal-head .card-icon{margin-bottom:0;}
.modal-title{font-size:1.2rem;font-weight:700;letter-spacing:-.02em;}
.modal-short{color:var(--muted);font-size:.88rem;line-height:1.7;font-weight:300;margin-bottom:2rem;}
.modal-section-label{
  font-size:.7rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.12em;color:var(--accent);margin-bottom:.8rem;
}
.modal-details{list-style:none;display:flex;flex-direction:column;gap:.6rem;}
.modal-details li{
  font-size:.84rem;color:var(--text);font-weight:400;
  padding-left:1.1rem;position:relative;line-height:1.6;
}
.modal-details li::before{
  content:'';position:absolute;left:0;top:.55em;
  width:5px;height:5px;border-radius:50%;
  background:var(--accent);opacity:.5;
}
.modal-divider{
  height:1px;background:linear-gradient(90deg,transparent,#ffffff0c,transparent);
  margin:2rem 0 1.5rem;
}
.modal-projects{display:flex;flex-direction:column;gap:.75rem;}
.modal-pf-item{
  background:#0a0a12;border:1px solid #ffffff08;border-radius:10px;
  padding:1rem 1.2rem;cursor:default;transition:.2s;
}
.modal-pf-item:hover{border-color:#ffffff15;}
.modal-pf-name{font-size:.85rem;font-weight:600;margin-bottom:.3rem;}
.modal-pf-desc{font-size:.78rem;color:var(--muted);font-weight:300;line-height:1.6;margin-bottom:.5rem;}
.modal-pf-tags{display:flex;gap:.35rem;flex-wrap:wrap;}
.modal-pf-tag{
  font-size:.58rem;font-weight:600;padding:.12rem .45rem;
  border-radius:100px;border:1px solid;
}

/* === PORTFOLIO === */
.portfolio{
  padding:4rem 2rem 7rem;max-width:1100px;margin:0 auto;
  position:relative;
}
.portfolio::before{
  content:'';position:absolute;top:0;left:10%;right:10%;height:1px;
  background:linear-gradient(90deg,transparent,#ffffff0a,transparent);
}
.tag-filters{
  display:flex;gap:.5rem;justify-content:center;margin-bottom:3rem;
  flex-wrap:wrap;
}
.tag-filter{
  background:transparent;border:1px solid #ffffff10;color:#555;
  padding:.4rem 1rem;border-radius:100px;font-size:.75rem;font-weight:500;
  cursor:pointer;transition:.25s;font-family:inherit;
}
.tag-filter:hover{color:var(--muted);border-color:#ffffff20;}
.tag-filter.active{color:#fff;border-color:var(--accent);background:rgba(129,140,248,.15);}
.tag-filter[data-filter="agent"].active{color:#818cf8;border-color:#6366f150;background:#6366f115;}
.tag-filter[data-filter="infra"].active{color:#22d3ee;border-color:#06b6d450;background:#06b6d415;}
.tag-filter[data-filter="tools"].active{color:#fbbf24;border-color:#f59e0b50;background:#f59e0b15;}
.portfolio-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;
}
.pf-card{
  background:var(--surface);border:1px solid #ffffff08;border-radius:12px;
  padding:1.8rem;transition:.35s;cursor:pointer;
}
.pf-card.hidden{display:none;}
.pf-card:hover{border-color:#ffffff15;background:#0e0e16;}
.pf-name{font-size:.95rem;font-weight:600;margin-bottom:.4rem;letter-spacing:-.01em;}
.pf-desc{font-size:.82rem;color:var(--muted);font-weight:300;line-height:1.7;margin-bottom:1rem;}
.pf-tags{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.5rem;}
.pf-tag{
  font-size:.62rem;font-weight:600;padding:.15rem .55rem;
  border-radius:100px;border:1px solid;letter-spacing:.03em;
}
.pf-tag[data-t="agent"]{color:#818cf8;border-color:#6366f130;}
.pf-tag[data-t="infra"]{color:#22d3ee;border-color:#06b6d430;}
.pf-tag[data-t="tools"]{color:#fbbf24;border-color:#f59e0b30;}
.pf-status{
  display:inline-flex;align-items:center;gap:.3rem;
  font-size:.65rem;font-weight:500;
}
.pf-status.dev{color:#818cf8;}
.pf-status.live{color:#34d399;}
.pf-status::before{
  content:'';width:5px;height:5px;border-radius:50%;
  background:currentColor;
}

/* === PF DETAIL MODAL === */
.pf-modal-overlay{
  position:fixed;inset:0;z-index:110;
  background:rgba(0,0,0,.75);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .3s;
  padding:2rem;
}
.pf-modal-overlay.open{opacity:1;pointer-events:auto;}
.pf-modal-panel{
  background:#111118;border:1px solid #ffffff10;border-radius:16px;
  max-width:640px;width:100%;max-height:82vh;overflow-y:auto;
  padding:2.5rem;position:relative;
  transform:translateY(12px);transition:transform .3s;
  scrollbar-width:thin;scrollbar-color:#ffffff12 transparent;
}
.pf-modal-panel::-webkit-scrollbar{width:6px;}
.pf-modal-panel::-webkit-scrollbar-track{background:transparent;}
.pf-modal-panel::-webkit-scrollbar-thumb{background:#ffffff15;border-radius:3px;}
.pf-modal-panel::-webkit-scrollbar-thumb:hover{background:#ffffff25;}
.pf-modal-overlay.open .pf-modal-panel{transform:translateY(0);}
.pf-modal-head{margin-bottom:1.5rem;}
.pf-modal-title{font-size:1.3rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.6rem;}
.pf-modal-meta{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;}
.pf-modal-body{
  font-size:.88rem;line-height:1.8;color:var(--text);font-weight:300;
}
.pf-modal-body h2{font-size:1rem;font-weight:600;margin:1.8rem 0 .8rem;color:var(--text);}
.pf-modal-body h3{font-size:.9rem;font-weight:600;margin:1.4rem 0 .6rem;color:var(--text);}
.pf-modal-body ul,.pf-modal-body ol{padding-left:1.2rem;margin:.5rem 0;}
.pf-modal-body li{margin:.3rem 0;}
.pf-modal-body strong{font-weight:600;color:var(--text);}
.pf-modal-body code{
  font-family:'SF Mono','Fira Code',monospace;font-size:.82em;
  background:#ffffff0a;padding:.15em .4em;border-radius:4px;
}
.pf-modal-body pre{
  background:#0a0a12;border:1px solid #ffffff08;border-radius:8px;
  padding:1rem 1.2rem;overflow-x:auto;margin:.8rem 0;
}
.pf-modal-body pre code{background:none;padding:0;}
.pf-modal-body table{width:100%;border-collapse:collapse;margin:.8rem 0;font-size:.84rem;}
.pf-modal-body th{text-align:left;font-weight:600;padding:.5rem .8rem;border-bottom:1px solid #ffffff12;}
.pf-modal-body td{padding:.5rem .8rem;border-bottom:1px solid #ffffff08;color:var(--muted);}
.pf-modal-body blockquote{
  border-left:3px solid var(--accent);padding:.5rem 1rem;margin:.8rem 0;
  color:var(--muted);font-style:italic;
}

/* === FOOTER === */
footer{
  text-align:center;padding:2rem 2rem 2.5rem;
  font-size:.7rem;color:#ffffff18;letter-spacing:.03em;
}

/* Animations */
.fade-in{opacity:0;transform:translateY(20px);animation:fadeUp .8s cubic-bezier(.16,1,.3,1) forwards;}
.fade-in.d1{animation-delay:.05s;}
.fade-in.d2{animation-delay:.12s;}
.fade-in.d3{animation-delay:.19s;}
.fade-in.d4{animation-delay:.26s;}
@keyframes fadeUp{to{opacity:1;transform:translateY(0);}}

/* i18n */
[data-lang]{display:none;}
[data-lang].show{display:block;}
.grid[data-lang]{display:none;}
.grid[data-lang].show{display:grid;}
span[data-lang]{display:none;}
span[data-lang].show{display:inline;}

/* Mobile */
@media(max-width:768px){
  nav{padding:0 1.2rem;}
  .nav-email{display:none;}
  .grid{grid-template-columns:1fr 1fr;}
  .hero{padding:6rem 1.2rem 2rem;}
  .products{padding:4rem 1.2rem 5rem;}
  .portfolio{padding:3rem 1.2rem 4rem;}
  .portfolio-grid{grid-template-columns:1fr;}
}
@media(max-width:480px){
  .grid{grid-template-columns:1fr;}
  .hero h1{font-size:2.2rem;}
  .card{padding:1.6rem 1.4rem 1.5rem;}
}
