/* ============================================================
   HailouTec · theme.css — 全息果凍實驗室（科技 + 3D + 果凍）
   全站共享主題：首頁 / 內容頁 / 博客 / 工具頁 / 根域落地頁 共用
   自 index.html 重構而來，並補齊各頁面所需類別。
   ============================================================ */
:root{
  --pink:#FF6FA5; --pink-d:#DB3A78; --grape:#A78BFA; --grape-d:#7C5CE0;
  --cyan:#38E1FF; --mint:#2DD4BF; --lemon:#FBBF24; --sky:#38BDF8;
  --ink:#ECE9FF; --muted:#9C93C4;
  --glass:rgba(255,255,255,.055); --glass-bd:rgba(167,139,250,.30);
  --radius:24px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0; font-family:"Segoe UI",system-ui,-apple-system,"PingFang SC","Microsoft YaHei","PingFang TC",sans-serif;
  color:var(--ink); line-height:1.7; min-height:100vh; overflow-x:hidden;
  background:
    radial-gradient(1100px 620px at 8% -6%, rgba(255,111,165,.28), transparent 55%),
    radial-gradient(1000px 560px at 95% 2%, rgba(56,225,255,.22), transparent 52%),
    radial-gradient(900px 700px at 50% 108%, rgba(124,92,224,.30), transparent 55%),
    #07061a;
}

