{"id":6,"date":"2026-02-15T02:21:33","date_gmt":"2026-02-14T18:21:33","guid":{"rendered":"https:\/\/bugspace.tw\/?page_id=6"},"modified":"2026-02-20T00:03:29","modified_gmt":"2026-02-19T16:03:29","slug":"home","status":"publish","type":"page","link":"https:\/\/bugspace.tw\/","title":{"rendered":"home"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"zh-TW\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>BUG Space \u2014 \u5728\u9019\u88e1\uff0c\u4fee\u5fa9\u751f\u6d3b\u7684 Bug<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Noto+Serif+TC:wght@400;600;700&#038;family=Noto+Sans+TC:wght@300;400;500;600&#038;family=Cormorant+Garamond:wght@300;400;500;600&#038;display=swap\" rel=\"stylesheet\">\n<style>\n*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }\n\n:root {\n  --lily-white: #F9F9F5;\n  --milk-tea: #C5A387;\n  --milk-tea-light: #D2B48C;\n  --milk-tea-pale: #EDE3D8;\n  --warm-gray: #4A4A4A;\n  --warm-gray-light: #7A7A72;\n  --wood-dark: #8B7355;\n  --wood-grain: #A0896E;\n  --cream: #F3EDE4;\n  --off-white: #FEFDFB;\n  --shadow-warm: rgba(139, 115, 85, 0.08);\n}\n\nhtml { scroll-behavior: smooth; font-size: 16px; }\n\nbody {\n  font-family: 'Noto Sans TC', sans-serif;\n  color: var(--warm-gray);\n  background: var(--lily-white);\n  line-height: 1.8;\n  font-weight: 400;\n  overflow-x: hidden;\n}\n\n\/* ===== Wood grain texture overlay ===== *\/\n.wood-line {\n  width: 100%;\n  height: 2px;\n  background: repeating-linear-gradient(\n    90deg,\n    var(--milk-tea-light) 0px,\n    transparent 3px,\n    var(--milk-tea-pale) 8px,\n    transparent 12px,\n    var(--milk-tea) 20px,\n    transparent 22px\n  );\n  opacity: 0.5;\n}\n\n\/* ===== Navigation ===== *\/\nnav {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  z-index: 1000;\n  background: rgba(249, 249, 245, 0.92);\n  backdrop-filter: blur(16px);\n  -webkit-backdrop-filter: blur(16px);\n  border-bottom: 1px solid var(--milk-tea-pale);\n  transition: all 0.4s ease;\n}\n\nnav.scrolled {\n  box-shadow: 0 2px 20px var(--shadow-warm);\n}\n\n.nav-inner {\n  max-width: 1200px;\n  margin: 0 auto;\n  padding: 0 2rem;\n  height: 72px;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.logo {\n  font-family: 'Cormorant Garamond', serif;\n  font-size: 1.6rem;\n  font-weight: 500;\n  letter-spacing: 0.08em;\n  color: var(--warm-gray);\n}\n\n.logo span { color: var(--milk-tea); }\n\n.nav-links {\n  display: flex;\n  align-items: center;\n  gap: 2.5rem;\n  list-style: none;\n}\n\n.nav-links a {\n  text-decoration: none;\n  color: var(--warm-gray);\n  font-size: 0.88rem;\n  letter-spacing: 0.06em;\n  font-weight: 400;\n  position: relative;\n  transition: color 0.3s;\n}\n\n.nav-links a::after {\n  content: '';\n  position: absolute;\n  bottom: -4px;\n  left: 0;\n  width: 0;\n  height: 1px;\n  background: var(--milk-tea);\n  transition: width 0.3s ease;\n}\n\n.nav-links a:hover { color: var(--milk-tea); }\n.nav-links a:hover::after { width: 100%; }\n\n.nav-cta {\n  padding: 0.55rem 1.5rem !important;\n  background: var(--milk-tea) !important;\n  color: var(--off-white) !important;\n  border-radius: 2px;\n  font-size: 0.85rem !important;\n  letter-spacing: 0.08em;\n  transition: all 0.3s ease !important;\n}\n\n.nav-cta::after { display: none !important; }\n.nav-cta:hover {\n  background: var(--wood-dark) !important;\n  color: var(--off-white) !important;\n}\n\n\/* Mobile menu *\/\n.menu-toggle {\n  display: none;\n  flex-direction: column;\n  gap: 5px;\n  cursor: pointer;\n  background: none;\n  border: none;\n  padding: 8px;\n}\n\n.menu-toggle span {\n  display: block;\n  width: 22px;\n  height: 1.5px;\n  background: var(--warm-gray);\n  transition: all 0.3s;\n}\n\n\/* ===== Hero Section ===== *\/\n.hero {\n  min-height: 100vh;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  position: relative;\n  background: var(--cream);\n  overflow: hidden;\n}\n\n.hero::before {\n  content: '';\n  position: absolute;\n  inset: 0;\n  background:\n    radial-gradient(ellipse at 70% 30%, rgba(197, 163, 135, 0.15) 0%, transparent 60%),\n    radial-gradient(ellipse at 20% 80%, rgba(210, 180, 140, 0.1) 0%, transparent 50%);\n}\n\n.hero::after {\n  content: '';\n  position: absolute;\n  top: -10%;\n  right: 5%;\n  width: 400px;\n  height: 600px;\n  background: linear-gradient(180deg, rgba(255,255,250,0.6) 0%, rgba(255,255,250,0.2) 40%, transparent 100%);\n  transform: rotate(-15deg);\n  pointer-events: none;\n  animation: breathe 6s ease-in-out infinite;\n}\n\n.hero-particles {\n  position: absolute;\n  inset: 0;\n  overflow: hidden;\n  pointer-events: none;\n  z-index: 1;\n}\n\n.particle {\n  position: absolute;\n  width: 3px;\n  height: 3px;\n  background: var(--milk-tea-light);\n  border-radius: 50%;\n  opacity: 0;\n  animation: floatParticle linear infinite;\n}\n\n@keyframes floatParticle {\n  0% { opacity: 0; transform: translateY(100vh) translateX(0); }\n  10% { opacity: 0.4; }\n  90% { opacity: 0.4; }\n  100% { opacity: 0; transform: translateY(-20px) translateX(40px); }\n}\n\n.hero-content {\n  position: relative;\n  z-index: 2;\n  text-align: center;\n  padding: 2rem;\n  max-width: 800px;\n}\n\n@keyframes fadeUp {\n  from { opacity: 0; transform: translateY(40px); }\n  to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes fadeIn {\n  from { opacity: 0; }\n  to { opacity: 1; }\n}\n\n@keyframes revealLine {\n  from { width: 0; }\n  to { width: 100%; }\n}\n\n@keyframes softScale {\n  from { opacity: 0; transform: scale(0.92); }\n  to { opacity: 1; transform: scale(1); }\n}\n\n@keyframes breathe {\n  0%, 100% { opacity: 0.3; transform: scale(1); }\n  50% { opacity: 0.6; transform: scale(1.05); }\n}\n\n.hero-content .hero-tag { animation: fadeIn 1s ease-out 0.2s both; }\n.hero-content h1 { animation: fadeUp 1s ease-out 0.5s both; }\n.hero-content .hero-sub { animation: fadeUp 1s ease-out 0.8s both; }\n.hero-content .btn-primary { animation: softScale 0.8s ease-out 1.2s both; }\n\n.hero-tag {\n  font-size: 0.78rem;\n  letter-spacing: 0.35em;\n  color: var(--milk-tea);\n  text-transform: uppercase;\n  margin-bottom: 2rem;\n  font-weight: 500;\n}\n\n.hero h1 {\n  font-family: 'Noto Serif TC', serif;\n  font-size: clamp(2.2rem, 5.5vw, 3.8rem);\n  font-weight: 600;\n  line-height: 1.4;\n  color: var(--warm-gray);\n  margin-bottom: 1.5rem;\n  letter-spacing: 0.04em;\n}\n\n.hero h1 em {\n  font-style: normal;\n  color: var(--milk-tea);\n  position: relative;\n}\n\n.hero h1 em::after {\n  content: '';\n  position: absolute;\n  bottom: 2px;\n  left: 0;\n  right: 0;\n  height: 2px;\n  background: var(--milk-tea-pale);\n  animation: revealLine 0.6s ease-out 1s both;\n  transform-origin: left;\n}\n\n.hero-sub {\n  font-size: 1rem;\n  line-height: 2;\n  color: var(--warm-gray-light);\n  margin-bottom: 2.5rem;\n  font-weight: 300;\n  letter-spacing: 0.02em;\n}\n\n.btn-primary {\n  display: inline-block;\n  padding: 1rem 2.8rem;\n  background: var(--milk-tea);\n  color: var(--off-white);\n  text-decoration: none;\n  font-size: 0.9rem;\n  letter-spacing: 0.15em;\n  border: none;\n  cursor: pointer;\n  transition: all 0.4s ease;\n  position: relative;\n  overflow: hidden;\n}\n\n.btn-primary::before {\n  content: '';\n  position: absolute;\n  inset: 0;\n  background: var(--wood-dark);\n  transform: scaleX(0);\n  transform-origin: right;\n  transition: transform 0.4s ease;\n  z-index: 0;\n}\n\n.btn-primary:hover::before { transform: scaleX(1); transform-origin: left; }\n.btn-primary span { position: relative; z-index: 1; }\n\n.scroll-hint {\n  position: absolute;\n  bottom: 3rem;\n  left: 50%;\n  transform: translateX(-50%);\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 0.5rem;\n  animation: fadeIn 1s ease-out 1.8s both, float 2.5s ease-in-out 2.8s infinite;\n}\n\n.scroll-hint span {\n  font-size: 0.7rem;\n  letter-spacing: 0.2em;\n  color: var(--milk-tea-light);\n}\n\n.scroll-hint svg {\n  width: 16px;\n  height: 16px;\n  stroke: var(--milk-tea-light);\n}\n\n@keyframes float {\n  0%, 100% { transform: translateX(-50%) translateY(0); }\n  50% { transform: translateX(-50%) translateY(8px); }\n}\n\n\/* ===== Section common ===== *\/\nsection { padding: 7rem 2rem; }\n\n.section-inner {\n  max-width: 1000px;\n  margin: 0 auto;\n}\n\n.section-tag {\n  font-size: 0.72rem;\n  letter-spacing: 0.35em;\n  color: var(--milk-tea);\n  text-transform: uppercase;\n  margin-bottom: 1rem;\n  font-weight: 500;\n  position: relative;\n  display: inline-block;\n}\n\n.section-tag::after {\n  content: '';\n  position: absolute;\n  bottom: -4px;\n  left: 0;\n  width: 0;\n  height: 1px;\n  background: var(--milk-tea-light);\n  transition: width 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.3s;\n}\n\n.reveal.visible .section-tag::after,\n.reveal-scale.visible .section-tag::after {\n  width: 100%;\n}\n\n.section-title {\n  font-family: 'Noto Serif TC', serif;\n  font-size: clamp(1.6rem, 3.5vw, 2.4rem);\n  font-weight: 600;\n  color: var(--warm-gray);\n  margin-bottom: 2rem;\n  letter-spacing: 0.03em;\n  line-height: 1.5;\n}\n\n\/* ===== About ===== *\/\n.about {\n  background: var(--lily-white);\n  position: relative;\n}\n\n.about-content {\n  max-width: 720px;\n  margin: 0 auto;\n  text-align: center;\n}\n\n.about-text {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 1.05rem;\n  line-height: 2.4;\n  color: var(--warm-gray);\n  font-weight: 400;\n  position: relative;\n}\n\n.about-text::before,\n.about-text::after {\n  content: '';\n  display: block;\n  width: 40px;\n  height: 1px;\n  background: var(--milk-tea-light);\n  margin: 2.5rem auto;\n}\n\n.about-quote {\n  font-style: italic;\n  color: var(--warm-gray-light);\n  font-size: 0.95rem;\n}\n\n\/* ===== Services ===== *\/\n.services {\n  background: var(--cream);\n  position: relative;\n}\n\n.services::before {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 1px;\n  background: linear-gradient(90deg, transparent, var(--milk-tea-pale), transparent);\n}\n\n.services-grid {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  gap: 2rem;\n  margin-top: 3rem;\n}\n\n.service-card {\n  background: var(--off-white);\n  padding: 2.5rem 2rem;\n  border: 1px solid var(--milk-tea-pale);\n  position: relative;\n  transition: all 0.4s ease;\n  overflow: hidden;\n}\n\n.service-card::before {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 3px;\n  height: 0;\n  background: var(--milk-tea);\n  transition: height 0.4s ease;\n}\n\n.service-card:hover::before { height: 100%; }\n.service-card:hover { box-shadow: 0 8px 30px var(--shadow-warm); }\n\n.service-icon {\n  width: 48px;\n  height: 48px;\n  margin-bottom: 1.5rem;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: var(--milk-tea);\n}\n\n.service-icon svg {\n  width: 32px;\n  height: 32px;\n  stroke: var(--milk-tea);\n  fill: none;\n  stroke-width: 1.5;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n  transition: transform 0.4s ease;\n}\n\n.service-card:hover .service-icon svg {\n  animation: gentlePulse 0.6s ease;\n}\n\n@keyframes gentlePulse {\n  0% { transform: scale(1); }\n  50% { transform: scale(1.15); }\n  100% { transform: scale(1); }\n}\n\n.service-card h3 {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 1.15rem;\n  font-weight: 600;\n  margin-bottom: 0.8rem;\n  color: var(--warm-gray);\n  transition: color 0.3s ease;\n}\n\n.service-card:hover h3 { color: var(--milk-tea); }\n\n.service-card p {\n  font-size: 0.9rem;\n  line-height: 1.9;\n  color: var(--warm-gray-light);\n  font-weight: 300;\n}\n\n\/* ===== Scenarios ===== *\/\n.scenarios { background: var(--lily-white); }\n\n.scenario-list {\n  display: flex;\n  flex-direction: column;\n  gap: 2rem;\n  margin-top: 3rem;\n}\n\n.scenario-item {\n  display: flex;\n  align-items: flex-start;\n  gap: 2rem;\n  padding: 2.5rem;\n  background: var(--off-white);\n  border: 1px solid transparent;\n  transition: all 0.4s ease;\n  position: relative;\n}\n\n.scenario-item:hover {\n  border-color: var(--milk-tea-pale);\n  box-shadow: 0 4px 20px var(--shadow-warm);\n}\n\n.scenario-num {\n  font-family: 'Cormorant Garamond', serif;\n  font-size: 3rem;\n  font-weight: 300;\n  color: var(--milk-tea-pale);\n  line-height: 1;\n  flex-shrink: 0;\n  width: 60px;\n  text-align: center;\n  transition: color 0.4s ease, transform 0.4s ease;\n}\n\n.scenario-item:hover .scenario-num {\n  color: var(--milk-tea);\n  transform: scale(1.1);\n}\n\n.scenario-content h3 {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 1.1rem;\n  font-weight: 600;\n  color: var(--warm-gray);\n  margin-bottom: 0.6rem;\n}\n\n.scenario-content p {\n  font-size: 0.9rem;\n  line-height: 1.9;\n  color: var(--warm-gray-light);\n  font-weight: 300;\n}\n\n\/* ===== Pricing ===== *\/\n.pricing {\n  background: var(--cream);\n  position: relative;\n}\n\n.pricing::before {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 1px;\n  background: linear-gradient(90deg, transparent, var(--milk-tea-pale), transparent);\n}\n\n.pricing-cards {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  gap: 2rem;\n  max-width: 640px;\n  margin: 3rem auto 0;\n}\n\n.price-card {\n  background: var(--off-white);\n  border: 1px solid var(--milk-tea-pale);\n  padding: 3rem 2rem;\n  text-align: center;\n  transition: all 0.4s ease;\n  position: relative;\n  overflow: hidden;\n}\n\n.price-card:hover {\n  transform: translateY(-4px);\n  box-shadow: 0 12px 40px var(--shadow-warm);\n}\n\n.price-card::after {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: -100%;\n  width: 100%;\n  height: 100%;\n  background: linear-gradient(90deg, transparent, rgba(197, 163, 135, 0.06), transparent);\n  transition: left 0.6s ease;\n}\n\n.price-card:hover::after { left: 100%; }\n\n.price-label {\n  font-size: 0.78rem;\n  letter-spacing: 0.25em;\n  color: var(--milk-tea);\n  text-transform: uppercase;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n}\n\n.price-type {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 1.1rem;\n  font-weight: 600;\n  color: var(--warm-gray);\n  margin-bottom: 1.5rem;\n}\n\n.price-amount {\n  font-family: 'Cormorant Garamond', serif;\n  font-size: 3.2rem;\n  font-weight: 400;\n  color: var(--warm-gray);\n  line-height: 1;\n  margin-bottom: 0.3rem;\n}\n\n.price-amount sup {\n  font-size: 1.2rem;\n  vertical-align: super;\n  color: var(--milk-tea);\n}\n\n.price-unit {\n  font-size: 0.82rem;\n  color: var(--warm-gray-light);\n  letter-spacing: 0.05em;\n}\n\n.steps {\n  max-width: 640px;\n  margin: 4rem auto 0;\n}\n\n.steps-title {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 1.15rem;\n  font-weight: 600;\n  text-align: center;\n  margin-bottom: 2.5rem;\n  color: var(--warm-gray);\n}\n\n.step-list {\n  display: flex;\n  flex-direction: column;\n  gap: 1.5rem;\n}\n\n.step-item {\n  display: flex;\n  align-items: flex-start;\n  gap: 1.5rem;\n}\n\n.step-num {\n  width: 36px;\n  height: 36px;\n  border: 1px solid var(--milk-tea-light);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-family: 'Cormorant Garamond', serif;\n  font-size: 1rem;\n  color: var(--milk-tea);\n  flex-shrink: 0;\n  transition: all 0.4s ease;\n}\n\n.step-item:hover .step-num {\n  background: var(--milk-tea);\n  color: var(--off-white);\n  border-color: var(--milk-tea);\n}\n\n.step-text {\n  font-size: 0.9rem;\n  line-height: 1.8;\n  color: var(--warm-gray-light);\n  padding-top: 0.4rem;\n}\n\n.pricing-note {\n  max-width: 640px;\n  margin: 3rem auto 0;\n  padding: 1.5rem 2rem;\n  background: rgba(197, 163, 135, 0.08);\n  border-left: 2px solid var(--milk-tea-light);\n  font-size: 0.85rem;\n  line-height: 1.9;\n  color: var(--warm-gray-light);\n  font-style: italic;\n}\n\n.pricing-cta {\n  text-align: center;\n  margin-top: 3rem;\n}\n\n\/* ===== Footer ===== *\/\nfooter {\n  background: var(--warm-gray);\n  color: rgba(249, 249, 245, 0.7);\n  padding: 4rem 2rem 2rem;\n}\n\n.footer-inner {\n  max-width: 1000px;\n  margin: 0 auto;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 3rem;\n}\n\n.footer-brand {\n  font-family: 'Cormorant Garamond', serif;\n  font-size: 1.4rem;\n  font-weight: 500;\n  color: var(--lily-white);\n  margin-bottom: 1rem;\n  letter-spacing: 0.08em;\n}\n\n.footer-brand span { color: var(--milk-tea-light); }\n\n.footer-desc {\n  font-size: 0.85rem;\n  line-height: 1.9;\n  opacity: 0.7;\n}\n\n.footer-info h4 {\n  font-family: 'Noto Serif TC', serif;\n  font-size: 0.9rem;\n  font-weight: 600;\n  color: var(--lily-white);\n  margin-bottom: 1rem;\n  letter-spacing: 0.05em;\n}\n\n.footer-info p {\n  font-size: 0.85rem;\n  line-height: 2;\n  opacity: 0.7;\n}\n\n.footer-info a {\n  color: var(--milk-tea-light);\n  text-decoration: none;\n  transition: opacity 0.3s;\n}\n\n.footer-info a:hover { opacity: 0.7; }\n\n.footer-bottom {\n  max-width: 1000px;\n  margin: 3rem auto 0;\n  padding-top: 1.5rem;\n  border-top: 1px solid rgba(249, 249, 245, 0.1);\n  text-align: center;\n  font-size: 0.75rem;\n  opacity: 0.4;\n  letter-spacing: 0.05em;\n}\n\n\/* ===== Reveal animations ===== *\/\n.reveal {\n  opacity: 0;\n  transform: translateY(30px);\n  transition: opacity 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n.reveal.visible { opacity: 1; transform: translateY(0); }\n\n.reveal-left {\n  opacity: 0;\n  transform: translateX(-40px);\n  transition: opacity 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n.reveal-left.visible { opacity: 1; transform: translateX(0); }\n\n.reveal-right {\n  opacity: 0;\n  transform: translateX(40px);\n  transition: opacity 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n.reveal-right.visible { opacity: 1; transform: translateX(0); }\n\n.reveal-scale {\n  opacity: 0;\n  transform: scale(0.9);\n  transition: opacity 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n.reveal-scale.visible { opacity: 1; transform: scale(1); }\n\n.stagger-children.visible > * {\n  animation: fadeUp 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;\n}\n.stagger-children.visible > *:nth-child(1) { animation-delay: 0s; }\n.stagger-children.visible > *:nth-child(2) { animation-delay: 0.12s; }\n.stagger-children.visible > *:nth-child(3) { animation-delay: 0.24s; }\n.stagger-children.visible > *:nth-child(4) { animation-delay: 0.36s; }\n\n.wood-line {\n  transform: scaleX(0);\n  transition: transform 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n  transform-origin: center;\n}\n.wood-line.visible { transform: scaleX(1); }\n\n\/* Cursor glow *\/\n.cursor-glow {\n  position: fixed;\n  width: 200px;\n  height: 200px;\n  border-radius: 50%;\n  background: radial-gradient(circle, rgba(197, 163, 135, 0.06) 0%, transparent 70%);\n  pointer-events: none;\n  z-index: 9999;\n  transform: translate(-50%, -50%);\n  transition: opacity 0.3s ease;\n  opacity: 0;\n}\n.cursor-glow.active { opacity: 1; }\n\n\/* ===== Responsive ===== *\/\n@media (max-width: 768px) {\n  .nav-links { display: none; }\n  .nav-links.open {\n    display: flex;\n    flex-direction: column;\n    position: absolute;\n    top: 72px;\n    left: 0;\n    right: 0;\n    background: rgba(249, 249, 245, 0.98);\n    backdrop-filter: blur(16px);\n    padding: 2rem;\n    gap: 1.5rem;\n    border-bottom: 1px solid var(--milk-tea-pale);\n  }\n  .menu-toggle { display: flex; }\n  .services-grid { grid-template-columns: 1fr; }\n  .pricing-cards { grid-template-columns: 1fr; max-width: 320px; }\n  .scenario-item { flex-direction: column; gap: 1rem; padding: 2rem 1.5rem; }\n  .scenario-num { width: auto; text-align: left; }\n  .footer-inner { grid-template-columns: 1fr; gap: 2rem; }\n  section { padding: 5rem 1.5rem; }\n  .hero-content { padding: 1.5rem; }\n  .cursor-glow { display: none; }\n}\n\n\/* Reduced motion *\/\n@media (prefers-reduced-motion: reduce) {\n  *, *::before, *::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n  }\n  .reveal, .reveal-left, .reveal-right, .reveal-scale { opacity: 1; transform: none; }\n  .wood-line { transform: scaleX(1); }\n  .cursor-glow { display: none; }\n}\n\n\/* Fallback: force show after 4s if JS fails *\/\n.reveal, .reveal-left, .reveal-right, .reveal-scale { animation: forceReveal 0s 4s both; }\n.wood-line { animation: forceRevealLine 0s 4s both; }\n.reveal.visible, .reveal-left.visible, .reveal-right.visible, .reveal-scale.visible, .wood-line.visible { animation: none; }\n@keyframes forceReveal { to { opacity: 1; transform: translateY(0) translateX(0) scale(1); } }\n@keyframes forceRevealLine { to { transform: scaleX(1); } }\n\n\/* ===== LINE \u61f8\u6d6e\u5ba2\u670d\u6309\u9215 ===== *\/\n.line-float {\n  position: fixed !important;\n  bottom: 2rem !important;\n  right: 2rem !important;\n  left: auto !important;\n  top: auto !important;\n  z-index: 99999 !important;\n  width: 56px !important;\n  height: 56px !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  display: block !important;\n  opacity: 0;\n  transform: translateY(20px) scale(0.8);\n  transition: opacity 0.5s ease, transform 0.5s ease;\n  float: none !important;\n}\n\n.line-float.visible {\n  opacity: 1;\n  transform: translateY(0) scale(1);\n}\n\n.line-float-btn {\n  display: block !important;\n  width: 56px !important;\n  height: 56px !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  border: none !important;\n  background: transparent !important;\n  border-radius: 50% !important;\n  text-decoration: none !important;\n  line-height: 0 !important;\n  filter: drop-shadow(0 4px 16px rgba(6, 199, 85, 0.3)) drop-shadow(0 2px 6px rgba(0,0,0,0.1));\n  transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94), filter 0.4s ease;\n}\n\n.line-float-btn:hover {\n  transform: scale(1.12) !important;\n  filter: drop-shadow(0 6px 24px rgba(6, 199, 85, 0.4)) drop-shadow(0 4px 10px rgba(0,0,0,0.12));\n}\n\n.line-float-btn img {\n  display: block !important;\n  width: 56px !important;\n  height: 56px !important;\n  border-radius: 50% !important;\n  background: transparent !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  object-fit: contain !important;\n}\n\n\/* Pulse ring *\/\n.line-float::before {\n  content: '';\n  position: absolute !important;\n  top: 0 !important;\n  left: 0 !important;\n  right: auto !important;\n  bottom: auto !important;\n  width: 56px !important;\n  height: 56px !important;\n  border-radius: 50% !important;\n  background: #06C755 !important;\n  opacity: 0;\n  animation: linePulse 3s ease-in-out infinite 2s;\n  pointer-events: none !important;\n}\n\n@keyframes linePulse {\n  0% { opacity: 0.3; transform: scale(1); }\n  50% { opacity: 0; transform: scale(1.6); }\n  100% { opacity: 0; transform: scale(1.6); }\n}\n\n@media (max-width: 768px) {\n  .line-float {\n    bottom: 1.2rem !important;\n    right: 1.2rem !important;\n    width: 50px !important;\n    height: 50px !important;\n  }\n  .line-float-btn,\n  .line-float-btn img {\n    width: 50px !important;\n    height: 50px !important;\n  }\n  .line-float::before {\n    width: 50px !important;\n    height: 50px !important;\n  }\n}\n<\/style>\n<\/head>\n<body>\n\n<!-- Navigation -->\n<nav id=\"navbar\">\n  <div class=\"nav-inner\">\n    <div class=\"logo\">BUG <span>Space<\/span><\/div>\n    <button class=\"menu-toggle\" id=\"menuToggle\" aria-label=\"\u9078\u55ae\">\n      <span><\/span><span><\/span><span><\/span>\n    <\/button>\n    <ul class=\"nav-links\" id=\"navLinks\">\n      <li><a href=\"#about\">\u7a7a\u9593\u7279\u8272<\/a><\/li>\n      <li><a href=\"#services\">\u8a2d\u65bd\u670d\u52d9<\/a><\/li>\n      <li><a href=\"#pricing\">\u4f7f\u7528\u6536\u8cbb<\/a><\/li>\n      <li><a href=\"#pricing\" class=\"nav-cta\">\u9810\u8a02\u7a7a\u9593<\/a><\/li>\n    <\/ul>\n  <\/div>\n<\/nav>\n\n<!-- Hero -->\n<section class=\"hero\">\n  <div class=\"hero-particles\" id=\"heroParticles\"><\/div>\n  <div class=\"hero-content\">\n    <p class=\"hero-tag\">Yilan City \u00b7 Since 2026<\/p>\n    <h1>\u5728\u9019\u88e1\uff0c\u4fee\u5fa9<br>\u751f\u6d3b\u7684 <em>Bug<\/em>\u3002<\/h1>\n    <p class=\"hero-sub\">\n      \u5b9c\u862d\u5e02\u4e2d\u5fc3\u30fb\u8001\u5c4b\u65b0\u751f\u7a7a\u9593<br>\n      \u4e00\u500b\u63d0\u4f9b\u505c\u7559\u3001\u4f11\u61a9\u8207\u91cd\u65b0\u6574\u7406\u7684\u7121\u4eba\u5316\u5171\u4eab\u89d2\u843d\n    <\/p>\n    <a href=\"#pricing\" class=\"btn-primary\"><span>\u7acb\u5373\u53d6\u5f97\u5bc6\u78bc\u5165\u5167<\/span><\/a>\n  <\/div>\n  <div class=\"scroll-hint\">\n    <span>SCROLL<\/span>\n    <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke-width=\"1.5\">\n      <path d=\"M8 3v10M4 9l4 4 4-4\"\/>\n    <\/svg>\n  <\/div>\n<\/section>\n\n<div class=\"wood-line\"><\/div>\n\n<!-- About -->\n<section class=\"about\" id=\"about\">\n  <div class=\"section-inner about-content reveal\">\n    <p class=\"section-tag\">About Us<\/p>\n    <h2 class=\"section-title\">\u70ba\u4ec0\u9ebc\u662f BUG Space\uff1f<\/h2>\n    <div class=\"about-text\">\n      \u4eba\u751f\u7e3d\u6703\u9047\u5230\u66ab\u6642\u5361\u4f4f\u7684 Bug\u3002\n      <br><br>\n      \u6709\u6642\u5019\u4f60\u53ea\u662f\u9700\u8981\u4e00\u500b\u5730\u65b9\uff0c<br>\n      \u4e0d\u7528\u89e3\u91cb\u70ba\u4ec0\u9ebc\u4f86\uff0c\u4e5f\u4e0d\u7528\u6025\u8457\u96e2\u958b\u3002\n      <br><br>\n      \u9019\u68df\u85cf\u5728\u5b9c\u862d\u5e02\u5340\u88e1\u7684\u8001\u623f\u5b50\uff0c<br>\n      \u6b63\u7d93\u6b77\u5b83\u7684\u4fee\u7e55\u671f\u2014\u2014<br>\n      \u7246\u9762\u6591\u99c1\u3001\u89d2\u843d\u672a\u5b8c\u6210\uff0c<br>\n      \u5c31\u50cf\u6211\u5011\u6bcf\u500b\u4eba\uff0c\u90fd\u5e36\u8457\u9084\u6c92\u4fee\u597d\u7684\u90e8\u5206\u5728\u751f\u6d3b\u3002\n      <br><br>\n      \u4f46\u4e5f\u8a31\u6b63\u56e0\u70ba\u4e0d\u5b8c\u7f8e\uff0c<br>\n      \u624d\u8b93\u4eba\u8d70\u9032\u4f86\u7684\u6642\u5019\uff0c\u80fd\u771f\u6b63\u9b06\u4e00\u53e3\u6c23\u3002\n    <\/div>\n    <p class=\"about-quote\">\n      \u9019\u88e1\u6c92\u6709\u591a\u9918\u7684\u88dd\u98fe\uff0c\u53ea\u6709\u4f60\u6700\u9700\u8981\u7684\u5b89\u975c\u8207\u81ea\u5728\u3002\n    <\/p>\n  <\/div>\n<\/section>\n\n<div class=\"wood-line\"><\/div>\n\n<!-- Services -->\n<section class=\"services\" id=\"services\">\n  <div class=\"section-inner\">\n    <div class=\"reveal\" style=\"text-align:center;\">\n      <p class=\"section-tag\">Services &#038; Facilities<\/p>\n      <h2 class=\"section-title\">\u6211\u5011\u63d0\u4f9b\u7684\u300c\u525b\u525b\u597d\u300d<\/h2>\n    <\/div>\n    <div class=\"services-grid stagger-children reveal\">\n      <div class=\"service-card\">\n        <div class=\"service-icon\">\n          <svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"10\" rx=\"1\"\/><path d=\"M12 11V6a3 3 0 0 1 3-3h0a3 3 0 0 1 3 3v1\"\/><circle cx=\"12\" cy=\"16\" r=\"1.5\"\/><\/svg>\n        <\/div>\n        <h3>\u7121\u4eba\u5316\u81ea\u52a9<\/h3>\n        <p>24 \u5c0f\u6642\u96a8\u6642\u9810\u8a02\uff0c\u652f\u4ed8\u5f8c\u7acb\u5373\u7372\u5f97\u52d5\u614b\u5bc6\u78bc\u3002\u4f60\u7684\u7bc0\u594f\uff0c\u7531\u4f60\u6c7a\u5b9a\u3002<\/p>\n      <\/div>\n      <div class=\"service-card\">\n        <div class=\"service-icon\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M12 2C6.48 2 2 6 2 10.5c0 2 1 3.5 2 4.5v5l3-2c1.5.6 3.2 1 5 1 5.52 0 10-4 10-8.5S17.52 2 12 2z\"\/><path d=\"M8 10h0M12 10h0M16 10h0\"\/><\/svg>\n        <\/div>\n        <h3>\u57fa\u790e\u5fc5\u5099<\/h3>\n        <p>\u51b7\u71b1\u98f2\u6c34\u6a5f\u3001\u4e7e\u6de8\u885b\u6d74\u3001\u7c21\u6613\u6dcb\u6d74\u8a2d\u65bd\u3002\u65c5\u9014\u4e2d\u6700\u57fa\u672c\u7684\u8212\u9069\uff0c\u6211\u5011\u90fd\u70ba\u4f60\u6e96\u5099\u597d\u3002<\/p>\n      <\/div>\n      <div class=\"service-card\">\n        <div class=\"service-icon\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\/><polyline points=\"9 22 9 12 15 12 15 22\"\/><\/svg>\n        <\/div>\n        <h3>\u81ea\u7531\u7a7a\u9593<\/h3>\n        <p>2F\uff0b3F \u5bec\u655e\u7a7a\u9593\u3002\u6253\u5730\u92ea\u5c0f\u7761\u3001\u670b\u53cb\u805a\u6703\uff0c\u6216\u4f5c\u70ba\u6578\u4f4d\u6e38\u7267\u7684\u81e8\u6642\u8fa6\u516c\u5ba4\u3002<\/p>\n      <\/div>\n      <div class=\"service-card\">\n        <div class=\"service-icon\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M6 2v6h.01L6 12l3-2h5l2-2V2z\"\/><rect x=\"8\" y=\"14\" width=\"13\" height=\"8\" rx=\"1\"\/><path d=\"M11 14v-2M18 14v-2\"\/><\/svg>\n        <\/div>\n        <h3>\u884c\u674e\u5bc4\u653e<\/h3>\n        <p>\u8b93\u4f60\u5728\u5b9c\u862d\u7684\u65c5\u7a0b\u8f15\u88dd\u4e0a\u9663\uff0c\u4e0d\u518d\u88ab\u6c89\u91cd\u884c\u674e\u62d6\u7d2f\u3002<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"wood-line\"><\/div>\n\n<!-- Scenarios -->\n<section class=\"scenarios\" id=\"scenarios\">\n  <div class=\"section-inner\">\n    <div class=\"reveal\" style=\"text-align:center;\">\n      <p class=\"section-tag\">Usage Scenarios<\/p>\n      <h2 class=\"section-title\">\u5728\u9019\u500b\u7a7a\u9593\u88e1\uff0c\u4f60\u53ef\u4ee5\u662f\u22ef\u22ef<\/h2>\n    <\/div>\n    <div class=\"scenario-list\">\n      <div class=\"scenario-item reveal-left\">\n        <div class=\"scenario-num\">01<\/div>\n        <div class=\"scenario-content\">\n          <h3>\u57ce\u5e02\u907f\u96e3\u6240<\/h3>\n          <p>\u5728\u55a7\u9b27\u7684\u5b9c\u862d\u5e02\u5340\uff0c\u627e\u4e00\u500b\u80fd\u5b89\u975c\u770b\u66f8\u6216\u767c\u5446\u7684\u5730\u65b9\u3002\u628a\u4e16\u754c\u66ab\u6642\u95dc\u5728\u9580\u5916\u3002<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"scenario-item reveal-right\">\n        <div class=\"scenario-num\">02<\/div>\n        <div class=\"scenario-content\">\n          <h3>\u65c5\u4eba\u843d\u8173\u9ede<\/h3>\n          <p>\u932f\u904e\u706b\u8eca\u6216\u9700\u8981\u77ed\u66ab\u68b3\u6d17\uff1f\u9019\u88e1\u6709\u7c21\u6613\u6dcb\u6d74\u8207\u7a7a\u9593\u4f9b\u4f60\u91cd\u6574\u65d7\u9f13\uff0c\u518d\u6b21\u51fa\u767c\u3002<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"scenario-item reveal-left\">\n        <div class=\"scenario-num\">03<\/div>\n        <div class=\"scenario-content\">\n          <h3>\u597d\u53cb\u79c1\u5bc6\u805a\u6703<\/h3>\n          <p>\u7368\u7acb\u7a7a\u9593\uff0c\u9069\u5408\u5c0f\u5718\u9ad4\u5728\u6eab\u6f64\u7684\u6728\u8cea\u6c1b\u570d\u4e2d\u66a2\u8ac7\u3002\u4e0d\u7528\u64d4\u5fc3\u6253\u64fe\u5225\u4eba\uff0c\u4e5f\u4e0d\u88ab\u6253\u64fe\u3002<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"wood-line\"><\/div>\n\n<!-- Pricing -->\n<section class=\"pricing\" id=\"pricing\">\n  <div class=\"section-inner\">\n    <div class=\"reveal\" style=\"text-align:center;\">\n      <p class=\"section-tag\">Pricing &#038; Booking<\/p>\n      <h2 class=\"section-title\">\u6e05\u6670\u900f\u660e\u7684\u6536\u8cbb<\/h2>\n    <\/div>\n\n    <div class=\"pricing-cards reveal-scale\">\n      <div class=\"price-card\">\n        <p class=\"price-label\">Weekday<\/p>\n        <p class=\"price-type\">\u5e73\u65e5<\/p>\n        <p class=\"price-amount\"><sup>$<\/sup>350<\/p>\n        <p class=\"price-unit\">\/ \u6bcf\u4eba<\/p>\n      <\/div>\n      <div class=\"price-card\">\n        <p class=\"price-label\">Weekend \/ Holiday<\/p>\n        <p class=\"price-type\">\u5047\u65e5<\/p>\n        <p class=\"price-amount\"><sup>$<\/sup>480<\/p>\n        <p class=\"price-unit\">\/ \u6bcf\u4eba<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"steps reveal\">\n      <p class=\"steps-title\">\u5982\u4f55\u9810\u8a02\uff1f<\/p>\n      <div class=\"step-list\">\n        <div class=\"step-item\">\n          <div class=\"step-num\">1<\/div>\n          <p class=\"step-text\">\u9078\u64c7\u9810\u8a02\u65e5\u671f\u8207\u4eba\u6578<\/p>\n        <\/div>\n        <div class=\"step-item\">\n          <div class=\"step-num\">2<\/div>\n          <p class=\"step-text\">\u5b8c\u6210\u7dda\u4e0a\u652f\u4ed8\uff08\u652f\u63f4\u4fe1\u7528\u5361\u3001Line Pay\uff09<\/p>\n        <\/div>\n        <div class=\"step-item\">\n          <div class=\"step-num\">3<\/div>\n          <p class=\"step-text\">\u7cfb\u7d71\u81ea\u52d5\u767c\u9001\u5165\u5167\u5bc6\u78bc\u8207\u7a7a\u9593\u5730\u5716\u81f3\u60a8\u7684\u624b\u6a5f \/ Email<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"pricing-note reveal\">\n      \u76ee\u524d\u7a7a\u9593\u70ba\u73fe\u72c0\u51fa\u79df\uff0c\u4e26\u6301\u7e8c\u4fee\u7e55\u4e2d\u3002\u6211\u5011\u81f4\u529b\u65bc\u7dad\u6301\u74b0\u5883\u6574\u6f54\uff0c\u671f\u5f85\u4f60\u8207\u6211\u5011\u4e00\u8d77\u898b\u8b49\u9019\u88e1\u7684\u9032\u5316\u3002\n    <\/div>\n\n    <div class=\"pricing-cta reveal\">\n      <a href=\"#\" class=\"btn-primary\"><span>\u7acb\u5373\u53d6\u5f97\u5bc6\u78bc\u5165\u5167<\/span><\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"wood-line\"><\/div>\n\n<!-- Footer -->\n<footer>\n  <div class=\"footer-inner\">\n    <div>\n      <p class=\"footer-brand\">BUG <span>Space<\/span><\/p>\n      <p class=\"footer-desc\">\n        \u5b9c\u862d\u5e02\u4e2d\u5fc3\u30fb\u8001\u5c4b\u65b0\u751f\u7a7a\u9593<br>\n        \u4e00\u500b\u63d0\u4f9b\u505c\u7559\u3001\u4f11\u61a9\u8207\u91cd\u65b0\u6574\u7406\u7684\u7121\u4eba\u5316\u5171\u4eab\u89d2\u843d\n      <\/p>\n    <\/div>\n    <div class=\"footer-info\">\n      <h4>\u806f\u7d61\u8cc7\u8a0a<\/h4>\n      <p>\n        \u5b9c\u862d\u5e02\u5149\u5fa9\u8def 14 \u865f 2F-3F<br>\n        \u8ddd\u96e2\u5b9c\u862d\u706b\u8eca\u7ad9\u6b65\u884c\u7d04 1 \u5206\u9418<br><br>\n        <a href=\"#\">Line \u5b98\u65b9\u5e33\u865f<\/a><br>\n        <a href=\"#\">Instagram @sena.yilan<\/a>\n      <\/p>\n    <\/div>\n  <\/div>\n  <div class=\"footer-bottom\">\n    \u00a9 2026 BUG Space. All rights reserved.\n  <\/div>\n<\/footer>\n\n<!-- LINE \u5ba2\u670d\u61f8\u6d6e\u6309\u9215 -->\n<div id=\"lineFloat\" class=\"line-float\">\n  <a href=\"https:\/\/line.me\/ti\/p\/@972gkwan\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"line-float-btn\" aria-label=\"LINE \u5ba2\u670d\">\n    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp\" alt=\"LINE\" width=\"56\" height=\"56\" style=\"display:block;width:56px;height:56px;border-radius:50%;\">\n  <\/a>\n<\/div>\n\n<!-- Cursor glow -->\n<div class=\"cursor-glow\" id=\"cursorGlow\"><\/div>\n\n<script>\n\/\/ Navbar scroll\nconst navbar = document.getElementById('navbar');\nwindow.addEventListener('scroll', () => {\n  navbar.classList.toggle('scrolled', window.scrollY > 50);\n});\n\n\/\/ Mobile menu\nconst menuToggle = document.getElementById('menuToggle');\nconst navLinks = document.getElementById('navLinks');\nmenuToggle.addEventListener('click', () => {\n  navLinks.classList.toggle('open');\n  const spans = menuToggle.querySelectorAll('span');\n  if (navLinks.classList.contains('open')) {\n    spans[0].style.transform = 'rotate(45deg) translate(4px, 4px)';\n    spans[1].style.opacity = '0';\n    spans[2].style.transform = 'rotate(-45deg) translate(4px, -4px)';\n  } else {\n    spans[0].style.transform = 'none';\n    spans[1].style.opacity = '1';\n    spans[2].style.transform = 'none';\n  }\n});\n\nnavLinks.querySelectorAll('a').forEach(link => {\n  link.addEventListener('click', () => {\n    navLinks.classList.remove('open');\n    const spans = menuToggle.querySelectorAll('span');\n    spans[0].style.transform = 'none';\n    spans[1].style.opacity = '1';\n    spans[2].style.transform = 'none';\n  });\n});\n\n\/\/ ===== Scroll reveal =====\nconst allRevealables = document.querySelectorAll('.reveal, .reveal-left, .reveal-right, .reveal-scale, .wood-line');\n\nfunction revealOnScroll() {\n  const wh = window.innerHeight;\n  allRevealables.forEach(el => {\n    if (el.classList.contains('visible')) return;\n    if (el.getBoundingClientRect().top < wh * 0.92) {\n      el.classList.add('visible');\n    }\n  });\n}\n\nwindow.addEventListener('scroll', revealOnScroll, { passive: true });\nwindow.addEventListener('load', revealOnScroll);\nrevealOnScroll();\nsetTimeout(revealOnScroll, 100);\nsetTimeout(revealOnScroll, 500);\nsetTimeout(revealOnScroll, 1500);\n\n\/\/ ===== Floating dust particles =====\nconst particleContainer = document.getElementById('heroParticles');\nfunction createParticle() {\n  const p = document.createElement('div');\n  p.classList.add('particle');\n  p.style.left = Math.random() * 100 + '%';\n  p.style.width = (Math.random() * 3 + 1.5) + 'px';\n  p.style.height = p.style.width;\n  p.style.animationDuration = (Math.random() * 8 + 10) + 's';\n  p.style.animationDelay = (Math.random() * 5) + 's';\n  p.style.opacity = 0;\n  particleContainer.appendChild(p);\n  setTimeout(() => p.remove(), 20000);\n}\n\nfor (let i = 0; i < 15; i++) setTimeout(createParticle, i * 600);\nsetInterval(createParticle, 2000);\n\n\/\/ ===== Cursor glow (desktop) =====\nconst cursorGlow = document.getElementById('cursorGlow');\nlet gX = 0, gY = 0, cX = 0, cY = 0;\n\nif (window.matchMedia('(pointer: fine)').matches) {\n  document.addEventListener('mousemove', e => {\n    gX = e.clientX; gY = e.clientY;\n    cursorGlow.classList.add('active');\n  });\n  document.addEventListener('mouseleave', () => cursorGlow.classList.remove('active'));\n\n  (function animateGlow() {\n    cX += (gX - cX) * 0.08;\n    cY += (gY - cY) * 0.08;\n    cursorGlow.style.left = cX + 'px';\n    cursorGlow.style.top = cY + 'px';\n    requestAnimationFrame(animateGlow);\n  })();\n}\n\n\/\/ ===== Hero parallax =====\nconst heroContent = document.querySelector('.hero-content');\nconst heroSection = document.querySelector('.hero');\nwindow.addEventListener('scroll', () => {\n  const s = window.scrollY;\n  if (heroSection && s < window.innerHeight) {\n    if (s > window.innerHeight * 0.3) {\n      const start = window.innerHeight * 0.3;\n      const range = window.innerHeight * 0.5;\n      heroContent.style.opacity = Math.max(0, 1 - (s - start) \/ range);\n      heroContent.style.transform = `translateY(${(s - start) * 0.12}px)`;\n    } else {\n      heroContent.style.opacity = '';\n      heroContent.style.transform = '';\n    }\n  }\n});\n\n\/\/ ===== LINE \u61f8\u6d6e\u6309\u9215 =====\nconst lineFloat = document.getElementById('lineFloat');\nlet lineShown = false;\nfunction checkLine() {\n  if (!lineShown && window.scrollY > 300) {\n    lineFloat.classList.add('visible');\n    lineShown = true;\n  }\n}\nwindow.addEventListener('scroll', checkLine, { passive: true });\nsetTimeout(() => { if (!lineShown) { lineFloat.classList.add('visible'); lineShown = true; } }, 3000);\n\n\/\/ ===== Smooth anchor scroll =====\ndocument.querySelectorAll('a[href^=\"#\"]').forEach(a => {\n  a.addEventListener('click', function(e) {\n    e.preventDefault();\n    const t = document.querySelector(this.getAttribute('href'));\n    if (t) window.scrollTo({ top: t.offsetTop - 80, behavior: 'smooth' });\n  });\n});\n<\/script>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>BUG Space \u2014 \u5728\u9019\u88e1\uff0c\u4fee\u5fa9\u751f\u6d3b\u7684 Bug BUG Space \u7a7a\u9593\u7279\u8272 \u8a2d\u65bd\u670d\u52d9 \u4f7f\u7528\u6536\u8cbb \u9810\u8a02\u7a7a\u9593 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"blocksy_meta":{"disable_header":"yes","disable_footer":"yes","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>home - bug space<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bugspace.tw\/\" \/>\n<meta property=\"og:locale\" content=\"zh_TW\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"home - bug space\" \/>\n<meta property=\"og:description\" content=\"BUG Space \u2014 \u5728\u9019\u88e1\uff0c\u4fee\u5fa9\u751f\u6d3b\u7684 Bug BUG Space \u7a7a\u9593\u7279\u8272 \u8a2d\u65bd\u670d\u52d9 \u4f7f\u7528\u6536\u8cbb \u9810\u8a02\u7a7a\u9593 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bugspace.tw\/\" \/>\n<meta property=\"og:site_name\" content=\"bug space\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-19T16:03:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u9810\u4f30\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 \u5206\u9418\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bugspace.tw\/\",\"url\":\"https:\/\/bugspace.tw\/\",\"name\":\"home - bug space\",\"isPartOf\":{\"@id\":\"https:\/\/bugspace.tw\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/bugspace.tw\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/bugspace.tw\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp\",\"datePublished\":\"2026-02-14T18:21:33+00:00\",\"dateModified\":\"2026-02-19T16:03:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/bugspace.tw\/#breadcrumb\"},\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bugspace.tw\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/bugspace.tw\/#primaryimage\",\"url\":\"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp\",\"contentUrl\":\"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp\",\"width\":986,\"height\":980},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bugspace.tw\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\/\/bugspace.tw\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"home\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bugspace.tw\/#website\",\"url\":\"https:\/\/bugspace.tw\/\",\"name\":\"bug space\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bugspace.tw\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-TW\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"home - bug space","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bugspace.tw\/","og_locale":"zh_TW","og_type":"article","og_title":"home - bug space","og_description":"BUG Space \u2014 \u5728\u9019\u88e1\uff0c\u4fee\u5fa9\u751f\u6d3b\u7684 Bug BUG Space \u7a7a\u9593\u7279\u8272 \u8a2d\u65bd\u670d\u52d9 \u4f7f\u7528\u6536\u8cbb \u9810\u8a02\u7a7a\u9593 [&hellip;]","og_url":"https:\/\/bugspace.tw\/","og_site_name":"bug space","article_modified_time":"2026-02-19T16:03:29+00:00","og_image":[{"url":"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"\u9810\u4f30\u95b1\u8b80\u6642\u9593":"1 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bugspace.tw\/","url":"https:\/\/bugspace.tw\/","name":"home - bug space","isPartOf":{"@id":"https:\/\/bugspace.tw\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bugspace.tw\/#primaryimage"},"image":{"@id":"https:\/\/bugspace.tw\/#primaryimage"},"thumbnailUrl":"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp","datePublished":"2026-02-14T18:21:33+00:00","dateModified":"2026-02-19T16:03:29+00:00","breadcrumb":{"@id":"https:\/\/bugspace.tw\/#breadcrumb"},"inLanguage":"zh-TW","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bugspace.tw\/"]}]},{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/bugspace.tw\/#primaryimage","url":"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp","contentUrl":"https:\/\/bugspace.tw\/wp-content\/uploads\/2026\/02\/line-logo-line-icon-transparent-free-png-e1771516680366.webp","width":986,"height":980},{"@type":"BreadcrumbList","@id":"https:\/\/bugspace.tw\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/bugspace.tw\/"},{"@type":"ListItem","position":2,"name":"home"}]},{"@type":"WebSite","@id":"https:\/\/bugspace.tw\/#website","url":"https:\/\/bugspace.tw\/","name":"bug space","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bugspace.tw\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-TW"}]}},"_links":{"self":[{"href":"https:\/\/bugspace.tw\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bugspace.tw\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bugspace.tw\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bugspace.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bugspace.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":15,"href":"https:\/\/bugspace.tw\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":27,"href":"https:\/\/bugspace.tw\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/27"}],"wp:attachment":[{"href":"https:\/\/bugspace.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}