/* ==========================================================
   Geticer 数字花园 · 左侧栏 + 右内容布局
   Material Design 3 色彩纪律：teal 色相固定，只调饱和度/亮度
   hover 只允许阴影 / 底色 / 下划线变化，禁止位移与缩放
   ========================================================== */

/* ---------- 1. 设计令牌 ---------- */
:root{
  --teal:#39cccc;            /* clrs.cc teal */
  --on-teal:#00322e;
  --teal-hover:#2fc4c4;

  --t10:#00332e; --t20:#004a44; --t30:#00635b;
  --t40:#007c72;             /* 浅底链接/强调，对比度 ≥4.5:1 */
  --t60:#00a99b; --t80:#6fe0d3; --t90:#a5efe4; --t95:#d3f7f0;

  --bg:#fafafa;
  --surface:#ffffff;
  --surface-1:#f2f6f5;
  --surface-2:#e7efed;
  --surface-3:#dbe6e3;

  --ink:#16211f;
  --ink-2:#41504c;
  --ink-3:#5c6b67;

  --outline:#c2d0cc;
  --outline-2:#dde6e3;

  --font-body:'有爱魔兽黑体 CN','Nowar Warcraft Sans CN',"Roboto","Source Han Sans SC","Noto Sans CJK SC","Source Han Sans CN","Noto Sans SC",'思源黑体 CN','思源黑体','Sarasa UI SC','Sarasa Gothic SC','HarmonyOS Sans','MiSans','Microsoft YaHei','WenQuanYi Micro Hei','Inter',sans-serif,system-ui;
  --font-mono:'Iosevka','Sarasa Mono SC','Sarasa Fixed SC','Sarasa Term SC','等距更纱黑体 SC','等距更纱黑体 T SC','思源等宽','Source Han Mono','Source Code Pro','Inconsolata','Victor Mono','Consolas',monospace;
  --font-hand:'851tegakizatsu','瑞美加张清平硬笔楷书','也字工厂漫画体','也字工厂快乐星球体','YEFONTKuaiLeXingQiuTi','字体管家天真','偶然的相逢','四季予你','字体管家夕禾','描绘着那场美梦','北极星的幻想','花瓣游行记','小豆岛山中月','小豆岛春日海','轻狂年少','清新少囡贩卖机','大可爱的小可爱','平方时光体','神韵蝴蝶少女','我的一生只有你','十八亿少女的梦','今天步数破万耶','贩卖夏日的美好','忘记种过的花','抑制爱意小火苗','三极幽兰体','小豆岛秋日和简繁','奋斗青春是花季','晴空暖阳奶酪体','人间奶酪便利店','偷偷看你一秒','似乎非你不可','Zen Kurenaido','Nyashi Friends','萌神 手写体 CN','mengshen','JasonHandwriting4','清松手寫體','素材集市康康体','SetoFont','Aa最美的诗是你','小豆岛光之愿','杨任东竹石体','FZMiaoWu','华康少女文字W5','手书体','nanxiangbangbang','字体视界法棍体','我的少女时代','方正喵呜体','资源圆体','有爱魔兽圆体 CN','KaiTi','KaiTi_GB2312',cursive,system-ui;

  --r-s:10px; --r-m:16px; --r-l:20px;

  --e1:0 1px 2px rgba(4,36,31,.08), 0 1px 3px 1px rgba(4,36,31,.06);
  --e2:0 1px 2px rgba(4,36,31,.10), 0 2px 6px 2px rgba(4,36,31,.08);
  --e3:0 4px 8px 3px rgba(4,36,31,.10), 0 1px 3px rgba(4,36,31,.14);
}

/* ---------- 2. 基础 ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--font-body);
  font-size:16px;line-height:1.6;color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
ul,ol{list-style:none}
a{color:var(--t40)}
::selection{background:var(--teal);color:var(--on-teal)}

:focus-visible{outline:3px solid var(--t40);outline-offset:3px;border-radius:6px}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{
  position:absolute;left:16px;top:-60px;z-index:99;
  background:var(--t40);color:#fff;font-weight:700;text-decoration:none;
  padding:10px 18px;border-radius:0 0 var(--r-s) var(--r-s);transition:top .2s;
}
.skip-link:focus{top:0}

.mono{font-family:var(--font-mono);font-size:14px;letter-spacing:.02em}
.hand{font-family:var(--font-hand);font-weight:400}
.dim{color:var(--ink-3)}

/* 脉冲点（仅动画 box-shadow，无位移） */
.pulse{position:relative;flex:none;width:10px;height:10px;border-radius:50%;background:var(--t60);display:inline-block}
.pulse::after{
  content:"";position:absolute;inset:0;border-radius:50%;
  box-shadow:0 0 0 0 rgba(0,169,155,.55);animation:pulse 2.2s ease-out infinite;
}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(0,169,155,.55)}
  70%{box-shadow:0 0 0 9px rgba(0,169,155,0)}
  100%{box-shadow:0 0 0 0 rgba(0,169,155,0)}
}
.pulse.is-off{background:var(--ink-3)}
.pulse.is-off::after{animation:none}

