/* 布局：米白底色。首页依次是名字和简介、一行求学经历、三个圆角方块入口；
   子页是单栏长页。摄影页每个分区是一叠可以点击、拖动切换的照片。整站只用浅色一套配色。 */
:root{
  --bg:#F4EFE4;          /* 米白 */
  --surface:#EAE3D4;     /* 方块底色 */
  --surface-hi:#E0D7C4;  /* 方块悬停 */
  --surface-2:#E3DBC9; --surface-3:#DAD0BB;  /* 照片叠里的空位 */
  --ink:#1E2328; --muted:#6A665E; --line:rgba(30,35,40,.14);
  --glow:#B8641E; --glow-ink:#8E4A12;
  --on-photo:#FBF8F2; --on-photo-muted:rgba(251,248,242,.84); --on-photo-line:rgba(251,248,242,.4);
  --photo-scrim:linear-gradient(180deg,rgba(14,18,22,.18),rgba(14,18,22,0) 35%,rgba(14,18,22,.62));
  --card-shadow:0 1px 2px rgba(30,25,15,.08),0 10px 30px rgba(30,25,15,.12);
  --scrim:rgba(20,18,15,.94);
  --radius:20px; --radius-sm:14px;
  --font-display:"Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --font-body:"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-label:"Archivo","Helvetica Neue",Arial,sans-serif;
  color-scheme:light;
}

*,*::before,*::after{box-sizing:border-box}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{height:100%}
body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:400 16px/1.8 var(--font-body);-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
[hidden]{display:none!important}
h1,h2,h3,p,ol,ul,dl,dd{margin:0}
ol,ul{padding:0;list-style:none}
a{color:inherit}
:focus-visible{outline:2px solid var(--glow);outline-offset:3px}
button{font:inherit;color:inherit}

.wrap{width:100%;max-width:1120px;margin-inline:auto;padding-left:max(16px, env(safe-area-inset-left, 0px));padding-right:max(16px, env(safe-area-inset-right, 0px))}
.label{font:600 12px/1.4 var(--font-label);font-stretch:125%;letter-spacing:.2em;text-transform:uppercase}

/* ---------- 顶部导航（所有页面） ---------- */
.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 24px;padding-block:22px}
.brand{font:900 18px/1 var(--font-display);letter-spacing:.12em;text-decoration:none}
.nav-links{display:flex;flex-wrap:wrap;gap:4px clamp(18px,3vw,36px)}
.nav-links a{font-size:15px;letter-spacing:.14em;text-decoration:none;padding-block:6px;border-bottom:2px solid transparent}
.nav-links a:hover{border-bottom-color:var(--line)}
.nav-links a[aria-current="page"]{border-bottom-color:var(--glow)}

/* ---------- 首页 ---------- */
.home{display:flex;flex-direction:column}
.home-main{flex:1;display:flex;flex-direction:column;justify-content:center;gap:clamp(28px,5vh,52px);padding-block:clamp(16px,4vh,40px) clamp(24px,5vh,48px)}
.intro{display:grid;gap:12px clamp(32px,6vw,88px)}
.intro-name{display:flex;flex-direction:column;gap:12px;min-width:0}
.intro-name .label{color:var(--glow-ink)}
.intro h1{font:900 clamp(60px,9.5vw,120px)/1.04 var(--font-display);letter-spacing:.06em}
.intro p{max-width:24em;font-size:clamp(15px,1.4vw,17px);color:var(--muted)}
@media (min-width:860px){.intro{grid-template-columns:auto minmax(0,1fr);align-items:end}.intro p{padding-bottom:14px}}

/* 求学经历：横排一行，定向越野的起点、检查点、终点符号 */
.route-row{display:flex;flex-direction:column;gap:6px;padding-block:14px;border-block:1px solid var(--line)}
.route-row li{display:flex;align-items:center;gap:8px;min-width:0;font-size:14.5px}
.route-row svg{width:14px;height:14px;flex:none;stroke:var(--glow);stroke-width:3.4;fill:none}
.route-row b{font-weight:500;white-space:nowrap}
.route-row .yr-s{font:600 12px/1.4 var(--font-label);letter-spacing:.06em;color:var(--glow-ink);font-variant-numeric:tabular-nums;white-space:nowrap}
@media (min-width:760px){
  .route-row{flex-direction:row;align-items:center;gap:0}
  .route-row li:not(:last-child){flex:1}
  .route-row li:not(:last-child)::after{content:"";flex:1;min-width:20px;height:1.5px;margin-inline:14px;background:var(--glow)}
  .route-row li.ahead::after{background:repeating-linear-gradient(90deg,var(--glow) 0 6px,transparent 6px 11px)}
}

