@font-face{font-family:AlbumDisplay;src:url("assets/AlbumDisplay.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:AlbumBody;src:url("assets/AlbumBody.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Bungee;src:url("assets/Bungee.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Fredoka;src:url("assets/Fredoka.ttf") format("truetype");font-weight:300 700;font-style:normal;font-display:swap}
@font-face{font-family:Outfit;src:url("assets/Outfit.ttf") format("truetype");font-weight:100 900;font-style:normal;font-display:swap}

/* One desktop, one player window, a very tangible record collection. */
:root{
  color-scheme:light;
  --ink:#153d70;--blue:#1759d7;--deep:#17398f;--mint:#c3f2dc;--lime:#e4ff91;
  --paper:#fffde5;--pink:#ffb8db;--ice:#eaf7f5;--muted:#426282;--line:#87aabc;
  --body:Outfit,AlbumBody,"PingFang SC",sans-serif;
  --display:AlbumDisplay,Fredoka,sans-serif;--soft:Fredoka,AlbumBody,sans-serif;
  --english:Bungee,AlbumDisplay,sans-serif;
  --chrome:linear-gradient(180deg,#f2ffff 0%,#badfff 13%,#659eec 45%,#3372d9 49%,#97d2fb 100%);
  --ease:cubic-bezier(.22,1,.36,1);
  --side-accent:var(--mint);--bunny-left:36px;--bunny-bottom:32px;--bunny-height:67px;
}
body[data-page="experience"]{--side-accent:var(--lime)}
body[data-page="projects"]{--side-accent:#bedfff}
body[data-page="blog"],body[data-page="writing"]{--side-accent:var(--pink)}
body[data-page="about"]{--side-accent:var(--mint)}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:18px;min-width:280px}
body{
  margin:0;min-height:100vh;color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.65;
  overflow-wrap:break-word;-webkit-font-smoothing:antialiased;
  background-color:#b8edcf;
  background-image:radial-gradient(ellipse at 86% 10%,#b9e9ff9c,transparent 36%),radial-gradient(ellipse at 7% 50%,#b6fff380,transparent 39%),linear-gradient(165deg,#447be8 0%,#75b9f0 26%,#a4e9d6 55%,#dbff95 84%,#ecffd0 100%);
  background-attachment:fixed;
}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:conic-gradient(#f3ffff20 25%,transparent 0 50%,#f3ffff20 0 75%,transparent 0);background-size:14px 14px;mask-image:linear-gradient(#17398f,transparent 48%,#17398f)}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(circle,#ffffe9 0 1px,transparent 2px),radial-gradient(circle,#f5ffdb 0 2px,transparent 3px);background-size:89px 103px,223px 181px;background-position:11px 21px,46px 64px}
::selection{background:#ffb8db;color:#17398f}
a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}
button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}
button,input,textarea{border:1px solid var(--line)}
img{display:block;max-width:100%;height:auto}svg{max-width:100%}
h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3,h4{line-height:1.25;font-family:var(--display);font-weight:400}
main,section,article,aside,nav,.wrap,.desktop-main,.player-main>*,.detail-layout>*,.about-grid>*{min-width:0}
:focus-visible{outline:3px solid #bf1472;outline-offset:4px}
input:focus-visible,textarea:focus-visible{outline-offset:1px}
.skip-link{position:fixed;top:8px;left:12px;z-index:300;padding:8px 16px;background:var(--lime);border:1px solid var(--ink);transform:translateY(-160%)}
.skip-link:focus{transform:none}
.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}
.wrap{width:100%;max-width:1120px;margin-inline:auto;padding-inline:24px}
.deco-star{position:fixed;pointer-events:none;z-index:-1;width:54px;height:54px;left:2%;top:44%;background:linear-gradient(135deg,#fffbd8,#e6ff46 60%,#b8e950);clip-path:polygon(50% 0,61% 34%,98% 34%,70% 56%,81% 94%,50% 72%,19% 94%,30% 56%,2% 34%,39% 34%);filter:drop-shadow(2px 3px 1px #2e64a7);transform:rotate(-15deg)}
.deco-star:nth-of-type(2){left:auto;right:2%;top:25%;width:38px;height:38px;transform:rotate(18deg)}
.desktop-top{display:flex;justify-content:space-between;align-items:center;gap:12px;width:min(1260px,calc(100% - 40px));margin:0 auto;padding:8px 0 9px;color:#f4fff1;font-size:11px;line-height:1.35;letter-spacing:.06em;text-shadow:0 1px 2px #2656ae}
.desktop-shell{position:relative;display:grid;grid-template-columns:90px minmax(0,1fr);gap:18px;width:calc(100% - 40px);max-width:1260px;margin:0 auto 28px}
.desktop-dock{display:flex;flex-direction:column;align-items:center;gap:20px;padding-top:18px}
.desktop-icon{display:flex;flex-direction:column;align-items:center;gap:7px;width:86px;min-height:78px;padding:6px 2px;text-align:center;text-decoration:none;border:1px solid transparent;border-radius:5px}
.desktop-icon small{font-family:AlbumBody,sans-serif;font-size:12px;line-height:1.35;color:#173d76;text-shadow:0 1px 0 #effff0}
.folder-icon{--folder:#8fc7ff;position:relative;display:block;width:49px;height:34px;margin-top:8px;border:1px solid #245597;border-radius:3px 4px 4px 3px;background:linear-gradient(160deg,#f5ffff 0%,var(--folder) 47%,#579de1 100%);box-shadow:1px 2px 0 #effffab3,2px 4px 4px #18478b38;transform:rotate(-5deg)}
.folder-icon::before{content:"";position:absolute;left:-1px;top:-8px;width:24px;height:10px;border:1px solid #245597;border-bottom:0;border-radius:4px 5px 0 0;background:#e3f9ff;z-index:-1}
.folder-icon::after{content:"";position:absolute;inset:6px -5px -1px 3px;border:1px solid #245597;border-radius:2px 3px 4px 3px;background:linear-gradient(180deg,#f5ffff,var(--folder));transform:skewX(-12deg);box-shadow:inset 0 2px 0 #fffff0}
.folder-lime{--folder:#d8f98c}.folder-pink{--folder:#ffafcf}.folder-silver{--folder:#bed0e8}
.desktop-main{border-radius:12px;box-shadow:0 15px 36px #134e9642,0 2px 3px #28539766;}
.site-header{position:relative;z-index:5;border:1px solid #3271c7;border-bottom:0;border-radius:12px 12px 0 0;background:var(--chrome);box-shadow:inset 1px 1px 0 #ffffffeb,inset -1px 0 0 #d7f6ff}
.window-title{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:31px;padding:3px 8px 3px 14px;border-bottom:1px solid #397ae2;color:#153d70;font-size:12px;text-shadow:0 1px #ecffff}
.window-title strong{font-family:var(--soft);font-weight:600;letter-spacing:.045em}
.window-controls{display:inline-flex;align-self:stretch;align-items:center;gap:3px;flex-shrink:0}
.window-controls i{display:grid;place-items:center;width:25px;height:21px;border:1px solid #5286c9;border-radius:2px;background:linear-gradient(#f1ffff,#89bbed 52%,#6094dd 53%,#b7e2ff);box-shadow:inset 0 1px #fffef3;color:#fffef3;font-family:Outfit,sans-serif;font-size:16px;font-style:normal;line-height:1;text-shadow:0 1px 1px #1b5593}
.window-controls i:last-child{border-color:#b478ad;background:linear-gradient(#ffdfeb,#f4a8d1 49%,#d963a5 51%,#ffa9d6)}
.nav-bar{display:flex;align-items:center;gap:14px;padding:5px 13px;background:linear-gradient(180deg,#3478e8,#1554c5 52%,#2363d1 53%,#3d8dec);border-block:1px solid #ddf9ff80;color:#f4fff7}
.wordmark{flex-shrink:0;font-family:var(--english);font-size:16px;line-height:1.1;text-decoration:none;letter-spacing:-.04em;text-shadow:1px 2px #17398f}
#main-nav{display:flex;justify-content:center;align-items:stretch;flex:1;gap:3px;min-width:0}
#main-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:43px;padding:3px 13px;line-height:1.2;border:1px solid transparent;border-radius:4px;text-decoration:none}
#main-nav a span{font-family:var(--soft);font-size:12px;font-weight:500}#main-nav a small{margin-top:3px;font-family:AlbumBody,sans-serif;font-size:12px}
#main-nav a[aria-current="page"],#main-nav a.active{color:#143d87;border-color:#c8f5ff;background:linear-gradient(#f8ffda,#cff897);box-shadow:0 1px 3px #16317a55,inset 0 1px #fffdf0}
.header-contact{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-height:32px;padding:3px 11px;border:1px solid #c7f6ff;border-radius:4px;background:linear-gradient(#f0fff7,#b3e3e4);color:#174b83;font-size:12px;text-decoration:none;box-shadow:0 1px 2px #123d8a}
.menu-toggle{display:none}
.address-bar{display:flex;align-items:center;gap:8px;min-height:24px;padding:3px 14px;border-top:1px solid #c7e8ff;background:linear-gradient(#e3f4e9,#bedee1);color:#395b77;font-size:10px;line-height:1.4;letter-spacing:.04em;overflow-wrap:anywhere;box-shadow:inset 0 -1px 0 #799fb7}
.address-bar::before{content:"";width:7px;height:7px;border-radius:50%;background:#8acd55;border:1px solid #538951;box-shadow:0 1px #ffffe8;flex-shrink:0}
#app{position:relative;border-inline:1px solid #3979c8;background:linear-gradient(110deg,#ffffe9f5,#edfff0ed 58%,#d7f2e4f0);box-shadow:inset 3px 0 #d1eaff,inset -3px 0 #c4e5ff;min-height:320px;padding-bottom:20px}
#app:focus{outline:none}
#app:has(.player-home){padding-bottom:0}

/* The album is a link; its clear plastic seam and spine remain physical. */
.player-home{padding:24px 14px}
.player-main{display:grid;grid-template-columns:158px minmax(0,1fr) 280px;gap:24px;align-items:start}
.liner-sidebar{align-self:start;padding:12px 10px 9px;background:linear-gradient(90deg,#b7def8cc,#deefdaba);border:1px solid #9ebec2;box-shadow:inset 1px 0 #f8fff9,inset -3px 0 #faffdc;border-radius:3px}
.liner-label{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:#345c9b}
.bunny-badge{display:grid;place-items:center;width:88px;height:94px;margin:9px auto 7px;background:radial-gradient(ellipse,#efffc8 40%,#c8eabb 69%,transparent 70%)}
.bunny-badge img{width:78px;height:88px;object-fit:contain;filter:drop-shadow(1px 2px 0 #4270a433)}
.liner-title{margin:5px 0 13px}.liner-title h2{font-size:19px;text-align:center}.liner-title small{display:block;text-align:center;font-size:10px}
.track-list{display:grid;gap:4px}
.track{display:grid;grid-template-columns:20px minmax(0,1fr);column-gap:4px;align-items:center;min-height:43px;padding:5px 3px;border:1px solid transparent;border-radius:3px;text-decoration:none;line-height:1.25}
.track-index{grid-row:1/3;align-self:center;color:#416b92;font-family:var(--soft);font-size:11px}.track b{font-weight:400;font-family:AlbumBody,sans-serif;font-size:14px}.track small{grid-column:2;font-size:10px;color:#476986}
.track.active,.track[aria-current="true"],.track[aria-current="page"],.track[aria-selected="true"]{border-color:#83b5a7;background:linear-gradient(#ffffdf,#dcf697);box-shadow:inset 0 1px #fffef2}
.tiny-note{margin-top:15px;padding-top:9px;border-top:1px solid #97bac0;color:#486b83;font-size:11px;line-height:1.55}
.hint-line{display:inline-block;white-space:nowrap}
.album-stage{position:relative;isolation:isolate;min-height:450px;width:100%;max-width:560px;justify-self:center;animation:album-arrive .65s var(--ease) both}
@keyframes album-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.album-stage::before{content:"";position:absolute;inset:15px 0 42px;background:radial-gradient(ellipse at 52% 55%,#d6efbd80,transparent 68%);z-index:-1;pointer-events:none}
.orbit-disc{position:absolute;overflow:hidden;z-index:1;right:0;top:69px;width:320px;aspect-ratio:1;border:4px solid #122138;border-radius:50%;background:repeating-radial-gradient(circle at center,#101c32 0 2px,#26324a 2.7px 3.4px,#0d172b 4px 5px);box-shadow:inset 0 0 0 1px #728194,inset 0 0 24px #020a1c,6px 9px 15px #1b3b523b;display:grid;place-items:center;text-decoration:none}
.orbit-disc::before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 15deg,transparent 0deg,#c5daff38 35deg,transparent 60deg,transparent 172deg,#b9d6e94d 202deg,transparent 230deg);pointer-events:none}
.orbit-disc::after{content:"";position:absolute;left:50%;top:50%;width:13px;height:13px;transform:translate(-50%,-50%);border:3px solid #abbec5;border-radius:50%;background:#e4f5d9;box-shadow:0 0 0 6px #193244}
.orbit-disc img{width:98px;height:98px;object-fit:contain;border:6px solid #a6dcbb;border-radius:50%;background:radial-gradient(circle,#f5ffd2,#abdbc4);padding:8px}
.album-cover{position:absolute;left:0;top:22px;z-index:2;width:77%;max-width:360px;height:380px;overflow:hidden;isolation:isolate;border:7px solid #daedecce;border-left-width:14px;border-radius:3px;background:linear-gradient(115deg,#fffde7,#f8f8d8);box-shadow:inset 0 0 0 1px #698e9d,inset 4px 0 6px #668e9429,2px 2px 0 #f4ffff,4px 6px 9px #224a6540;text-decoration:none;transform:rotate(-2deg);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.album-cover::after{content:"";position:absolute;z-index:4;inset:0;border:1px solid #ffffffc2;background:linear-gradient(120deg,#ffffff48,transparent 28%,transparent 64%,#ffffff26 65%,transparent 69%);pointer-events:none}
.album-spine{position:absolute;inset:0 auto 0 0;width:8px;border-right:1px solid #5281a9;background:repeating-linear-gradient(90deg,#6e9dd6 0 1px,#c2e8f3 2px 3px);font-size:8px;writing-mode:vertical-rl;letter-spacing:.18em;padding-top:9px}
.cover-topline{position:absolute;left:21px;right:13px;top:12px;display:flex;justify-content:space-between;gap:8px;font-size:9px;font-family:Outfit,sans-serif;letter-spacing:.1em;color:#3e6194}
.cover-name{position:absolute;z-index:2;top:34px;left:19px;color:#315ed0;font-family:var(--english);font-size:clamp(54px,5.3vw,75px);font-weight:400;line-height:.99;letter-spacing:-.055em;text-shadow:2px 2px 0 #d3e5f4}
.cover-name span{display:block;margin-top:24px;max-width:3em;font-family:AlbumDisplay,AlbumBody,sans-serif;font-size:23px;line-height:1.3;letter-spacing:.06em;text-shadow:none}
.cover-photo{position:absolute;right:11px;bottom:36px;width:63%;height:211px;padding:4px;border:1px solid #98b6b4;background:#eff7d8;box-shadow:2px 2px 0 #b5cdb9;transform:rotate(3deg)}
.cover-photo img{width:100%;height:100%;object-fit:cover;object-position:center 30%;filter:saturate(.87)}
.cover-subtitle{position:absolute;left:15px;bottom:45px;max-width:21%;overflow-wrap:anywhere;font-family:var(--soft);font-size:10px;line-height:1.3;color:#356b9f;letter-spacing:.02em}
.cover-bottom{position:absolute;left:20px;right:12px;bottom:9px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-top:1px solid #8bafad;padding-top:4px;font-family:var(--display);font-size:16px;color:#305c9d}
.cover-bottom small,.cover-bottom span{font-family:var(--body);font-size:10px}
.album-stamp{position:absolute;z-index:3;right:1px;top:12px;display:flex;flex-direction:column;justify-content:center;align-items:center;width:92px;height:92px;padding:16px 9px;background:linear-gradient(135deg,#f7ffd8,#d8fa72);color:#194f81;clip-path:polygon(50% 0%,59% 8%,70% 4%,75% 15%,88% 14%,87% 27%,98% 32%,93% 44%,100% 53%,91% 61%,95% 74%,82% 77%,79% 90%,66% 89%,58% 100%,48% 93%,36% 99%,30% 88%,17% 88%,16% 76%,4% 70%,9% 58%,0% 48%,9% 38%,5% 26%,18% 23%,22% 10%,35% 13%,42% 2%);font-family:var(--display);font-size:16px;line-height:1.25;text-align:center;text-decoration:none;transform:rotate(10deg)}
.album-stamp small{font-family:var(--soft);font-size:10px}.album-stamp:focus-visible{clip-path:none}
.album-sticker{position:absolute;z-index:3;bottom:31px;left:12px;display:flex;align-items:center;justify-content:center;gap:5px;min-height:39px;max-width:220px;padding:6px 15px;background:linear-gradient(#ffd8ed,#ffb4d7);border:1px solid #a56897;border-radius:48% 46% 44% 41% / 28% 45% 32% 43%;box-shadow:inset 0 0 0 3px #fff1f499,2px 3px 0 #294d7430;color:#7f386d;font-family:var(--display);font-size:16px;text-decoration:none;transform:rotate(-7deg)}
.album-sticker small{font-family:var(--body);font-size:10px}
.album-caption{position:absolute;bottom:0;left:8px;right:0;display:flex;justify-content:space-between;gap:8px;color:#4a6f80;font-size:10px;line-height:1.4;letter-spacing:.04em}
.jacket-notes{padding:18px;border-left:1px solid #a4c8be;align-self:start}
.jacket-notes>*{min-width:0}
.eyebrow{display:block;color:#375fa0;font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}
.jacket-notes h2{font-family:var(--soft);font-size:24px;line-height:1.15;font-weight:600;letter-spacing:-.03em;color:#2358ad}
.jacket-copy{min-width:0}.jacket-copy p{margin-top:13px;font-size:14px;line-height:1.8}
.tag-row{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.tag{display:inline-flex;align-items:center;min-height:24px;padding:2px 7px;border:1px solid #9bbbaf;border-radius:3px;background:#f8fbdc;color:#355a70;font-size:11px;line-height:1.5}
.jacket-notes .tag-row{margin-top:13px}.tag:nth-child(3n+2){background:#e4f3f8}.tag:nth-child(3n){background:#fce1ec}
.mini-polaroids{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;width:100%;max-width:300px;margin:19px 0 0;padding:12px 14px 14px}
.mini-polaroids a{display:block;min-width:0;padding:5px 5px 15px;border:1px solid #b3c2b7;background:#fffef2;box-shadow:2px 3px 3px #284d6b26;transform:rotate(-6deg);text-decoration:none;font-size:9px;line-height:1.4;text-align:center}
.mini-polaroids a:nth-child(2){transform:rotate(7deg);margin-top:8px}.mini-polaroids img{width:100%;height:auto}.mini-polaroids small{display:block;margin-top:4px;font-size:9px}
/* 内侧留白吸收照片旋转；签名另留 24px，不依赖未旋转盒子的底边。 */
.note-signature{display:block;margin-top:24px;text-align:right;font-family:var(--soft);font-size:14px;line-height:1.5;color:#476593}

/* Controls describe navigation, not audio playback. Rotation remains pausable. */
.transport{position:relative;display:flex;align-items:center;gap:10px;min-height:70px;margin:10px -9px 0;padding:17px 13px 8px;border:1px solid #447ecc;border-radius:4px;background:linear-gradient(#e6ffff 0%,#81c5f4 10%,#8ed6f7 38%,#5da8e8 40%,#afd9fa 100%);box-shadow:inset 1px 1px #fafff4,inset -1px -1px #3678d1,0 2px 0 #ceeac0}
.transport button,.transport-open,.transport-prev,.transport-next{display:grid;place-items:center;flex-shrink:0;width:34px;height:34px;padding:3px;border:1px solid #3e87cb;border-radius:50%;background:radial-gradient(circle at 34% 20%,#fbffff,#93d8ff 29%,#307bd1 66%,#98def7 96%);box-shadow:inset 0 1px 3px #f3ffff,0 2px 3px #225aa34d;color:#f5ffff;text-shadow:0 1px 2px #245ca9;font-size:16px;text-decoration:none}
.transport .transport-open{width:46px;height:46px;font-size:20px;border-color:#598dd1;box-shadow:inset 0 2px 4px #f9ffff,0 2px 4px #2f679d66}
.now-playing{display:flex;flex:1;flex-direction:column;justify-content:center;min-width:0;padding:3px 13px;border:1px solid #5594bd;border-radius:4px;background:linear-gradient(#fffef0,#e6f9dd);box-shadow:inset 1px 2px 3px #60879833;line-height:1.35}
.now-playing small{font-size:9px;color:#476c8d;letter-spacing:.08em}.now-playing strong{font-family:var(--display);font-size:17px;font-weight:400}
.transport .disc-toggle{width:auto;min-width:78px;height:31px;padding:4px 11px;border-radius:18px;font-family:var(--body);font-size:12px;white-space:nowrap;color:#244d87;text-shadow:0 1px #efffff;background:linear-gradient(#edffff,#92c8f0 52%,#74b3e3 53%,#c5edff)}
.disc-toggle[aria-pressed="true"]{background:linear-gradient(#ffffdf,#c9f778);color:#315523}
.progress-track{position:absolute;top:7px;left:77px;right:16px;height:4px;border-radius:3px;background:#e2fbfb;box-shadow:inset 0 1px 2px #225b99}
.progress-track::before{content:"";display:block;width:34%;height:100%;background:#285bbd;border-radius:3px}
.equalizer{display:flex;align-items:flex-end;justify-content:center;gap:3px;width:42px;height:26px;flex-shrink:0}.equalizer i,.equalizer span{width:5px;height:40%;border:1px solid #5a96c9;border-radius:3px;background:linear-gradient(#8cd8ff,#236ac1);transform-origin:bottom}.equalizer :nth-child(2){height:62%}.equalizer :nth-child(3){height:80%}.equalizer :nth-child(4){height:100%}
/* 唱片点击区域保持静止，仅旋转圆形裁切内的反光与中心图案，避免移动端横向溢出。 */
body.disc-spinning .orbit-disc::before,body.disc-spinning .orbit-disc img{animation:record-turn 12s linear infinite}
body.disc-spinning .equalizer>*{animation:level-bounce .8s ease-in-out infinite alternate}body.disc-spinning .equalizer>:nth-child(2){animation-delay:-.3s}body.disc-spinning .equalizer>:nth-child(3){animation-delay:-.6s}body.disc-spinning .equalizer>:nth-child(4){animation-delay:-.15s}
@keyframes record-turn{to{transform:rotate(360deg)}}@keyframes level-bounce{from{transform:scaleY(.4)}to{transform:scaleY(1)}}
.project-shelf{padding:15px 0 16px}
.section-head,.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.section-head h2,.section-heading h2{font-size:22px}.section-head small,.section-heading small{font-family:var(--soft);font-size:12px;font-weight:400;color:#496783}.section-head h2 span,.section-heading h2 span{font-family:var(--display)}
.section-head h2,.section-heading h2{display:flex;align-items:baseline;flex-wrap:wrap;gap:14px;min-width:0}
.text-link,.back-link,.source-link{display:inline-flex;align-items:center;min-height:34px;font-size:13px;gap:6px}
.sleeve-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.project-sleeve{position:relative;display:grid;grid-template-columns:80px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:11px;align-content:center;min-height:112px;padding:10px 11px 10px 13px;border:1px solid #97b6ad;border-radius:2px;background:linear-gradient(100deg,#eee8b9 0 4px,#ffffe6 4px 98%,#dce7c7 98%);box-shadow:1px 2px 0 #fffef0,3px 4px 5px #32657720;text-decoration:none;transition:transform .2s var(--ease)}
.project-sleeve:nth-child(2){background:linear-gradient(100deg,#ddb4c6 0 4px,#ffe0e9 4px 98%,#edcbd3 98%)}.project-sleeve:nth-child(3){background:linear-gradient(100deg,#95bdae 0 4px,#d9f4c6 4px 98%,#b7d3b3 98%)}
.sleeve-art{position:relative;grid-column:1;grid-row:1/4;align-self:center;width:80px;height:80px;overflow:hidden;background:#eaf1dc;border:1px solid #8fa9a9;box-shadow:inset 2px 0 #effffa}.sleeve-art img{width:100%;height:100%;object-fit:contain}
.project-sleeve>span:not(.sleeve-art){font-family:var(--soft);font-size:10px;color:#446678}.project-sleeve>strong{font-family:var(--display);font-weight:400;font-size:18px;line-height:1.35}.project-sleeve>small{font-size:12px;line-height:1.5;color:#416079}
.project-sleeve>*{min-width:0;overflow-wrap:anywhere}.project-sleeve>strong a{text-decoration:none}.sleeve-links{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:2px 14px;margin-top:8px;padding-top:4px;border-top:1px solid #9bb8ab;font-size:12px}.sleeve-links a{display:inline-flex;align-items:center;min-height:34px;max-width:100%;overflow-wrap:anywhere}
.acetrip-mini{position:relative;display:grid;place-items:center;width:100%;height:100%;background:#538b6b;color:#fffce6;font-family:var(--english);font-size:13px;line-height:1.2;text-align:center}.acetrip-mini::before{content:"";position:absolute;inset:9px;border:1px solid #fffbd499;background:linear-gradient(90deg,transparent 49%,#fffbd499 49% 51%,transparent 51%),linear-gradient(transparent 49%,#fffbd499 49% 51%,transparent 51%)}.acetrip-mini::after{content:"";position:absolute;right:8px;bottom:7px;width:18px;height:18px;border:1px solid #769351;border-radius:50%;background:radial-gradient(circle at 27% 35%,#faffdf 0 8%,#dff777 45%,#b9d657);box-shadow:1px 2px 2px #234d5233}

/* Content routes are liner notes, with readable Chinese at every breakpoint. */
.page-head{padding-block:24px 19px;margin-bottom:20px;border-bottom:1px solid #accbbd;background:linear-gradient(110deg,#ffffec77,#def2d666)}
.page-head .eyebrow{margin-bottom:8px;padding-left:9px;border-left:4px solid var(--side-accent)}.page-head h1{font-family:var(--display);font-size:clamp(29px,3.2vw,42px);line-height:1.2;letter-spacing:0;text-wrap:balance}.page-head>p{max-width:760px;margin-top:12px;font-size:15px;line-height:1.75}.back-link{margin-bottom:10px}.page-head .back-link:last-child{margin-top:10px;margin-bottom:0}
.zh-title{font-family:var(--display);font-size:.65em}.section{padding-block:22px 26px;border-top:1px solid #adc9bd}
.button{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:7px 15px;border:1px solid #759bba;border-radius:4px;background:linear-gradient(#ffffe7,#e4f4c0);color:#234f80;font-size:14px;text-align:center;text-decoration:none;box-shadow:inset 0 1px #fffef3,0 2px 1px #39637822}.button.primary{color:#f7fff0;background:linear-gradient(#70b6ef,#326fd4);border-color:#3264ae}.button.secondary{background:linear-gradient(#fffef0,#d9ead6)}
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start;padding-bottom:22px}
.project-card{min-width:0;border-bottom:1px solid #95b5af;padding-bottom:12px}.project-visual{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;border:1px solid #8caaa8;background:#e6efd9;box-shadow:3px 3px 0 #c4d7c3;text-decoration:none}.project-visual>img{width:100%;height:100%;object-fit:contain}.cover-fit{object-fit:contain!important}
.project-body{padding:12px 0 0}.project-meta{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 8px;margin-bottom:7px;font-size:11px;color:var(--muted)}.project-card h3{font-size:23px}.project-card h3 a{text-decoration:none}.project-card p{margin-top:9px;font-size:14px;line-height:1.75}.project-body>.tag-row{margin-top:10px}.project-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 12px;margin-top:12px;padding-top:7px;border-top:1px solid #b7cbbd;font-size:12px}.project-bottom a{display:inline-flex;align-items:center;min-height:34px;min-width:0;max-width:100%;overflow-wrap:anywhere}
.ace-cover{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;min-height:170px;aspect-ratio:16/10;padding:23px 15px;background:linear-gradient(135deg,#5c9570,#35715a);color:#f6ffce;font-family:var(--english);font-size:clamp(26px,3.4vw,49px);line-height:1.05;text-align:center;text-shadow:2px 2px #245246}
.ace-cover::before{content:"";position:absolute;inset:11% 9%;z-index:-1;border:2px solid #f7ffcfb3;background:linear-gradient(90deg,transparent 12%,#f7ffcf80 12% 12.6%,transparent 12.6% 49.6%,#f7ffcf80 49.6% 50.3%,transparent 50.3% 87.4%,#f7ffcf80 87.4% 88%,transparent 88%),linear-gradient(transparent 24%,#f7ffcf80 24% 25%,transparent 25% 49.5%,#f7ffcfb3 49.5% 50.5%,transparent 50.5% 75%,#f7ffcf80 75% 76%,transparent 76%)}
.ace-cover>strong,.ace-cover>h3{font:inherit}.illustration-note{display:block;margin-top:8px;font-family:var(--body);font-size:11px;line-height:1.4;color:var(--muted);text-shadow:none}.ace-cover .illustration-note{position:absolute;bottom:5px;left:8px;right:8px;margin:0 auto;width:fit-content;padding:2px 6px;background:#f7fbd5;color:#325844}
.snapshot{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-block:18px;padding-block:13px;border-block:1px solid #9ebdb4}.fact-pill{min-width:0;padding-right:10px;overflow-wrap:anywhere}.snapshot a,.snapshot small,.snapshot .small{max-width:100%;overflow-wrap:anywhere;word-break:normal}.fact-pill+.fact-pill{padding-left:14px;border-left:1px solid #acc7ba}.fact-pill strong{display:block;font-family:var(--display);font-weight:400;font-size:21px;line-height:1.3}.fact-pill small,.fact-pill>span{display:block;margin-top:5px;font-size:13px;line-height:1.6;color:var(--muted)}
.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 220px;align-items:start;gap:26px;padding-bottom:20px}.prose{max-width:800px;font-family:var(--body);font-size:16px;line-height:1.75}.prose p+p{margin-top:10px}.prose h2{margin:25px 0 12px;font-size:27px}.prose h3{margin:20px 0 9px;font-size:21px}.prose>:first-child{margin-top:0}.prose ul,.prose ol{padding-left:1.4em;margin:12px 0 18px}.prose li{padding-left:3px;margin-block:6px}.prose li::marker{color:#37746a}.prose blockquote{margin:18px 0;padding:12px 18px;border-block:1px solid #a5bfac;background:#f0f4cf;font-size:16px}.prose a,.source-link{overflow-wrap:anywhere}
.detail-cover{display:block;margin:18px 0 22px;border:1px solid #9cbdb5;background:#f2f5dc;overflow:hidden}.detail-cover img,img.detail-cover{width:100%;max-height:620px;object-fit:contain}.case-section{margin-block:23px;scroll-margin-top:18px}.case-section>h2{margin-bottom:12px;font-size:26px}.case-image{margin-block:17px}.case-image img{width:100%;height:auto;object-fit:contain;border:1px solid #9ebdb5;background:#f3f7e3}.case-image a,.case-image button{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}.case-image figcaption{margin-top:6px;font-size:12px;color:var(--muted)}
.case-gallery{margin-block:23px}.case-gallery>h2{margin-bottom:12px;font-size:26px}.case-gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px}.case-gallery-grid>.case-image{min-width:0;margin:0}.case-gallery-grid .case-image img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain}
.side-note{position:sticky;top:18px;padding:13px 0 13px 16px;border-left:1px solid #9ebcac;font-size:14px;line-height:1.75}.side-note h2,.side-note h3{margin-bottom:10px;font-size:19px}.side-note p+p{margin-top:9px}.side-note dl{margin:0}.side-note dt{margin-top:12px;font-size:12px;color:var(--muted)}.side-note dd{margin:3px 0 0}.side-note .tag-row{margin-top:12px}.source-note{font-size:12px;color:var(--muted)}
.notice{margin-block:15px;padding:8px 12px;border:1px dashed #9bb49b;background:#f4f5d9;font-size:13px;line-height:1.7}.notice strong{font-weight:600}.case-nav{display:flex;justify-content:space-between;gap:20px;margin:22px 0 18px;padding-top:12px;border-top:1px solid #aac7b8}.case-nav a{display:flex;flex-direction:column;justify-content:center;max-width:48%;min-height:44px;font-size:15px}.case-nav a:last-child{text-align:right;margin-left:auto}.case-nav small{font-size:12px;color:var(--muted)}
.experience-tabs{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 18px}.experience-tabs button{min-height:39px;padding:6px 15px;border:1px solid #88aba8;border-radius:4px 4px 0 0;background:linear-gradient(#ffffe9,#d7e9c8);font-size:14px}.experience-tabs button.active,.experience-tabs button[aria-selected="true"],.experience-tabs button[aria-pressed="true"]{background:linear-gradient(#b6e9fc,#568edc);color:#123970;border-color:#5082b5;box-shadow:inset 0 1px #efffff}
.experience-album{padding-bottom:10px}.experience-entry{position:relative;margin-bottom:20px;padding:0 0 16px;border-bottom:2px solid #aac6b4;scroll-margin-top:18px}.experience-entry:last-child{margin-bottom:0;border-bottom:0}
.experience-heading{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:start;gap:6px 13px;padding:12px 0;border-block:1px solid #afc9b3}.experience-heading>*{min-width:0;overflow-wrap:anywhere}.experience-number{display:grid;place-items:center;width:32px;height:32px;border:1px solid #91b58c;background:var(--side-accent);border-radius:50%;font-family:var(--soft);font-size:15px}.experience-company h2{font-size:28px}.experience-job{max-width:230px;text-align:right}.experience-role,.experience-job .role{font-size:16px;font-weight:500;color:#284f75}.experience-time,.experience-job .time{margin:3px 0 0;font-size:13px;color:#45697e}.experience-team{margin-top:5px;padding-left:0;font-size:13px;color:#486983}
.experience-summary{display:grid;grid-template-columns:minmax(0,1fr);gap:12px 22px;align-items:start;margin-block:13px}.experience-summary>*{min-width:0}.experience-intro{max-width:850px;margin:0;font-size:16px;line-height:1.7}.experience-highlights{display:grid;gap:8px;margin:0;padding:2px 0 2px 12px;border-left:2px solid #aac6b4;list-style:none}.experience-highlights li{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 7px;min-width:0;line-height:1.5;overflow-wrap:anywhere}.experience-highlights strong{font-family:var(--soft);font-size:16px;font-weight:500}.experience-highlights span{font-size:12px;color:var(--muted)}
.experience-group{margin:16px 0 8px;padding:8px 10px;border-left:3px solid #6f9d8d;background:#e0efcb;font-size:17px}.experience-tracks{display:grid;grid-template-columns:minmax(0,1fr);gap:0}.experience-track{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;padding:12px 0;border-top:1px solid #b4cdbb}.experience-track>small{padding-top:4px;font-family:var(--soft);font-size:11px;letter-spacing:.07em;color:#51726c}.experience-track>div{min-width:0}.experience-track h3{margin:0 0 5px;font-size:20px}.experience-track p{font-size:16px;line-height:1.7}.experience-track p+p{margin-top:6px}.experience-outputs{display:flex;flex-wrap:wrap;align-items:center;gap:7px 16px;padding:10px 0;border-block:1px solid #b2cab3;font-size:13px}.experience-outputs a{display:inline-flex;align-items:center;min-height:32px;max-width:100%;overflow-wrap:anywhere}.experience-detail .detail-heading{font-size:36px;margin-bottom:16px}
.empty-writing{max-width:780px;margin-block:12px 18px;padding-block:4px 10px}.empty-writing h2{font-size:27px}.empty-writing p{max-width:680px;margin-top:10px;font-size:15px;line-height:1.75}.draft-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:21px 0 28px}.draft-item{position:relative;display:block;min-width:0;padding:20px 17px 18px;border:1px solid #c3c499;background:repeating-linear-gradient(transparent 0 27px,#a8bdb633 27px 28px),#fffbd2;box-shadow:2px 4px 3px #3c695624;transform:rotate(-1deg);text-decoration:none}.draft-item:nth-child(2){background-color:#ffe4e5;transform:rotate(1.4deg)}.draft-item:nth-child(3){background-color:#e8f4cb;transform:rotate(-.8deg)}.draft-item::before{content:"";position:absolute;top:-7px;left:34%;width:61px;height:17px;border:1px solid #aac29d55;background:#e2edb8a6;transform:rotate(-4deg)}.draft-item h3{margin:12px 0 8px;font-size:22px;line-height:1.4}.draft-item p,.draft-item small{font-size:14px;line-height:1.8;color:#4b6765}.status-pill{display:inline-flex;align-items:center;gap:5px;min-height:23px;padding:2px 8px;border:1px solid #9baf80;border-radius:13px;background:#e7f4bc;font-size:11px;line-height:1.4;vertical-align:middle}.template-block{margin-block:18px;padding:18px;border:1px solid #a5b9a6;background:#f4f4d7}.template-block h2:first-child,.template-block h3:first-child{margin-top:0}
.about-grid{display:grid;grid-template-columns:230px minmax(0,1fr);align-items:start;gap:28px;margin-block:16px 22px}.about-portraits{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:22px;padding:4px 8px}.about-portraits>figure{width:fit-content;max-width:100%;min-width:0;padding:5px 5px 7px;border:1px solid #a8b9a5;background:#fffef0;box-shadow:3px 4px 2px #3a665d20;transform:rotate(-2deg)}.about-portraits>figure:nth-child(even){transform:rotate(2deg)}.about-portraits img{width:auto;height:auto;max-width:100%;max-height:220px;margin-inline:auto;object-fit:contain}.about-grid figcaption{margin-top:4px;font-size:12px;line-height:1.4;text-align:center}.about-grid h2{font-size:28px;margin:0 0 12px}.about-grid .about-notes,.about-grid p{font-size:15px;line-height:1.75}.about-grid p{margin:0 0 12px}.about-grid p+p{margin-top:12px}
.about-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px;padding-bottom:8px;border-bottom:1px solid #9abcb0}.about-tabs button{min-height:40px;padding:6px 15px;border:1px solid #88aba8;border-radius:4px 4px 0 0;background:linear-gradient(#ffffe9,#d7e9c8);font-size:15px;line-height:1.5}.about-tabs button[aria-selected="true"]{border-color:#3264ae;background:linear-gradient(#c6eeff,#81b8ed);color:#153d70;font-weight:600;box-shadow:inset 0 -3px #3264ae}.about-tabs button:focus-visible{outline:3px solid #bf1472;outline-offset:3px}.about-notes [role="tabpanel"]{min-width:0}
.skills-list,.interest-list{display:flex;flex-wrap:wrap;gap:7px 14px;margin:14px 0;padding:0;list-style:none}.skills-list li{padding:4px 0;border-bottom:1px solid #a9c4ac;font-size:14px}.photo-gallery{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:start;gap:12px;margin:18px 0 26px}.photo-gallery figure{padding:6px 6px 13px;border:1px solid #acbca6;background:#fffef0;box-shadow:2px 3px 3px #315e5a22}.photo-gallery figure:nth-child(even){transform:rotate(2deg);margin-top:9px}.photo-gallery img{width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;background:#e6eedf}.photo-gallery figcaption{margin-top:6px;font-size:12px;line-height:1.6}.photo-button{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}

/* Compact bottom taskbar, never a second hero. */
#contact{margin:0;border:1px solid #447eb6;border-radius:0 0 10px 10px;background:linear-gradient(#f5ffdf,#c7e7cd 46%,#b2d5ca 47%,#e3f7d4);box-shadow:inset 1px 1px #fbfff0,inset -1px -1px #80acc4;}
.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 16px;padding:7px 15px 4px;min-height:43px}
.contact-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px;min-width:0}.contact-heading h2,.footer-inner>h2{font-family:var(--display);font-size:18px;line-height:1.25}.contact-heading p,.contact-heading small{font-size:11px;color:#486b77}.contact-links{display:flex;align-items:center;flex-wrap:wrap;gap:4px 16px;margin:0;min-width:0;max-width:100%}.contact-links a,.contact-copy{display:inline-flex;align-items:center;min-height:44px;min-width:0;max-width:100%;font-size:12px;overflow-wrap:anywhere}.contact-copy{border:0;padding:4px 0;background:transparent;text-align:left;white-space:normal;user-select:text;-webkit-user-select:text;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.contact-copy:focus-visible{outline:3px solid #bf1472;outline-offset:4px}.contact-note{font-size:11px;line-height:1.4}.footer-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:2px 12px;margin:0;padding:4px 15px 7px;border-top:1px solid #92b6ab;color:#446674;font-size:10px;line-height:1.4}.footer-bottom a{min-height:18px;display:inline-flex;align-items:center}

/* Existing chat and native image dialog keep their IDs and state hooks. */
.bunny-launcher{position:fixed;left:calc(var(--bunny-left) + env(safe-area-inset-left));right:auto;bottom:calc(var(--bunny-bottom) + env(safe-area-inset-bottom));z-index:100;width:62px;height:var(--bunny-height);padding:0;border:0;background:transparent;transition:transform .2s var(--ease)}
.bunny-launcher img{width:62px;height:62px;object-fit:contain;filter:drop-shadow(1px 3px 2px #255e674d)}.bunny-launcher span{position:absolute;left:3px;right:auto;bottom:65px;width:max-content;max-width:165px;padding:4px 9px;border:1px solid #6c9c9e;border-radius:10px 10px 2px 10px;background:#f6ffdb;color:#254d79;font-size:11px;line-height:1.5;box-shadow:1px 2px 2px #2d657b33}.bunny-launcher[aria-expanded="true"] span{display:none}
.chat-panel{position:fixed;z-index:110;left:calc(var(--bunny-left) + env(safe-area-inset-left));right:auto;bottom:calc(var(--bunny-bottom) + var(--bunny-height) + 12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;width:min(360px,calc(100vw - var(--bunny-left) - 12px - env(safe-area-inset-left) - env(safe-area-inset-right)));height:540px;max-height:calc(100vh - var(--bunny-bottom) - var(--bunny-height) - 24px);max-height:calc(100dvh - var(--bunny-bottom) - var(--bunny-height) - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:0;overflow:hidden;border:1px solid #4076af;border-radius:9px 9px 5px 5px;background:#f3fbea;box-shadow:inset 0 0 0 2px #c4e4e3,0 12px 36px #1949794d;font-size:14px;line-height:1.65}
.chat-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:10px;min-height:50px;padding:4px 7px 4px 13px;border-bottom:1px solid #6d9dbc;background:var(--chrome);box-shadow:inset 0 1px #f4ffff}.chat-header h2,.chat-header h3{font-family:var(--soft);font-size:18px;font-weight:700;color:#102f54;text-shadow:0 1px 0 #e7f4ff}.chat-header{background:linear-gradient(#e5f4ff,#a4cefa 48%,#85b8ee 52%,#c4e0fa)}.chat-header button{display:grid;place-items:center;flex-shrink:0;width:40px;height:40px;padding:4px;border:1px solid #a078a4;border-radius:3px;background:linear-gradient(#ffe4ee,#e9a5ce);font-size:20px}.chat-status{flex-shrink:0;padding:5px 13px;border-bottom:1px solid #bdd4c4;color:#4b6c76;font-size:12px;line-height:1.5}.chat-header .chat-status{padding:0;border:0;color:#254e79}
.chat-messages{display:flex;flex:1 1 auto;flex-direction:column;align-items:flex-start;gap:10px;min-height:0;padding:13px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#8eb5b4 #e8f5e1}.chat-message{flex-shrink:0;max-width:92%;padding:9px 11px;border:1px solid #aec5b8;border-radius:9px;white-space:pre-wrap;overflow-wrap:anywhere}.chat-message.assistant{align-self:flex-start;border-bottom-left-radius:2px;background:#e3f2ee}.chat-message.user{align-self:flex-end;border-bottom-right-radius:2px;background:#e7f7ba}.chat-message p+p{margin-top:8px}.chat-message a{font-weight:600}.chat-message pre{max-width:100%;overflow-x:auto;white-space:pre}
.chat-suggestions{display:flex;flex:0 1 auto;flex-wrap:wrap;gap:5px;max-height:92px;min-height:0;padding:6px 12px;overflow-y:auto;overscroll-behavior:contain}.chat-suggestions button,.chat-suggestions a,.chat-shortcuts button,.chat-shortcuts a{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:5px 8px;border:1px solid #a8bca0;border-radius:4px;background:#fffedc;font-size:12px;line-height:1.4;text-decoration:none}.chat-shortcuts{display:flex;flex:0 0 auto;gap:6px;padding:5px 12px;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}.chat-shortcuts>*{flex-shrink:0}
.chat-form{display:flex;flex:0 0 auto;align-items:flex-end;gap:7px;padding:9px 11px 6px;border-top:1px solid #b6cdbb}.chat-form textarea,.chat-form input{display:block;flex:1 1 auto;min-width:0;width:100%;min-height:44px;max-height:96px;padding:9px 10px;resize:none;border:1px solid #94b3aa;border-radius:4px;background:#fffef0;font-size:16px;line-height:1.5}.chat-form textarea::placeholder,.chat-form input::placeholder{color:#577780;opacity:1}.chat-form button{flex:0 0 auto;min-width:46px;min-height:44px;padding:8px 10px;border:1px solid #487ab6;border-radius:4px;background:linear-gradient(#76b5ed,#306ac5);color:#f6ffed;font-size:14px}.chat-disclaimer{flex-shrink:0;padding:0 12px 8px;color:#4d6b75;font-size:11px;line-height:1.5}
/* Bunny 的独立操作区，不改变专辑页面布局。 */
.chat-sources{display:flex;flex-direction:column;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid #a9c7bc;font-size:12px}.chat-sources a{color:#194c78;text-decoration:underline;overflow-wrap:anywhere}
@media(forced-colors:active){.chat-header h2,.chat-header h3{color:CanvasText;text-shadow:none}}
.chat-toolbar{display:flex;align-items:center;gap:6px;flex-shrink:0;padding:4px 12px;border-bottom:1px solid #bdd4c4;background:#edf5d9}
.chat-toolbar button{min-height:36px;padding:3px 7px;border:1px solid #9cb5ab;border-radius:4px;background:#f7f8df;font-size:12px;color:#315b70}
.chat-toolbar span{margin-left:auto;font-size:10px;color:#4d6b75}
.chat-panel button:disabled{opacity:.55;cursor:not-allowed}
.chat-panel :focus-visible{outline:2px solid #345cab;outline-offset:2px}
.chat-message small{display:block;margin-top:7px;padding-top:6px;border-top:1px solid #a9c7bc;color:#48656c;font-size:11px}
.chat-form #chat-stop{background:#f2d7df;color:#61394e;border-color:#ad8198}
.chat-panel [hidden]{display:none!important}
.chat-panel .chat-shortcuts{gap:4px;padding:5px 10px}
.chat-panel .chat-shortcuts a{padding:4px 6px;font-size:11px}
@media(max-height:650px){.chat-panel .chat-suggestions{display:none}.chat-panel .chat-toolbar span{display:none}.chat-panel .chat-disclaimer{max-height:44px;overflow:auto}}
.chat-open{overflow:hidden}.chat-open::after{content:"";position:fixed;inset:0;z-index:90;background:#17398f22;pointer-events:auto}
#image-dialog{position:fixed;inset:0;width:100%;max-width:none;height:100%;height:100dvh;max-height:none;margin:0;padding:66px max(18px,env(safe-area-inset-right)) max(22px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));border:0;background:#e7f5e9f5;color:var(--ink);overflow:auto;overscroll-behavior:contain}
#image-dialog[open]{display:grid;place-items:center}#image-dialog:not([open]){display:none}#image-dialog::backdrop{background:#193962ad}#image-dialog img{width:auto;max-width:100%;max-height:calc(100vh - 106px);max-height:calc(100dvh - 106px - env(safe-area-inset-bottom));object-fit:contain;margin:auto;box-shadow:0 4px 24px #173d7926}.dialog-close{position:fixed;top:max(12px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));z-index:1;min-width:44px;min-height:44px;padding:6px 13px;border:1px solid #7a9caa;border-radius:4px;background:linear-gradient(#fffef1,#ceeac0);color:var(--ink)}
.toast{position:fixed;z-index:200;bottom:calc(20px + env(safe-area-inset-bottom));left:50%;width:max-content;max-width:min(460px,calc(100vw - 170px));padding:9px 15px;border:1px solid #769c90;border-radius:5px;background:#edffcb;color:#254b70;box-shadow:2px 3px 6px #275b6c33;font-size:14px;line-height:1.5;transform:translateX(-50%);overflow-wrap:anywhere}

/* 摄影保留原构图；公开作品使用轻量曲目式入口。 */
.photography-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.photography-grid figure{margin:0}.photography-grid .photo-button{display:block;width:100%;padding:0;border:1px solid #8fb6ac;background:#d7e8cd;border-radius:2px;overflow:hidden}.photography-grid img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain}
.work-selections{margin-top:20px;padding-top:15px;border-top:1px solid #a4bdac}.work-selections h3{font-size:21px}.work-selections .section-head>span{font-size:12px;color:#476986}.work-link-list{display:grid}.work-link{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px solid #b6cdb5;text-decoration:none}.work-index{font-family:var(--soft);font-size:22px;color:#447c91}.work-link small{display:block;font-size:11px;color:#486b83}.work-link strong{display:block;font-size:17px;font-weight:400;margin-top:4px}.work-open{font-size:12px}.work-link:hover{background:#edf5d8}
@media(max-width:720px){.photography-grid{grid-template-columns:1fr;gap:14px}.work-link{grid-template-columns:26px minmax(0,1fr);gap:7px}.work-open{grid-column:2}.work-selections .section-head{align-items:flex-start;flex-direction:column}.work-link strong{font-size:16px}}
@media(hover:hover) and (pointer:fine){
 .desktop-icon:hover{border-color:#e1ffff99;background:#ccefff45}.desktop-icon:hover .folder-icon{transform:rotate(2deg)}
 #main-nav a:hover:not([aria-current="page"]):not(.active){border-color:#abdcff;background:#d6f3ff26}
 .header-contact:hover,.button:hover{filter:brightness(1.06)}.track:hover{background:#f6ffd5;border-color:#aac69c}
 .album-cover:hover{transform:rotate(-.4deg) translateY(-3px);box-shadow:inset 0 0 0 1px #698e9d,2px 2px 0 #f4ffff,5px 10px 13px #224a6540}
 .album-stamp:hover{filter:brightness(1.08)}.album-sticker:hover{background:#ffd8e9}.project-sleeve:hover{transform:translateY(-3px) rotate(-1deg)}
 .project-card h3 a:hover,.text-link:hover,.contact-links a:hover,.contact-copy:hover,.source-link:hover{color:#a32c77}.photo-button:hover img{filter:saturate(1.12)}
 .bunny-launcher:hover{transform:translateY(-3px) rotate(-4deg)}.chat-suggestions button:hover,.chat-shortcuts a:hover{background:#e5f5b9}
}
@media(max-width:1200px){
 .desktop-shell{width:calc(100% - 28px);grid-template-columns:76px minmax(0,1fr);gap:12px}.desktop-top{width:calc(100% - 28px)}.desktop-icon{width:74px}
 .cover-name{font-size:65px}.album-cover{width:77%}.orbit-disc{width:min(290px,calc(100% - 16px));top:79px}.album-stamp{width:80px;height:80px;font-size:14px}
 .nav-bar{gap:9px}#main-nav a{padding-inline:10px}.project-sleeve{grid-template-columns:65px minmax(0,1fr);column-gap:8px;padding:9px 8px 9px 11px}.sleeve-art{width:65px;height:73px}.project-sleeve>strong{font-size:17px}
}
@media(min-width:1101px) and (max-height:850px){
 body[data-page="about"] .page-head{padding-block:12px 10px;margin-bottom:12px}
 body[data-page="about"] .page-head .back-link{min-height:26px;margin-top:3px}
 body[data-page="about"] .about-portraits img{max-height:200px}
}
@media(min-width:721px) and (max-width:1200px){
 .player-main{grid-template-columns:158px minmax(0,1fr)}.album-stage{max-width:500px}.album-cover{max-width:340px}
 .jacket-notes{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);grid-template-rows:repeat(5,auto);gap:12px 24px;border-left:0;border-top:1px solid #acc8b9}.jacket-notes>.eyebrow{grid-column:1;grid-row:1;margin:0}.jacket-notes h2{grid-column:1;grid-row:2}.jacket-copy{grid-column:2;grid-row:1/6}.jacket-copy p{margin:0}.jacket-copy p+p{margin-top:14px}.jacket-notes>.tag-row{grid-column:1;grid-row:3;margin:0}.jacket-notes .mini-polaroids{grid-column:1;grid-row:4;align-self:start;margin-top:6px}.note-signature{grid-column:1;grid-row:5;align-self:start;margin-top:12px}
}
@media(min-width:721px) and (max-width:980px){
 body{--bunny-left:10px}
 .desktop-shell{grid-template-columns:62px minmax(0,1fr);gap:9px;width:calc(100% - 20px)}.desktop-icon{width:60px}.desktop-icon small{font-size:11px}.folder-icon{width:42px;height:30px}
 .nav-bar{flex-wrap:wrap;gap:5px 12px}.wordmark{font-size:14px}#main-nav a{padding-inline:7px}#main-nav a span{font-size:11px}.header-contact{padding-inline:7px;font-size:11px}
 .sleeve-grid{gap:8px}.project-sleeve{grid-template-columns:54px minmax(0,1fr);min-height:112px}.sleeve-art{width:54px;height:68px}.project-sleeve>strong{font-size:16px}.project-sleeve>small{font-size:11px}
 .detail-layout{grid-template-columns:minmax(0,1fr) 180px;gap:18px}.project-grid{gap:13px}.project-card h3{font-size:20px}.footer-inner{flex-wrap:wrap;gap:0 12px}.contact-links{gap:3px 12px}
}
@media(max-width:720px){
 html{scroll-padding-top:12px}body{font-size:15px;--bunny-left:22px;--bunny-bottom:24px;--bunny-height:60px}.desktop-top{width:calc(100% - 20px);padding:6px 0;font-size:9px;gap:8px}.desktop-shell{display:block;width:calc(100% - 16px);margin-bottom:calc(var(--bunny-bottom) + var(--bunny-height) + 48px + env(safe-area-inset-bottom))}.desktop-dock{display:none}.deco-star{width:32px;height:32px}
 .window-title{min-height:28px;padding-left:10px;font-size:10px}.window-controls i{width:22px;height:19px}.nav-bar{display:grid;grid-template-columns:1fr auto;gap:4px 8px;padding:5px 7px 6px}.wordmark{font-size:14px;min-height:26px;display:flex;align-items:center}.header-contact{grid-column:2;grid-row:1;min-height:28px;font-size:11px;padding:3px 9px}.menu-toggle{display:none}
 #main-nav,.site-header.menu-open #main-nav{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;width:100%;margin:0;position:static}#main-nav a{padding:5px 1px;min-height:44px;border-color:#7ab2ee70;background:#d4f3ff0d}#main-nav a span{font-size:11px}#main-nav a small{font-size:12px}.address-bar{padding:4px 9px;font-size:9px;min-height:23px}
 #app{box-shadow:inset 2px 0 #d1eaff,inset -2px 0 #c4e5ff}.wrap{padding-inline:16px}.player-home{padding:24px 9px}.player-main{display:grid;grid-template-columns:minmax(0,1fr);gap:24px}.album-stage{grid-column:1;grid-row:1;min-height:360px;max-width:400px;margin-inline:auto;width:100%}.album-cover{top:13px;left:4px;width:70%;max-width:250px;height:306px;border-width:6px;border-left-width:10px}.album-spine{width:6px}.cover-topline{left:14px;right:8px;top:10px;font-size:8px;letter-spacing:.025em}.cover-name{top:32px;left:13px;font-size:53px;line-height:1}.cover-photo{right:9px;bottom:30px;width:64%;height:165px;padding:3px}.cover-subtitle{left:11px;bottom:36px;font-size:8px}.cover-name span{font-size:16px;margin-top:14px}.cover-bottom{left:14px;right:8px;bottom:7px;font-size:14px}.cover-bottom small,.cover-bottom span{font-size:8px}.orbit-disc{width:min(255px,calc(100% - 8px));top:46px;right:0}.orbit-disc img{width:81px;height:81px;padding:6px}.album-stamp{top:1px;right:0;width:74px;height:74px;font-size:13px;padding:12px 7px}.album-stamp small{font-size:9px}.album-sticker{left:11px;bottom:29px;min-height:32px;padding:5px 12px;font-size:14px;max-width:185px}.album-caption{font-size:9px;left:5px;bottom:2px}
 .liner-sidebar{grid-row:2;display:block;padding:7px;background:linear-gradient(90deg,#c6e4e7,#e7f3d3);border-radius:3px}.liner-label{display:inline-block;font-size:9px;vertical-align:middle}.liner-title{display:inline-block;margin:0 0 5px 8px;vertical-align:middle}.liner-title h2{font-size:15px;text-align:left}.liner-title small{font-size:9px}.bunny-badge{display:none}.track-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}.track{grid-template-columns:14px minmax(0,1fr);gap:0 2px;padding:5px 2px;min-height:46px;background:#f8ffea66}.track b{font-size:12px}.track-index{font-size:9px}.track small{font-size:9px;overflow-wrap:anywhere}.tiny-note{margin:5px 0 0;padding-top:5px;font-size:10px;line-height:1.45}
 .jacket-notes{grid-row:3;display:grid;grid-template-columns:minmax(0,1fr);gap:14px;border-left:0;border-top:1px solid #adcab7}.jacket-notes>.eyebrow{grid-row:1;margin:0}.jacket-notes h2{grid-row:2;font-size:24px;line-height:1.2}.jacket-copy{grid-row:3}.jacket-copy p{margin:0}.jacket-copy p+p{margin-top:14px}.jacket-notes>.tag-row{grid-row:4;margin:0}.mini-polaroids{grid-row:5;margin-top:6px}.note-signature{grid-row:6;align-self:start;margin-top:10px}
 .transport{gap:6px;min-height:67px;margin:7px -4px 0;padding:15px 7px 7px;flex-wrap:wrap}.transport .transport-open{width:40px;height:40px;font-size:18px}.transport .transport-prev,.transport .transport-next{width:30px;height:30px;font-size:13px}.now-playing{padding:4px 7px;min-height:37px}.now-playing strong{font-size:14px}.now-playing small{font-size:8px}.transport .disc-toggle{min-width:65px;min-height:30px;height:30px;font-size:10px;padding:3px 7px}.equalizer{display:none}.progress-track{left:53px;right:10px;top:6px}
 .project-shelf{padding:13px 0 12px}.section-head,.section-heading{gap:7px;margin-bottom:9px}.section-head h2,.section-heading h2{font-size:20px}.section-head small,.section-heading small{font-size:10px}.section-head .text-link,.section-heading .text-link{font-size:11px;min-height:30px}.sleeve-grid{grid-template-columns:1fr;gap:8px}.project-sleeve{grid-template-columns:66px minmax(0,1fr);column-gap:12px;min-height:88px;padding:8px 12px 8px 13px}.sleeve-art{width:66px;height:66px}.project-sleeve>span:not(.sleeve-art){font-size:10px}.project-sleeve>strong{font-size:19px}.project-sleeve>small{font-size:13px}.sleeve-links a,.project-bottom a{min-height:44px}.project-sleeve>strong a{display:inline-flex;align-items:center;min-height:44px}
 .page-head{padding-block:19px 16px;margin-bottom:16px}.page-head h1{font-size:31px}.page-head>p{font-size:15px;line-height:1.75}.page-head .eyebrow{font-size:10px}.project-grid{grid-template-columns:1fr;gap:21px}.project-card h3{font-size:24px}.project-card p{font-size:15px}.project-meta,.project-bottom{font-size:12px}.project-visual{aspect-ratio:16/9}.ace-cover{font-size:43px}.detail-layout{grid-template-columns:1fr;gap:17px}.prose{font-size:16px;line-height:1.75}.prose h2,.case-section>h2{font-size:25px}.prose h3{font-size:21px}.side-note{position:static;padding:12px 0;border-left:0;border-top:1px solid #a3c3af;font-size:14px}.snapshot{gap:8px}.fact-pill{padding-right:3px}.fact-pill+.fact-pill{padding-left:8px}.fact-pill strong{font-size:18px}.fact-pill small,.fact-pill>span{font-size:12px}.case-gallery-grid{grid-template-columns:minmax(0,1fr);gap:16px}.case-image figcaption,.source-note{font-size:12px}.case-nav a{font-size:14px}.notice{font-size:13px}
 .experience-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:14px}.experience-tabs button{min-height:42px;padding:5px 3px;font-size:13px}.experience-heading{grid-template-columns:27px minmax(0,1fr);gap:6px 10px}.experience-heading h2{font-size:25px}.experience-number{width:27px;height:27px;font-size:13px}.experience-job{grid-column:2;max-width:100%;text-align:left}.experience-role,.experience-job .role{font-size:14px}.experience-time,.experience-job .time{margin-left:0;font-size:12px}.experience-team{padding-left:0;font-size:12px}.experience-summary{grid-template-columns:minmax(0,1fr);gap:10px;margin-block:12px}.experience-highlights{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}.experience-track{padding:11px 0;gap:8px}.experience-track h3{font-size:19px}.experience-track p,.experience-intro{font-size:15px;line-height:1.7}.experience-outputs{gap:5px 12px;font-size:12px}
 .empty-writing{margin:10px 0 14px}.empty-writing h2{font-size:25px}.draft-grid{grid-template-columns:1fr;gap:19px;margin-block:18px 25px}.draft-item{padding:17px}.draft-item h3{font-size:23px}.draft-item p{font-size:15px}.about-grid{grid-template-columns:1fr;gap:24px}.about-portraits{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;width:100%;max-width:440px;justify-self:center;padding:8px;margin-block:0}.about-portraits>figure{padding:5px 5px 7px}.about-portraits img{max-height:200px}.about-grid h2{font-size:26px}.photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.photo-gallery figcaption{font-size:12px}
 #contact{padding-left:calc(78px + env(safe-area-inset-left))}
 .footer-inner{display:block;min-height:0;padding:6px 10px 2px}.contact-heading{gap:7px}.contact-heading h2,.footer-inner>h2{font-size:16px}.contact-heading p,.contact-heading small{font-size:10px}.contact-links{gap:2px 13px}.contact-links a,.contact-copy{font-size:11px;min-height:44px}.contact-note{font-size:10px}.footer-bottom{padding:3px 10px 5px;gap:1px 8px;font-size:9px;line-height:1.35}
 .desktop-shell{margin-bottom:42px}
 .bunny-launcher{position:relative;display:block;left:auto;bottom:auto;width:56px;margin:0 0 20px 22px}.bunny-launcher img{width:56px;height:56px}.bunny-launcher span{bottom:58px;font-size:10px;padding:3px 7px;max-width:145px}
 .chat-panel{top:calc(12px + env(safe-area-inset-top));bottom:calc(var(--bunny-bottom) + var(--bunny-height) + 12px + env(safe-area-inset-bottom));left:calc(12px + env(safe-area-inset-left));right:calc(12px + env(safe-area-inset-right));width:auto;height:auto;max-height:none;font-size:15px}.chat-header{min-height:50px}.chat-header button{width:44px;height:44px}.chat-messages{min-height:0;padding:12px}.chat-message{max-width:94%;padding:9px 10px}.chat-suggestions{max-height:94px}.chat-suggestions button,.chat-suggestions a,.chat-shortcuts button,.chat-shortcuts a{font-size:13px;min-height:40px}.chat-form{padding:8px 10px 6px}.chat-form button{font-size:14px}.chat-disclaimer{font-size:11px}.toast{bottom:calc(85px + env(safe-area-inset-bottom));max-width:calc(100vw - 32px);font-size:14px}
}
@media(max-width:380px){
 .desktop-shell{width:calc(100% - 10px)}.desktop-top{font-size:8px;letter-spacing:0}.window-title{font-size:9px}.window-controls i{width:20px}.player-home{padding-inline:7px}.nav-bar{padding-inline:5px}#main-nav a span{font-size:10px}#main-nav a small{font-size:11px}.address-bar{font-size:8px}.album-stage{min-height:350px}.album-cover{width:72%;height:296px;left:2px}.cover-name{font-size:48px}.cover-photo{height:160px}.cover-bottom{font-size:12px}.cover-bottom small,.cover-bottom span{font-size:7px}.orbit-disc{width:min(232px,calc(100% - 8px));top:54px}.album-stamp{width:66px;height:66px;font-size:12px}.album-stamp small{font-size:8px}.album-sticker{bottom:30px;font-size:13px}.track{grid-template-columns:12px minmax(0,1fr)}.track b{font-size:11px}.track small{font-size:8px}.transport{gap:4px}.transport .transport-prev,.transport .transport-next{width:27px;height:29px}.transport .transport-open{width:35px;height:35px}.transport .disc-toggle{min-width:59px;padding-inline:5px;font-size:9px}.now-playing{padding-inline:5px}.now-playing strong{font-size:12px}.now-playing small{font-size:7px}.wrap{padding-inline:13px}.page-head h1{font-size:28px}.experience-tabs button{font-size:12px}.snapshot{grid-template-columns:1fr;gap:0}.fact-pill,.fact-pill+.fact-pill{padding:9px 0;border-left:0}.fact-pill+.fact-pill{border-top:1px solid #b5cbb8}.fact-pill strong{font-size:20px}.fact-pill>span,.fact-pill small{font-size:13px}.contact-links{gap:2px 9px}.contact-links a,.contact-copy{font-size:10px}.footer-bottom{font-size:8px}.chat-suggestions{max-height:86px}
}
@media(max-height:560px){
 .bunny-launcher[aria-expanded="true"]{visibility:hidden}.chat-panel{top:calc(8px + env(safe-area-inset-top));bottom:calc(8px + env(safe-area-inset-bottom));height:auto;max-height:calc(100dvh - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.chat-header{min-height:44px;padding-block:2px}.chat-status{padding-block:2px}.chat-suggestions{max-height:48px;padding-block:3px}.chat-shortcuts{padding-block:3px}.chat-form{padding-block:5px}.chat-disclaimer{padding-bottom:5px;font-size:10px}.chat-messages{padding-block:8px}
}
/* 轻量实体交互：只改变绘制效果，不改变布局尺寸。 */
.album-cover,.desktop-icon,.photo-button,.bunny-launcher{touch-action:manipulation}
.album-cover:active,.desktop-icon:active,.photo-button:active,.bunny-launcher:active,.is-touch-pressed{opacity:.86}
@media(prefers-reduced-motion:no-preference){
 .album-cover::before{content:"";position:absolute;inset:-30% -65%;z-index:5;pointer-events:none;background:linear-gradient(110deg,transparent 42%,#f4ffff08 46%,#f4ffff75 50%,#f4ffff08 54%,transparent 58%);opacity:0;transform:translateX(-65%)}
 .folder-icon{transition:transform .22s cubic-bezier(.22,1,.36,1)}
 .folder-icon::after{transform-origin:bottom left;transition:transform .24s cubic-bezier(.22,1,.36,1)}
 .about-portraits>figure,.photo-gallery figure,.photography-grid figure{position:relative;transition:transform .24s cubic-bezier(.22,1,.36,1),box-shadow .24s ease}
 .bunny-launcher img{transform-origin:50% 85%;transition:transform .22s cubic-bezier(.22,1,.36,1)}
 #app>*{animation:inner-page-arrive .22s cubic-bezier(.22,1,.36,1) both}
 .album-stage{animation:none}
 .album-cover:focus-visible::before{animation:sleeve-light .65s ease-out}
 .desktop-icon:focus-visible .folder-icon::after{transform:skewX(-22deg) scaleY(.86)}
 .about-portraits>figure:has(:focus-visible),.photo-gallery figure:has(:focus-visible),.photography-grid figure:has(:focus-visible){transform:translateY(-4px) rotate(0deg);z-index:1;box-shadow:3px 8px 12px #315e5a28}
 .bunny-launcher:focus-visible img{transform:rotate(9deg)}
 .desktop-icon:active .folder-icon{transform:translateY(2px) rotate(0deg) scale(.97)}
 .photo-button:active{transform:scale(.985)}
 .bunny-launcher:active img{transform:rotate(-5deg) scale(.96)}
 @media(hover:hover) and (pointer:fine){
  .album-cover:hover::before{animation:sleeve-light .65s ease-out}
  .desktop-icon:hover .folder-icon::after{transform:skewX(-22deg) scaleY(.86)}
  .about-portraits>figure:hover,.photo-gallery figure:hover,.photography-grid figure:hover{transform:translateY(-4px) rotate(0deg);z-index:1;box-shadow:3px 8px 12px #315e5a28}
  .bunny-launcher:hover{transform:none}
  .bunny-launcher:hover img{transform:rotate(9deg)}
 }
}
@keyframes sleeve-light{0%{opacity:0;transform:translateX(-65%)}20%{opacity:.8}75%{opacity:.65}100%{opacity:0;transform:translateX(65%)}}
@keyframes inner-page-arrive{from{opacity:.45;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
/* 长文内页：沿用专辑配色，给正文独立的阅读节奏。 */
.reading-page{padding-top:clamp(28px,5vw,64px);padding-bottom:64px}.reading-header{max-width:850px;margin:0 auto;padding-bottom:32px;border-bottom:1px solid #aec5b8}.reading-header .back-link{display:block;margin-bottom:30px}.reading-header .eyebrow{display:block;color:#376576}.reading-header h1{font-size:clamp(28px,3.8vw,46px);line-height:1.45;letter-spacing:.01em;margin:14px 0 20px;color:#20475b;text-wrap:balance}.reading-meta{font-size:12px;line-height:1.8;color:#476774}
.reading-layout{display:grid;grid-template-columns:170px minmax(0,680px);gap:36px;max-width:886px;margin:0 auto}.reading-index{align-self:start;position:sticky;top:28px;padding-top:44px}.reading-index>span{font-size:11px;color:#476774;letter-spacing:.15em}.reading-index button{display:flex;gap:8px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid #c7d7c5;color:#355c6c;padding:13px 0;font:inherit;font-size:12px;line-height:1.7;cursor:pointer}.reading-index small{color:#527c72}.reading-index button:hover{color:#163f70}.reading-index button:focus-visible{outline:2px solid #345cab;outline-offset:3px}
.reading-body{min-width:0;color:#274654;font-size:17px;line-height:2.05;overflow-wrap:anywhere}.reading-body h2{font-size:22px;line-height:1.6;margin:44px 0 24px;scroll-margin-top:30px;color:#224e62}.reading-body h2 small{display:block;font-size:11px;color:#507467;letter-spacing:.14em;margin-bottom:8px}.reading-body p{margin:0 0 1.6em}.reading-body .reading-ending{font-size:21px;color:#1e5261;margin:36px 0 48px;font-weight:600}.reading-footer{display:flex;justify-content:space-between;gap:16px;border-top:1px solid #aec5b8;padding-top:22px;font-size:12px}.reading-footer>span{letter-spacing:.12em;color:#55756c}
@media(max-width:760px){.reading-layout{display:block}.reading-index{position:static;padding-top:22px;display:flex;flex-wrap:wrap;gap:6px 16px}.reading-index>span{width:100%}.reading-index button{width:auto;font-size:11px;padding:8px 0}.reading-body{font-size:16px;line-height:2}.reading-body h2{font-size:20px;margin-top:36px}.reading-header{padding-bottom:20px}.reading-footer{flex-wrap:wrap}}
@media(forced-colors:active){
 .site-header,#app,#contact,.album-cover,.orbit-disc,.project-sleeve,.project-visual,.button,.chat-panel,.bunny-launcher span,.toast{border:1px solid CanvasText;box-shadow:none}.nav-bar,.window-title,.chat-header{background:Canvas;color:CanvasText}.folder-icon,.folder-icon::after{background:Canvas;border-color:CanvasText}.album-stamp{clip-path:none;border:1px solid CanvasText}.track.active,#main-nav a[aria-current="page"]{outline:2px solid Highlight}:focus-visible{outline-color:Highlight}.deco-star{display:none}
}