/* ---------- 3. 两栏骨架 ---------- */
.layout{display:grid;grid-template-columns:1fr}
@media (min-width:992px){
  .layout{grid-template-columns:minmax(320px,24rem) 1fr}
}

/* ---------- 4. 左侧栏 ---------- */
.sidebar{
  position:relative;overflow:hidden;
  background:linear-gradient(165deg,#e2f3f0,#f8fbfa 55%,#ddf0ec);
  border-bottom:1px solid var(--outline-2);
  display:flex;
}
/* 手账点阵底纹 */
.sidebar::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(0,124,114,.10) 1.4px, transparent 1.4px);
  background-size:22px 22px;
}
.deco{position:absolute;pointer-events:none}
.deco-ring{
  width:340px;height:340px;border-radius:50%;
  border:1.5px dashed var(--outline);top:-120px;right:-110px;
}
.deco-square{
  width:120px;height:120px;border-radius:24px;background:rgba(165,239,228,.35);
  transform:rotate(14deg);left:-46px;bottom:40px;
}
@media (min-width:992px){
  .sidebar{
    position:sticky;top:0;height:100vh;overflow-y:auto;
    border-bottom:0;border-right:1px solid var(--outline-2);
  }
}

.sidebar-in{
  position:relative;z-index:1;margin:auto;width:100%;
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:48px 28px 40px;
}

.crumb{color:var(--t40);font-weight:600;margin-bottom:26px}