/* ---- 流動極光背景 ---- */
.aurora{position:fixed; inset:-20% -20% -20% -20%; z-index:-3; filter:blur(60px); opacity:.55; pointer-events:none;}
.aurora i{position:absolute; border-radius:50%; mix-blend-mode:screen; animation:drift 18s ease-in-out infinite;}
.aurora i:nth-child(1){width:42vw;height:42vw;left:-6vw;top:-8vw;background:radial-gradient(circle,#FF6FA5,transparent 65%);}
.aurora i:nth-child(2){width:38vw;height:38vw;right:-4vw;top:6vw;background:radial-gradient(circle,#38E1FF,transparent 65%);animation-delay:-6s;}
.aurora i:nth-child(3){width:46vw;height:46vw;left:30vw;bottom:-18vw;background:radial-gradient(circle,#7C5CE0,transparent 65%);animation-delay:-11s;}
@keyframes drift{0%,100%{transform:translate(0,0) scale(1);}33%{transform:translate(6vw,4vh) scale(1.15);}66%{transform:translate(-4vw,-3vh) scale(.92);}}

/* ---- 透視網格地面 ---- */
.grid-floor{position:fixed; left:50%; bottom:-2vh; width:240vw; height:60vh; transform:translateX(-50%) perspective(420px) rotateX(68deg);
  background-image:linear-gradient(rgba(56,225,255,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(167,139,250,.16) 1px,transparent 1px);
  background-size:64px 64px; z-index:-2; opacity:.5; pointer-events:none; animation:floor 6s linear infinite;}
@keyframes floor{from{background-position:0 0;}to{background-position:0 64px;}}

/* ---- 噪點質感 ---- */
.grain{position:fixed; inset:0; z-index:-1; opacity:.05; pointer-events:none; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}

/* ---- 游標聚光暈 ---- */
.spotlight{position:fixed; width:520px; height:520px; border-radius:50%; left:0; top:0; z-index:0; pointer-events:none;
  transform:translate(-50%,-50%); background:radial-gradient(circle,rgba(167,139,250,.16),transparent 60%); mix-blend-mode:screen; transition:opacity .3s;}

/* ---------- 頂部導航 ---------- */
.site-nav{display:flex; align-items:center; gap:18px; padding:14px clamp(16px,5vw,54px);
  background:rgba(10,8,30,.55); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); border-bottom:1px solid var(--glass-bd);
  position:sticky; top:0; z-index:50;}
.site-nav .brand{font-weight:900; font-size:21px; letter-spacing:.3px; text-decoration:none; color:var(--ink); margin-right:auto;
  text-shadow:0 0 18px rgba(255,111,165,.55);}
.site-nav .brand span{color:var(--pink);}
.site-nav nav{display:flex; gap:clamp(6px,2vw,20px); flex-wrap:wrap;}
.site-nav nav a{text-decoration:none; color:var(--muted); font-weight:700; font-size:14.5px; padding:6px 12px; border-radius:999px; transition:.25s;}
.site-nav nav a:hover{color:var(--ink); background:var(--glass); box-shadow:0 0 0 1px var(--glass-bd);}
.site-nav nav a.active{color:#07061a; background:linear-gradient(120deg,var(--cyan),var(--grape)); box-shadow:0 0 22px rgba(56,225,255,.5);}
/* 根域落地頁的 nav 為 <nav class="site-nav">，brand 為 div */
.site-nav .brand, .site-nav > .brand{display:flex; align-items:center; gap:8px;}
.brand .dot{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff,var(--pink));box-shadow:0 0 14px var(--pink);}

/* ---------- 通用容器 ---------- */
.wrap{max-width:1080px; margin:0 auto; padding:0 clamp(16px,5vw,28px) 40px; position:relative; z-index:1;}

/* ---------- 頁面標題區 ---------- */
.page-hero{text-align:center; padding:56px clamp(16px,5vw,28px) 10px; max-width:1080px; margin:0 auto;}
.page-hero h1{font-size:clamp(28px,4.6vw,44px); font-weight:900; margin:0 0 12px;
  background:linear-gradient(115deg,var(--pink),var(--cyan),var(--grape)); -webkit-background-clip:text; background-clip:text; color:transparent;
  filter:drop-shadow(0 0 18px rgba(56,225,255,.3));}
.page-hero p{color:var(--muted); font-size:16px; max-width:560px; margin:0 auto;}

/* ---------- 文章正文（玻璃面板） ---------- */
.prose{max-width:820px; margin:18px auto 0; background:var(--glass); border:1px solid var(--glass-bd); border-radius:var(--radius);
  padding:34px clamp(18px,4vw,40px); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  box-shadow:0 18px 40px -20px rgba(0,0,0,.6); color:var(--ink);}
.prose h2{margin:26px 0 10px; font-size:21px; color:#fff;}
.prose h3{margin:20px 0 8px; font-size:18px; color:#fff;}
.prose p{margin:0 0 14px; color:var(--muted); line-height:1.85;}
.prose strong{color:var(--ink);}
.prose a{color:var(--cyan); text-decoration:none; border-bottom:1px solid rgba(56,225,255,.4);}
.prose a:hover{color:#fff;}
.prose ul,.prose ol{margin:0 0 14px; padding-left:22px; color:var(--muted);}
.prose li{margin:6px 0;}
.prose .tag{display:inline-block; font-size:12px; font-weight:800; letter-spacing:.5px; padding:5px 12px; border-radius:999px;
  background:linear-gradient(120deg,var(--cyan),var(--grape)); color:#07061a; margin-bottom:14px;}

/* ---------- 功能卡片網格 ---------- */
.grid-cards{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px;
  max-width:1080px; margin:30px auto 0; padding:0 clamp(16px,5vw,28px); perspective:1100px;}

/* mini-card（博客索引等） */
.mini-card{position:relative; display:block; background:var(--glass); border:1px solid var(--glass-bd); border-radius:20px; padding:22px;
  text-decoration:none; box-shadow:0 18px 40px -20px rgba(0,0,0,.6); transition:box-shadow .3s, transform .25s cubic-bezier(.34,1.56,.64,1);
  transform-style:preserve-3d; will-change:transform; overflow:hidden;}
.mini-card:hover{box-shadow:0 26px 60px -22px rgba(56,225,255,.5);}
.mini-card .ico{font-size:30px; display:inline-block; filter:drop-shadow(0 6px 10px rgba(0,0,0,.4));}
.mini-card h3{margin:12px 0 6px; font-size:17px; color:var(--ink);}
.mini-card p{color:var(--muted); font-size:13.5px; margin:0; line-height:1.6;}

/* tilt（首頁 3D 傾斜） */
.tilt{position:relative; background:var(--glass); border:1px solid var(--glass-bd); border-radius:20px; padding:24px;
  box-shadow:0 18px 40px -20px rgba(0,0,0,.6); transition:transform .15s ease-out, box-shadow .3s; transform-style:preserve-3d; will-change:transform;}
.tilt:hover{box-shadow:0 26px 60px -22px rgba(56,225,255,.45);}
.tilt .ico{font-size:32px; transform:translateZ(40px); display:inline-block; filter:drop-shadow(0 6px 10px rgba(0,0,0,.4));}
.tilt h3{margin:14px 0 6px; font-size:18px; color:var(--ink); transform:translateZ(28px);}
.tilt p{color:var(--muted); font-size:14px; margin:0; transform:translateZ(18px);}
.tilt::before{content:""; position:absolute; inset:0; border-radius:20px; pointer-events:none; opacity:0; transition:opacity .3s;
  background:radial-gradient(180px 180px at var(--gx,50%) var(--gy,50%), rgba(255,255,255,.16), transparent 60%);}
.tilt:hover::before{opacity:1;}

/* ---------- 果凍按鈕（通用，首頁/根域/工具頁主 CTA 皆可用） ---------- */
.jelly-btn{position:relative; display:inline-flex; align-items:center; gap:8px; text-decoration:none; cursor:pointer;
  font-weight:900; font-size:16px; color:#07061a; padding:15px 32px; border:none; border-radius:999px;
  background:linear-gradient(120deg,var(--pink),var(--grape)); box-shadow:0 12px 30px -8px rgba(255,111,165,.6), inset 0 1px 0 rgba(255,255,255,.5);
  transition:box-shadow .25s; will-change:transform; transform-style:preserve-3d;}
.jelly-btn:hover{box-shadow:0 18px 40px -8px rgba(56,225,255,.55), inset 0 1px 0 rgba(255,255,255,.6);}
.jelly-btn.ghost{background:var(--glass); color:var(--ink); border:1px solid var(--glass-bd); box-shadow:0 0 22px rgba(167,139,250,.2);}
.jelly-btn.ghost:hover{box-shadow:0 0 30px rgba(167,139,250,.4);}
.jelly-btn.jelly-pop{animation:jelly .6s cubic-bezier(.25,1.4,.4,1);}
@keyframes jelly{
  0%{transform:scale(1,1);}
  28%{transform:scale(1.28,.72);}
  42%{transform:scale(.82,1.18);}
  56%{transform:scale(1.12,.9);}
  70%{transform:scale(.96,1.05);}
  84%{transform:scale(1.02,.98);}
  100%{transform:scale(1,1);}
}
.jelly-btn::after{content:""; position:absolute; inset:0; border-radius:999px; pointer-events:none;
  background:radial-gradient(60px 60px at var(--mx,50%) var(--my,50%), rgba(255,255,255,.45), transparent 60%); opacity:0; transition:opacity .3s;}
.jelly-btn:hover::after{opacity:1;}

/* 根域落地頁 .cta（同果凍風格） */
.cta{display:inline-block; background:linear-gradient(135deg,var(--pink),var(--grape)); color:#07061a; font-weight:800; font-size:17px;
  text-decoration:none; padding:16px 36px; border-radius:999px; box-shadow:0 12px 30px -8px rgba(255,111,165,.6); transition:box-shadow .25s; will-change:transform;}
.cta:hover{box-shadow:0 18px 40px -8px rgba(56,225,255,.55);}

/* ---------- HERO（根域落地頁用，玻璃面板） ---------- */
.hero{background:var(--glass); border:1px solid var(--glass-bd); border-radius:32px; padding:54px 34px;
  box-shadow:0 18px 40px -20px rgba(0,0,0,.6); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); text-align:center;}
.hero h1{font-size:34px; line-height:1.25; margin:18px 0 12px;}
.hero h1 .hl{background:linear-gradient(120deg,var(--pink),var(--grape)); -webkit-background-clip:text; background-clip:text; color:transparent;}
.hero .lead{font-size:17px; line-height:1.7; opacity:.85; max-width:620px; margin:0 auto 26px; color:var(--muted);}
.badge{display:inline-block; background:linear-gradient(135deg,var(--mint),var(--cyan)); color:#07061a; font-weight:700; font-size:13px; padding:7px 16px; border-radius:999px; box-shadow:0 8px 20px -6px rgba(45,212,191,.5);}
.features{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px; margin:46px 0 10px; text-align:left;}

/* 通用玻璃卡片（根域 features 等） */
.card{background:var(--glass); border:1px solid var(--glass-bd); border-radius:22px; padding:24px;
  box-shadow:0 18px 40px -20px rgba(0,0,0,.6); text-align:left;}
.card h3{margin:0 0 8px; font-size:17px; color:var(--ink);}
.card p{margin:0; font-size:14px; line-height:1.6; color:var(--muted);}
.priv{margin-top:34px; font-size:13px; opacity:.7; line-height:1.6; color:var(--muted);}

/* ---------- 廣告位 ---------- */
.ad-slot{max-width:1080px; margin:34px auto; padding:0 clamp(16px,5vw,28px); text-align:center;}
.ad-slot .ad-label{font-size:11px; letter-spacing:2px; color:var(--muted); text-transform:uppercase; margin-bottom:8px; opacity:.7;}
.ad-box{min-height:100px; display:flex; align-items:center; justify-content:center; border:2px dashed rgba(167,139,250,.4); border-radius:16px;
  background:var(--glass); color:var(--muted); font-size:13px; font-weight:700; padding:18px;}

/* ---------- 頁尾 ---------- */
.site-footer{margin-top:54px; padding:30px clamp(16px,5vw,28px); text-align:center; color:var(--muted); font-size:13.5px;
  border-top:1px solid var(--glass-bd); background:rgba(10,8,30,.5);}
.site-footer a{color:var(--pink); text-decoration:none; font-weight:700; margin:0 6px;}
.site-footer .links{margin-bottom:10px;}
.site-footer .copy{opacity:.8;}

/* ---------- 滾動揭示 ---------- */
.reveal{opacity:0; transform:translateY(28px); transition:opacity .7s ease, transform .7s ease;}
.reveal.in{opacity:1; transform:none;}

/* ---------- 響應式 ---------- */
@media (max-width:820px){
  .site-nav{flex-wrap:wrap;}
}
@media (prefers-reduced-motion:reduce){
  .aurora i,.grid-floor{animation:none;}
  .reveal{opacity:1;transform:none;}
}