.blocks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.block{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:12px;min-width:0;max-width:100%;aspect-ratio:1;padding:clamp(16px,2vw,24px);border-radius:var(--radius);background:var(--surface);background-size:cover;background-position:center;text-decoration:none;overflow:hidden;transition:background-color .2s ease,transform .2s ease}
.block:first-child{grid-column:span 2;aspect-ratio:2/1}
a.block:hover{background-color:var(--surface-hi);transform:translateY(-2px)}
.block > *{position:relative}
.block .label{font-size:11px;color:var(--glow-ink)}
.block-foot{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;column-gap:10px}
.block b{display:block;font:900 clamp(22px,2.6vw,32px)/1.3 var(--font-display);letter-spacing:.06em}
.block .desc{display:block;font-size:13.5px;line-height:1.6;color:var(--muted)}
.block-arrow{font:300 26px/1 var(--font-label);transition:transform .2s ease}
a.block:hover .block-arrow,a.block:focus-visible .block-arrow{transform:translateX(5px)}
.block.has-photo{color:var(--on-photo)}
.block.has-photo::before{content:"";position:absolute;inset:0;background:var(--photo-scrim)}
.block.has-photo .label{color:var(--on-photo)}
.block.has-photo .desc{color:var(--on-photo-muted)}
@media (max-width:479px){.block:not(:first-child) .desc{display:none}}
@media (min-width:760px){
  .blocks{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
  .block,.block:first-child{grid-column:auto;aspect-ratio:4/3}
}
@media (prefers-reduced-motion:reduce){.block,.block-arrow{transition:none}a.block:hover{transform:none}}

/* ---------- 子页 ---------- */
.page-head{display:flex;flex-direction:column;gap:12px;padding-block:clamp(36px,7vw,88px) clamp(28px,4vw,52px)}
.page-head .label{color:var(--glow-ink)}
.page-head h1{font:900 clamp(44px,7vw,84px)/1.1 var(--font-display);letter-spacing:.05em;text-wrap:balance}
.page-head p{max-width:34em;color:var(--muted);font-size:17px}

.band{padding-block:clamp(52px,8vw,104px)}
.band-alt{background:var(--surface)}
.sec-head{display:flex;flex-direction:column;gap:10px;margin-bottom:clamp(28px,4vw,48px);max-width:40em}
.sec-head .label{color:var(--glow-ink)}
.sec-head p{color:var(--muted)}
h2{font:900 clamp(30px,4.2vw,46px)/1.2 var(--font-display);letter-spacing:.04em;text-wrap:balance}

.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding-block:28px;font-size:13px;color:var(--muted);border-top:1px solid var(--line)}
.foot a{text-decoration:none}
.foot a:hover{color:var(--ink)}

/* ---------- 研究页 ---------- */
.research{display:grid;gap:clamp(28px,5vw,72px)}
@media (min-width:860px){.research{grid-template-columns:5fr 7fr;align-items:start}}
.research-head{display:flex;flex-direction:column;gap:10px;min-width:0}
.research-head .label{color:var(--glow-ink)}
.wam{font:800 clamp(72px,9vw,112px)/.9 var(--font-label);font-stretch:125%;letter-spacing:-.01em;margin-top:18px}
.wam-full{color:var(--muted)}
.research-text{display:flex;flex-direction:column;gap:18px;max-width:36em;min-width:0;font-size:17px}
.chain{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px;border-top:2px solid var(--ink)}
.chain li{padding:14px 12px 0 0}
.chain b{display:block;font:900 20px/1.3 var(--font-display)}
.chain li + li b::before{content:"→ ";color:var(--glow)}
.chain span{font-size:14px;color:var(--muted)}
.todo{color:var(--muted)}

/* ---------- 照片方块 ---------- */
.tile{display:block;width:100%;max-width:100%;aspect-ratio:1;border:0;padding:0;margin:0;border-radius:var(--radius-sm);background:var(--surface);color:inherit;font:inherit;overflow:hidden}
button.tile{cursor:zoom-in}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
button.tile:hover img{transform:scale(1.04)}
@media (prefers-reduced-motion:reduce){.tile img{transition:none}}
.tile-empty{display:flex;align-items:flex-end}
.tile-empty span,.card-empty span{white-space:pre-line;font:500 11px/1.4 var(--font-label);letter-spacing:.06em;color:var(--muted);padding:10px 12px;overflow-wrap:anywhere}

/* ---------- 摄影：入口页 ---------- */
.ph-entries{display:grid;grid-template-columns:1fr;gap:16px;padding-bottom:clamp(52px,8vw,104px)}
.ph-entries .block,.ph-entries .block:first-child{grid-column:auto;aspect-ratio:4/3}
.ph-entries .block b{font-size:clamp(28px,3.4vw,40px)}
@media (min-width:640px){.ph-entries{grid-template-columns:repeat(2,minmax(0,1fr))}}
.crumb{display:flex;gap:8px;align-items:center}
.crumb a{text-decoration:none;color:var(--muted)}
.crumb a:hover{color:var(--ink)}

/* ---------- 摄影：分区与照片叠 ---------- */