/* 头像 */
.avatar-wrap{
  position:relative;width:164px;height:164px;border-radius:30px;
  border:1px solid var(--outline);
  background:linear-gradient(150deg,#dff1ee,#f7fbfa 55%,#d5ede9);
  box-shadow:var(--e2);margin-bottom:24px;
}
.avatar-wrap::before{
  content:"";position:absolute;inset:0;border-radius:inherit;
  background-image:radial-gradient(rgba(0,124,114,.16) 1.4px, transparent 1.4px);
  background-size:17px 17px;
}
.avatar{
  position:absolute;inset:11%;width:78%;height:78%;object-fit:contain;
  animation:avatar-float 5s ease-in-out infinite;
  will-change:transform; /* 性能优化 */
}
@keyframes avatar-float{
  0%{transform:translate(0,0) rotate(0deg)}
  25%{transform:translate(3px,-4px) rotate(0.5deg)}
  50%{transform:translate(-2px,2px) rotate(-0.5deg)}
  75%{transform:translate(-4px,-2px) rotate(0.3deg)}
  100%{transform:translate(0,0) rotate(0deg)}
}
.online{
  position:absolute;right:9%;bottom:9%;width:18px;height:18px;border-radius:50%;
  background:#18a058;border:3px solid var(--surface);
  box-shadow:0 0 0 0 rgba(24,160,88,.5);animation:pulse-green 2.4s ease-out infinite;
}
@keyframes pulse-green{
  0%{box-shadow:0 0 0 0 rgba(24,160,88,.5)}
  70%{box-shadow:0 0 0 9px rgba(24,160,88,0)}
  100%{box-shadow:0 0 0 0 rgba(24,160,88,0)}
}
.sticker{
  position:absolute;top:-14px;right:-14px;transform:rotate(6deg);
  background:var(--surface);color:var(--t30);
  border:1px solid var(--outline);border-radius:4px 14px 4px 14px;
  padding:5px 12px;font-size:16px;box-shadow:var(--e1);
}

.name{
  font-size:clamp(38px,6vw,52px);font-weight:900;
  line-height:1.05;letter-spacing:-.02em;margin-bottom:8px;
}
.roles{font-size:14px;font-weight:600;color:var(--ink-2);margin-bottom:18px}
.roles .slash{color:var(--t60);font-weight:700}

.status{
  display:inline-flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:center;
  padding:8px 15px;border-radius:999px;font-size:14px;
  background:var(--t95);border:1px solid var(--t90);margin-bottom:18px;
}
.status strong{color:var(--t30)}

.bio{color:var(--ink-2);max-width:26em;margin-bottom:24px}

/* 按钮：hover 只改阴影与底色 */
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:11px 22px;border-radius:999px;border:0;cursor:pointer;
  font:inherit;font-weight:800;font-size:15px;text-decoration:none;
  transition:box-shadow .2s ease, background-color .2s ease, border-color .2s ease;
}
.btn-primary{background:var(--teal);color:var(--on-teal);box-shadow:var(--e1)}
.btn-primary:hover{background:var(--teal-hover);box-shadow:var(--e3)}
.btn-outline{background:transparent;color:var(--t30);border:1.5px solid var(--t60)}
.btn-outline:hover{background:var(--t95);box-shadow:var(--e1)}
.btn-dark{background:var(--on-teal);color:#c9f2ec;box-shadow:var(--e2)}
.btn-dark:hover{background:#00453e;box-shadow:var(--e3)}

.cta-row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-bottom:22px}

.side-nav{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;margin-bottom:22px}
.side-nav a{
  text-decoration:none;color:var(--ink-2);font-weight:700;font-size:15px;
  padding:7px 14px;border-radius:999px;
  transition:background-color .2s, color .2s;
}
.side-nav a:hover{background:var(--surface-2);color:var(--ink)}
.side-nav a[aria-current]{color:var(--t40);background:var(--t95)}

.stack{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:24em}
.stack li{
  font-size:14px;font-weight:600;color:var(--t30);
  background:rgba(255,255,255,.75);border:1px solid var(--t90);
  padding:3px 12px;border-radius:999px;
  transition:background-color .2s;
}
.stack li:hover{background:var(--t95)}
.stack-left{justify-content:flex-start;max-width:none}

.side-meta{margin-top:24px;color:var(--ink-3)}

/* ---------- 5. 右侧内容 ---------- */
.content{min-width:0}
.content-in{
  max-width:920px;
  padding:40px clamp(20px,4.5vw,52px) 0;
}
section{margin-bottom:64px;scroll-margin-top:24px}

.sec-head{margin-bottom:28px}
.eyebrow{display:flex;align-items:center;gap:10px;color:var(--t40);font-weight:700;margin-bottom:12px}
.sec-no{
  display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;
  background:var(--teal);color:var(--on-teal);font-weight:800;font-size:14px;
}
.sec-head h2{font-size:clamp(28px,4vw,38px);font-weight:900;line-height:1.2;letter-spacing:-.01em}
.sec-sub{margin-top:8px;color:var(--ink-2);max-width:38em}

/* ---------- 6. 项目卡片 ---------- */
.proj-grid{display:grid;grid-template-columns:1fr;gap:16px}
@media (min-width:640px){.proj-grid{grid-template-columns:1fr 1fr}}
@media (min-width:1280px){.proj-grid{grid-template-columns:1fr 1fr 1fr}}

.card{
  background:var(--surface);border:1px solid var(--outline-2);
  border-radius:var(--r-l);padding:22px;box-shadow:var(--e1);
  transition:box-shadow .25s ease, background-color .25s ease, border-color .25s ease;
}
.card:hover{box-shadow:var(--e3);border-color:var(--outline);background:#fdfffe}

/* 整卡可点：标题链接的 ::after 铺满卡片 */
.proj{position:relative;display:flex;flex-direction:column;gap:8px}
.proj-title{font-size:18px;font-weight:800;line-height:1.35}
.proj-title a{color:var(--ink);text-decoration:none}
.proj-title a::after{content:"";position:absolute;inset:0;border-radius:var(--r-l)}
.proj-title a:focus-visible::after{outline:3px solid var(--t40);outline-offset:-3px}
.proj-desc{font-size:14px;color:var(--ink-2)}
.proj-desc a{position:relative;z-index:1;font-weight:700}

.card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tile{
  display:grid;place-items:center;width:46px;height:46px;border-radius:12px;
  background:var(--t95);color:var(--t30);transition:background-color .25s ease;
}
.tile svg{width:24px;height:24px}
.card:hover .tile{background:var(--t90)}

.flag{
  font-size:14px;font-weight:700;color:var(--on-teal);
  background:var(--teal);padding:3px 11px;border-radius:999px;
}
.flag-soft{color:var(--t30);background:var(--t95)}

.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:8px}
.tags li{
  font-size:14px;color:var(--ink-2);
  background:var(--surface-1);border:1px solid var(--outline-2);
  padding:2px 11px;border-radius:999px;
}
.feat{border:2px solid var(--t80)}
.feat:hover{border-color:var(--t60)}

/* ---------- 7. 插件清单 ---------- */
.plug-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;
  margin:36px 0 16px;padding-top:28px;border-top:1px dashed var(--outline);
}
.plug-head h3{font-size:21px;font-weight:800}
.count{color:var(--t40);font-weight:700}

.plug-grid{display:grid;grid-template-columns:1fr;gap:10px}
@media (min-width:700px){.plug-grid{grid-template-columns:1fr 1fr}}
.plug{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 15px;border-radius:var(--r-m);
  border:1px solid var(--outline-2);background:var(--surface);
  text-decoration:none;color:var(--ink);
  transition:box-shadow .2s ease, background-color .2s ease, border-color .2s ease;
}
.plug:hover{box-shadow:var(--e2);background:var(--t95);border-color:var(--t90)}
.plug-name{font-weight:700;font-size:15px}
.plug-badge{
  flex:none;font-size:14px;font-weight:600;color:var(--t30);
  background:var(--t95);border:1px solid var(--t90);
  padding:2px 10px;border-radius:999px;
  transition:background-color .2s;
}
.plug:hover .plug-badge{background:var(--t90)}

/* ---------- 8. Hire Me 横幅 ---------- */
.hire{
  position:relative;overflow:hidden;
  background:var(--teal);color:var(--on-teal);
  border-radius:var(--r-l);padding:30px 26px;
  display:grid;gap:20px;align-items:center;box-shadow:var(--e2);
}
.hire::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(0,50,46,.14) 1.6px, transparent 1.6px);
  background-size:18px 18px;
}
@media (min-width:820px){.hire{grid-template-columns:1fr auto;padding:36px 40px}}
.hire-copy{position:relative}
.hire-hand{font-size:23px;transform:rotate(-1.2deg);display:inline-block;margin-bottom:4px}
.hire-title{font-size:clamp(21px,3vw,28px);font-weight:900;line-height:1.3}
.hire-sub{margin-top:8px;color:rgba(0,50,46,.78);font-weight:600}
.hire .btn{position:relative;justify-self:start}
@media (min-width:820px){.hire .btn{justify-self:end}}

/* ---------- 9. 写作 CTA ---------- */
.write-card{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;
  background:var(--surface);border:2px dashed var(--t80);
  border-radius:var(--r-l);padding:40px 28px;
  text-decoration:none;color:var(--ink);
  transition:box-shadow .25s ease, border-color .25s ease, background-color .25s ease;
}
.write-card:hover{box-shadow:var(--e3);border-color:var(--t60);background:#fdfffe}
.write-icon{
  display:grid;place-items:center;width:64px;height:64px;border-radius:50%;
  background:var(--t95);color:var(--t30);margin-bottom:6px;
  transition:background-color .25s ease, color .25s ease, box-shadow .25s ease;
}
.write-icon svg{width:30px;height:30px}
.write-card:hover .write-icon{background:var(--teal);color:var(--on-teal);box-shadow:var(--e2)}
.write-card h2{font-size:clamp(24px,3.4vw,30px);font-weight:900;letter-spacing:-.01em}
.write-desc{color:var(--ink-2)}
.write-path{color:var(--ink-3)}
.write-arrow{
  display:grid;place-items:center;width:48px;height:48px;border-radius:50%;
  background:var(--surface-1);color:var(--t30);font-size:22px;font-weight:800;margin-top:8px;
  transition:background-color .25s ease, color .25s ease;
}
.write-card:hover .write-arrow{background:var(--t95);color:var(--t30)}

/* ---------- 10. 关于我 ---------- */
.sub-h{
  display:flex;align-items:center;gap:9px;
  font-size:18px;font-weight:800;margin:26px 0 12px;
}
.sub-h::before{content:"";width:10px;height:10px;border-radius:3px;background:var(--teal);flex:none}
.about-p{color:var(--ink-2);margin-bottom:14px;max-width:46em}

.about-cols{display:grid;grid-template-columns:1fr;gap:8px 40px;margin-top:8px}
@media (min-width:800px){.about-cols{grid-template-columns:1fr 1fr}}

.exp li{
  display:grid;grid-template-columns:104px 1fr;gap:14px;align-items:baseline;
  padding:9px 0;border-bottom:1px dashed var(--outline-2);font-size:15px;
}
.exp li:last-child{border-bottom:0}
.exp-year{color:var(--t40);font-weight:700}

/* ---------- 11. 联系 ---------- */
.avail{display:flex;align-items:center;gap:10px;color:var(--ink-2);margin-bottom:20px}
.avail strong{color:var(--t40)}
.contact-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:22px}

.socials{display:flex;flex-wrap:wrap;gap:10px}
.socials a{
  display:inline-flex;align-items:center;gap:7px;
  padding:9px 17px;border-radius:999px;
  border:1px solid var(--outline);color:var(--ink-2);
  text-decoration:none;font-weight:700;font-size:15px;
  transition:background-color .2s ease, box-shadow .2s ease, border-color .2s ease, color .2s ease;
}
.socials a:hover{background:var(--t95);border-color:var(--t90);color:var(--t30);box-shadow:var(--e1)}
.socials a span{color:var(--t60)}

/* ---------- 12. 页脚 ---------- */
.footer{
  border-top:1px solid var(--outline-2);
  padding:26px 0 40px;margin-top:8px;
}
.footer .mono{color:var(--ink-3)}
.footer-love{font-weight:700;font-size:15px;margin-top:6px}

/* ---------- 13. 动效偏好 ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}