.ph-nav{display:flex;flex-wrap:wrap;gap:8px}
.ph-nav a{font-size:14px;letter-spacing:.1em;text-decoration:none;padding:6px 16px;border-radius:999px;background:var(--surface)}
.ph-nav a:hover{background:var(--surface-hi);color:var(--glow-ink)}
.ph-sec{display:grid;gap:24px clamp(32px,6vw,80px);padding-block:clamp(40px,6vw,72px);border-top:1px solid var(--line);scroll-margin-top:16px}
.ph-sec:last-child{padding-bottom:clamp(52px,8vw,104px)}
.ph-meta{display:flex;flex-direction:column;gap:8px;min-width:0}
.ph-meta .label{color:var(--glow-ink)}
.ph-meta p{color:var(--muted)}
.ph-count{font:500 13px/1.4 var(--font-label);letter-spacing:.08em;color:var(--muted);font-variant-numeric:tabular-nums}
.ph-body{display:flex;flex-direction:column;gap:18px;min-width:0}
@media (min-width:860px){.ph-sec{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start}}

.stack{position:relative;width:100%;max-width:720px;margin-inline:auto;padding:22px 26px 30px;touch-action:pan-y;user-select:none;-webkit-user-select:none;outline:none}
.stack:focus-visible{outline:2px solid var(--glow);outline-offset:4px;border-radius:var(--radius)}
.stack-frame{position:relative;width:100%;aspect-ratio:4/5}
@media (min-width:640px){.stack-frame{aspect-ratio:4/3}}
.card{position:absolute;left:0;top:0;width:100%;height:100%;border-radius:var(--radius);overflow:hidden;background:var(--surface);box-shadow:var(--card-shadow);transition:transform .38s cubic-bezier(.2,.7,.2,1),opacity .3s ease;will-change:transform}
.card img{width:100%;height:100%;object-fit:cover;pointer-events:none;-webkit-user-drag:none}
.card.is-top{cursor:grab}
.card.dragging{cursor:grabbing;transition:none}
.card-empty{display:flex;align-items:flex-end}
.card-empty:nth-child(3n+2){background:var(--surface-2)}
.card-empty:nth-child(3n){background:var(--surface-3)}
.card-cap{position:absolute;left:0;right:0;bottom:0;padding:28px 16px 12px;font-size:13px;color:var(--on-photo);background:linear-gradient(180deg,transparent,rgba(14,18,22,.55))}

.stack-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}
.stack-bar button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:40px;padding:0 16px;border:0;border-radius:999px;background:var(--surface);cursor:pointer;font-size:14px;letter-spacing:.06em}
.stack-bar button:hover{background:var(--surface-hi)}
.stack-bar .nav-btn{font:400 18px/1 var(--font-label);padding:0;width:44px}
.stack-pos{min-width:5.5em;text-align:center;font:600 14px/1 var(--font-label);letter-spacing:.06em;font-variant-numeric:tabular-nums}
.stack-hint{text-align:center;font-size:13px;color:var(--muted)}
.all-grid,.album{display:flex;flex-wrap:wrap;gap:8px;min-width:0;--row:110px}
.all-grid::after,.album::after{content:"";flex-grow:10000}
@media (min-width:760px){.all-grid,.album{--row:150px}}
.tile.jt{width:auto;min-width:0;aspect-ratio:var(--ar,1);flex-grow:var(--ar,1);flex-basis:calc(var(--ar,1) * var(--row))}
.all-grid .tile.current{outline:2px solid var(--glow);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.card{transition:none}}

/* ---------- 生活：每个爱好一节 ---------- */
.hobby-nav{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:clamp(20px,3vw,32px)}
.hobby-nav a{font-size:14px;letter-spacing:.1em;text-decoration:none;padding:6px 16px;border-radius:999px;background:var(--surface)}
.hobby-nav a:hover{background:var(--surface-hi);color:var(--glow-ink)}
.hobby{display:grid;gap:18px 40px;padding-block:clamp(36px,5vw,60px);border-top:1px solid var(--line);scroll-margin-top:16px}
.hobby:last-child{padding-bottom:clamp(52px,8vw,104px)}
.hobby-meta{display:flex;flex-direction:column;gap:6px;min-width:0}
.hobby-meta .label{color:var(--glow-ink)}
.hobby-meta h2{font-size:clamp(28px,3.4vw,38px)}
.hobby-meta p{color:var(--muted)}
.hobby-count{font:500 13px/1.4 var(--font-label);letter-spacing:.08em;color:var(--muted);font-variant-numeric:tabular-nums}
.hobby > .album + .more-wrap{grid-column:-2}
.more-btn{border:0;border-radius:999px;background:var(--surface);padding:8px 18px;cursor:pointer;font-size:14px;letter-spacing:.06em}
.more-btn:hover{background:var(--surface-hi)}
@media (min-width:760px){.hobby{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start}}

/* ---------- 大图 ---------- */
.lightbox{border:0;padding:0;background:transparent;color:var(--on-photo);width:100vw;height:100vh;max-width:100vw;max-height:100vh;overflow:hidden}
.lightbox::backdrop{background:var(--scrim)}
.lb-inner{height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto;place-items:center;gap:12px;padding:max(16px, env(safe-area-inset-top, 0px)) max(16px, env(safe-area-inset-right, 0px)) max(16px, env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px))}
.lb-inner img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.lb-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 16px;font-size:14px}
.lb-bar button{background:transparent;border:1px solid var(--on-photo-line);border-radius:999px;padding:6px 16px;cursor:pointer}
.lb-bar button:hover{border-color:var(--on-photo)}
