@import"https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600&family=Noto+Sans+SC:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,500;0,600;1,500;1,600&display=swap";:root{--bg:#f7f9fc;--ink:#0b1226;--blue:#1b90d6;--cyan:#56c2e8;--ice:#d8f0f9;--muted:rgba(11,18,38,.6);--rule:rgba(11,18,38,.14);--serif:"Geist","Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;--sans:"Geist","Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;--display:"Playfair Display","Noto Sans SC",Georgia,serif}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{overflow-x:clip}body{margin:0;color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;background:radial-gradient(1100px 560px at 88% -8%,rgba(92,184,240,.12),transparent 60%),radial-gradient(880px 520px at -12% 32%,rgba(27,144,214,.07),transparent 55%),var(--bg)}body:after{content:"";position:fixed;inset:0;z-index:2;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.04}a{color:inherit;text-decoration:none}.shell{width:min(1680px,calc(100% - 64px));margin-inline:auto}.site-header{width:100%;font-size:14px}.header-inner{display:flex;align-items:center;justify-content:space-between;padding:28px 0}.brand{font-weight:500;letter-spacing:.16em;display:inline-flex;align-items:center;gap:8px}.brand .brand-cloud{color:var(--blue);flex:none}nav{display:flex;gap:36px;align-items:center}.lang-toggle{font:inherit;font-size:11px;letter-spacing:.1em;cursor:pointer;border:1px solid var(--rule);border-radius:999px;background:transparent;color:var(--muted);padding:4px 13px;transition:all .2s ease}.lang-toggle:hover{border-color:var(--blue);color:var(--blue)}nav a{position:relative}nav a:after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:1px;background:var(--blue);transition:.2s}nav a:hover{color:var(--blue)}nav a:hover:after{right:0}.hero{min-height:690px;display:grid;grid-template-columns:1.08fr .92fr;gap:70px;align-items:center;padding:62px 0 76px}.eyebrow{font-size:11px;letter-spacing:.34em;color:var(--blue);margin:0 0 26px}.hero h1,.about-page h1{font-family:var(--serif);font-weight:600;font-size:clamp(54px,6vw,86px);line-height:.98;letter-spacing:-.035em;margin:0}.lede{max-width:600px;font-size:19px;line-height:1.55;color:#0b1226b8;margin:34px 0}.text-link{font-size:12px;letter-spacing:.22em;display:flex;align-items:center;gap:16px;width:max-content;color:var(--blue)}.text-link span{width:48px;height:1px;background:var(--blue)}.art-panel{height:430px;position:relative;overflow:hidden;background:linear-gradient(to bottom,#d8f0f9,#56c2e8 45%,#1b90d6 72%,#0b1226)}.art-panel.has-image{background-size:cover;background-position:center;background-repeat:no-repeat;background-color:var(--blue)}.art-panel.has-image:before{content:none}.hero-full{width:100vw;margin-left:calc(50% - 50vw);min-height:46vh;display:flex;align-items:center;position:relative;background-size:cover;background-position:center;background-repeat:no-repeat;background-color:var(--blue);padding:0}.hero-full:before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,#f7f9fcb8,#f7f9fc6b 34%,#f7f9fc1f 58%,#f7f9fc00 76%)}.hero-full .hero-inner{position:relative;width:min(1680px,calc(100% - 64px));margin-inline:auto;padding:76px 0}.hero-full .hero-copy{max-width:640px}.hero-full h1{color:var(--ink);text-shadow:0 1px 2px rgba(255,255,255,.9),0 2px 24px rgba(255,255,255,.85),0 0 48px rgba(255,255,255,.6);font-size:clamp(44px,5vw,68px);line-height:1.06;letter-spacing:-.022em}.hero-full .lede{color:#0b1226d9;font-size:17px;max-width:500px;margin:24px 0 28px;text-shadow:0 1px 12px rgba(255,255,255,.8)}.hero-full .eyebrow{color:var(--blue);font-size:12px;margin-bottom:20px}.section-block{scroll-margin-top:32px}.hero-full .text-link{color:var(--blue)}.hero-full .text-link span{background:var(--blue)}.hero-skills{display:flex;flex-wrap:wrap;gap:10px;margin-top:46px}.hero-skills span{font-size:11px;font-weight:500;letter-spacing:.1em;padding:7px 16px 8px;border-radius:999px;color:var(--blue);border:1px solid rgba(27,144,214,.35);background:#ffffffad;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}html[lang=zh-CN] .hero-skills span{letter-spacing:.05em}.hero-full .art-caption{position:absolute;z-index:2;bottom:30px;font-size:13px;font-weight:400;letter-spacing:.22em;line-height:1.5;color:#0b12268c;white-space:nowrap}.hero-full .art-caption.left{left:26px;right:auto;top:auto}.hero-full .art-caption.right{right:26px}.art-panel:before{content:"";position:absolute;inset:auto -10% 28%;height:30%;background:radial-gradient(ellipse at 25% 100%,#1b90d6 0 42%,transparent 43%),radial-gradient(ellipse at 52% 100%,#0b1226 0 46%,transparent 47%),radial-gradient(ellipse at 80% 100%,#56c2e8 0 40%,transparent 41%);opacity:.82}.moon{position:absolute;width:116px;height:116px;border-radius:50%;right:24%;top:22%;background:radial-gradient(circle at 40% 35%,#fff 0 9%,#eaf8fd 55%,#b8e6f5);-webkit-mask:radial-gradient(circle at 72% 30%,transparent 0 46%,#000 47%);mask:radial-gradient(circle at 72% 30%,transparent 0 46%,#000 47%);opacity:.95;filter:drop-shadow(0 0 18px rgba(202,240,248,.55))}.silhouette{position:absolute;bottom:0;left:46%;width:105px;height:200px;background:linear-gradient(#0b1226,#02033f);border-radius:50px 50px 10px 10px}.silhouette:before{content:"";position:absolute;width:63px;height:63px;border-radius:50%;background:#0b1226;top:-32px;left:20px}.art-caption{position:absolute;color:#fff;font-size:19px;font-weight:500;line-height:1.65;letter-spacing:.18em;text-shadow:0 2px 6px rgba(11,18,38,.55),0 4px 22px rgba(11,18,38,.45)}.art-caption.left{left:22px;top:144px}.art-caption.right{right:20px;bottom:24px;text-align:left}.section-block{border-top:1px solid var(--rule);padding:44px 0 100px}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:40px}.section-head>h2{display:flex;align-items:baseline;gap:22px;margin:0;font-weight:400}.section-head>h2 span:first-child{font-family:var(--display);font-style:italic;font-size:46px;font-weight:500;letter-spacing:.04em;color:var(--blue);line-height:1}.section-head>h2 span:last-child{font-family:var(--serif);font-size:30px;font-weight:600;letter-spacing:.05em;color:var(--ink)}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}.thumb{aspect-ratio:1.72/1;margin-bottom:16px;background:var(--ice);border-radius:12px;overflow:hidden;transition:box-shadow .4s cubic-bezier(.22,1,.36,1)}.work-card:hover .thumb{box-shadow:0 20px 44px #0b122629}.scene-a{background-color:#0a1a3a;background-size:cover;background-position:center;background-repeat:no-repeat}.scene-b{background:linear-gradient(110deg,#0b1226 0 32%,#1b90d6 33% 43%,#d8f0f9 44% 60%,#56c2e8 61%)}.scene-c{background-color:#1a1a1a;background-size:cover;background-position:center;background-repeat:no-repeat}.scene-shelter{background-color:#5a189a;background-size:cover;background-position:center;background-repeat:no-repeat}.scene-goobo{background-color:#0a4d8f;background-size:cover;background-position:center 15%;background-repeat:no-repeat}.lab-b,.lab-c{background:var(--blue)}.lab-paige{position:relative;background-color:#f2c3d5}.lab-paige:before{content:"";position:absolute;inset:0;background-image:url(/project-paige.jpg);background-size:cover;background-position:center 0%;background-repeat:no-repeat;transform-origin:50% 0;transition:transform .6s cubic-bezier(.22,1,.36,1)}.work-card:hover .lab-paige:before{transform:scale(1.06)}#lab .thumb{display:flex;align-items:center;justify-content:center}.thumb-soon{color:#ffffffb8;font-size:11px;font-weight:500;letter-spacing:.34em;text-transform:uppercase;padding-left:.34em}.lab-paige .thumb-soon{position:absolute;top:14px;left:14px;padding:5px 12px 6px 13px;border-radius:999px;background:#0b12266b;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fffffff0}html[lang=zh-CN] .thumb-soon{letter-spacing:.3em;padding-left:.3em}#work .thumb,#library .thumb{position:relative;overflow:hidden}#work .thumb:after,#library .thumb:after{content:attr(data-title);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;text-align:center;background:linear-gradient(#0b12268c,#1b90d6d9);color:#fff;font-family:var(--serif);font-size:24px;font-weight:500;letter-spacing:.02em;opacity:0;transition:opacity .28s ease}#work .work-card:hover .thumb:after,#library .work-card:hover .thumb:after{opacity:1}.card-line{display:grid;grid-template-columns:auto 1fr auto;gap:15px;align-items:center}.card-line h3{font-family:var(--serif);font-size:21px;font-weight:500;margin:0}.card-line span{font-size:13px;color:var(--muted)}.work-card p{font-size:13px;color:#0b12268c;margin:7px 0 0;letter-spacing:.03em}.card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:11px}.pill{display:inline-block;padding:5px 14px 6px;border-radius:999px;background:#1b90d60f;border:1px solid rgba(27,144,214,.22);color:var(--blue);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;transition:background .25s ease,border-color .25s ease}.work-card:hover .pill{background:#1b90d61c;border-color:#1b90d666}.pill-lang{background:#22a87612;border-color:#22a87647;color:#1f9d6b}.work-card:hover .pill-lang{background:#22a87621;border-color:#22a87673}.pill-status{background:#e8962c14;border-color:#e8962c4d;color:#c07a16}.work-card:hover .pill-status{background:#e8962c24;border-color:#e8962c80}.card-meta .meta{font-size:12px;color:#0b122673;letter-spacing:.05em}html[lang=zh-CN] .pill{letter-spacing:.05em}.lib-cover{background-color:var(--ice);background-size:cover;background-position:center;background-repeat:no-repeat}.work-card .bio{font-size:14px;line-height:1.7;color:#0b1226ad;margin:8px 0 0;letter-spacing:0}.work-card.is-hidden{display:none}.library-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}.filter-btn{font:inherit;font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;padding:6px 15px;border-radius:999px;border:1px solid var(--rule);background:transparent;color:var(--muted);cursor:pointer;transition:all .2s ease}.filter-btn:hover{border-color:var(--blue);color:var(--blue)}.filter-btn.is-active{background:var(--blue);border-color:var(--blue);color:#fff}.tag{display:inline-block;margin-right:10px;padding:3px 11px 4px;background:#1b90d60f;border:1px solid rgba(27,144,214,.22);color:var(--blue);border-radius:999px;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;vertical-align:1px}.status{display:inline-block;margin:5px 0 2px 7px;padding:2px 10px 3px;border-radius:999px;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;vertical-align:1px}.status.is-reading{background:var(--blue);color:#fff}.status.is-read{background:transparent;border:1px solid var(--rule);color:var(--muted)}html[lang=zh-CN] .status{letter-spacing:.04em}.footer{border-top:1px solid var(--rule);padding:30px 0 42px;margin-top:20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;font-size:13px;color:#0b1226a6}.footer div,.footer nav{display:flex;gap:28px}.footer a:hover{color:var(--blue)}.blog-list{display:flex;flex-direction:column;border-top:1px solid var(--rule)}.blog-post{border-bottom:1px solid var(--rule)}.blog-link{display:grid;grid-template-columns:130px auto minmax(0,1.2fr) minmax(0,2fr);align-items:baseline;gap:28px;padding:26px 8px;transition:padding .3s cubic-bezier(.22,1,.36,1),background .3s ease}.blog-link:hover{background:var(--ice);padding-left:18px}.blog-date{grid-column:1;grid-row:1;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.blog-title{grid-column:3;grid-row:1;font-family:var(--serif);font-size:22px;font-weight:500;margin:0;color:var(--ink);overflow-wrap:anywhere}.blog-excerpt{grid-column:4;grid-row:1;font-size:14px;line-height:1.7;color:#0b122699;margin:0;letter-spacing:.01em}.blog-more{grid-column:4;grid-row:1;font-family:var(--serif);font-size:22px;color:var(--blue);transition:transform .3s ease;justify-self:end}.blog-link:hover .blog-more{transform:translate(4px)}.blog-thumb{grid-column:2;grid-row:1;width:150px;height:95px;object-fit:cover;border-radius:10px;border:1px solid var(--rule);justify-self:start;align-self:center}.blog-link:not(:has(.blog-thumb)){grid-template-columns:130px minmax(0,1.2fr) minmax(0,2fr) auto}.blog-link:not(:has(.blog-thumb)) .blog-date,.blog-link:not(:has(.blog-thumb)) .blog-title,.blog-link:not(:has(.blog-thumb)) .blog-excerpt,.blog-link:not(:has(.blog-thumb)) .blog-more{grid-column:auto;grid-row:auto}@media(max-width:640px){.blog-link{grid-template-columns:1fr;gap:8px;padding:20px 8px}.blog-date,.blog-title,.blog-excerpt,.blog-more,.blog-thumb{grid-column:auto;grid-row:auto}.blog-thumb{width:100%;height:170px;order:-1;margin-bottom:6px}.blog-more{display:none}}.blog-article{max-width:760px;margin:0 auto;padding:70px 0 110px;min-height:70vh}.blog-article .back{display:inline-block;margin-bottom:34px}.blog-article .blog-date{display:block;margin-bottom:18px}.blog-article-title{font-family:var(--serif);font-size:clamp(32px,4.4vw,50px);font-weight:500;line-height:1.12;letter-spacing:-.02em;margin:0 0 20px}.blog-article-cover{width:100%;max-height:420px;object-fit:cover;border-radius:14px;margin:0 0 28px;border:1px solid var(--rule)}.blog-article-excerpt{font-size:18px;line-height:1.7;color:#0b12269e;margin:0 0 40px}.blog-article-body{font-size:16px;line-height:1.85;color:#0b1226d1}.blog-article-body .blog-inline-img{display:block;max-width:100%;height:auto;border-radius:12px;margin:24px auto;border:1px solid var(--rule)}.blog-article-body h2{font-family:var(--serif);font-size:26px;font-weight:500;margin:44px 0 14px;color:var(--ink)}.blog-article-body h3{font-size:20px;font-weight:600;margin:34px 0 12px;color:var(--ink)}.blog-article-body p{margin:0 0 18px}.blog-article-body ul,.blog-article-body ol{margin:0 0 18px;padding-left:24px}.blog-article-body li{margin:6px 0}.blog-article-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:var(--ice);padding:2px 6px;border-radius:5px}.blog-article-body strong{color:var(--ink);font-weight:600}.about-page{min-height:75vh;padding:70px 0 90px;max-width:1160px}.about-hero{display:grid;grid-template-columns:250px 1fr;gap:52px;align-items:start}.about-hero-left .about-avatar{margin:0 0 20px}.about-hero-left .about-role{font-size:15px;line-height:1.55}.about-hero .about-headline{font-size:clamp(28px,3.9vw,42px);margin:4px 0 0}.about-hero .about-bio{margin-top:24px}.about-hero .about-bio p{font-size:16px}@media(max-width:760px){.about-hero{grid-template-columns:1fr;gap:30px}}.about-avatar{width:132px;height:132px;border-radius:50%;object-fit:cover;display:block;margin:0 0 22px;border:1px solid var(--rule);box-shadow:0 4px 18px #0b122614}.about-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}.about-tags>span{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--blue);border:1px solid rgba(27,144,214,.35);border-radius:999px;padding:7px 14px;display:inline-flex;align-items:center;gap:7px}.about-tags>span>span{border:0;padding:0;display:inline}.about-tags svg{width:14px;height:14px;flex:none}.about-role{font-family:var(--sans);font-size:16.5px;color:#5a7186;margin:0}.about-meta{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-top:12px;font-family:var(--sans);font-size:13px;color:var(--muted)}.about-meta .loc{display:inline-flex;align-items:center;gap:6px}.about-meta svg{width:15px;height:15px;color:var(--blue);flex:none}.about-meta .sep{width:1px;height:15px;background:var(--rule)}.about-meta a{color:var(--muted);display:inline-flex;transition:color .2s}.about-meta a:hover{color:var(--blue)}.about-headline{font-family:var(--sans);font-size:clamp(32px,4.6vw,46px);font-weight:700;letter-spacing:-.02em;line-height:1.15;color:var(--ink);margin:46px 0 0}.about-pending{font-family:var(--sans);font-size:14px;color:var(--muted);font-style:italic;margin:14px 0 0}.about-now-lede{font-size:16px;line-height:1.6;color:#0b1226b8;margin:12px 0 0;max-width:640px}.about-tools{font-size:15px;line-height:1.7;color:#0b1226b8;margin:12px 0 0}.about-page h1{font-family:var(--sans);font-size:31px;font-weight:700;line-height:1.2;letter-spacing:-.01em;margin:0 0 4px}.about-bio{margin-top:30px;max-width:640px}.about-bio p{font-size:17px;line-height:1.75;color:#0b1226b8;margin:0 0 18px}.about-block{margin-top:64px}.about-h2{font-family:var(--serif);font-size:13px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);margin:0 0 6px}.about-list{list-style:none;margin:0;padding:0}.about-list li{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:16px 0;border-bottom:1px solid var(--rule);font-family:var(--serif);font-size:17px;font-weight:500}.about-list li span:last-child{font-family:var(--sans);font-size:13px;font-weight:400;color:var(--muted)}.about-caps{display:grid;grid-template-columns:1fr 1fr;gap:2px 64px;background:var(--ice);border-radius:14px;padding:20px 28px;margin-top:14px}.about-caps li{border-bottom:none;padding:9px 0;font-size:15px}.about-caps li span:last-child{font-size:12.5px;color:#0b12269e}.about-contact{display:flex;flex-wrap:wrap;gap:12px 32px;margin-top:6px}.about-contact a{font-size:15px;font-weight:500;color:var(--ink);border-bottom:1px solid rgba(27,144,214,.35);padding-bottom:2px;transition:color .2s,border-color .2s}.about-contact a:hover{color:var(--blue);border-color:var(--blue)}.about-timeline{margin-top:14px}.about-timeline li{flex-direction:column;align-items:flex-start;gap:5px;padding:14px 0}.tl-item{font-family:var(--serif);font-size:16px;font-weight:500;line-height:1.4}.tl-meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}.tl-meta em{font-style:normal;font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.08em;color:var(--blue);text-transform:uppercase}.tl-meta{font-family:var(--sans);font-size:12.5px;color:var(--muted)}.about-h3{font-family:var(--serif);font-size:15px;font-weight:600;color:var(--ink);margin:22px 0 0;padding-bottom:6px;border-bottom:1px solid var(--rule)}.about-journey{width:100%;height:auto;display:block;border:1px solid var(--rule);border-radius:14px}.about-filters{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 6px}.about-fgroup{display:none}.about-fgroup.is-active{display:block}.about-divider{height:1px;background:var(--rule);margin:56px 0 0;border:0}.about-practice-label{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin:0 0 18px}.about-timeline li.is-solo{background:var(--ice);border:1px solid rgba(27,144,214,.18);border-radius:12px;padding:16px 18px;margin-bottom:8px}.about-timeline li.is-solo .tl-item{font-size:17px}.about-timeline li.is-solo .tl-meta em{color:var(--blue);font-weight:700}.about-cards{margin-top:10px}.tl-outlet{font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blue);margin-bottom:2px}.about-now{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.about-now a{display:flex;flex-direction:column;gap:3px;background:var(--ice);border:1px solid transparent;border-radius:12px;padding:16px 18px;transition:border-color .2s,transform .2s}.about-now a:hover{border-color:#1b90d666;transform:translateY(-2px)}.about-now a span:first-child{font-family:var(--serif);font-size:16px;font-weight:600;color:var(--ink)}.about-now a span:nth-child(2){font-family:var(--sans);font-size:12.5px;color:var(--muted)}.about-now a span:last-child{font-family:var(--sans);font-size:14px;color:var(--blue);margin-top:6px}@media(max-width:640px){.about-caps,.about-now{grid-template-columns:1fr}}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--ice);color:var(--ink)}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:2px}html[lang=zh-CN] .hero h1,html[lang=zh-CN] .about-page h1,html[lang=zh-CN] .hero-full h1{line-height:1.18;letter-spacing:0}html[lang=zh-CN] .lede{line-height:1.75}html[lang=zh-CN] .eyebrow,html[lang=zh-CN] .text-link{letter-spacing:.12em}html[lang=zh-CN] .filter-btn,html[lang=zh-CN] .tag{letter-spacing:.06em}html[lang=zh-CN] .art-caption{letter-spacing:.16em}html[lang=zh-CN] .bio{line-height:1.85}.site-header{position:sticky;top:0;z-index:50;background:#f7f9fcd1;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(11,18,38,.06)}.work-card{transition:transform .35s cubic-bezier(.22,1,.36,1)}.work-card:hover{transform:translateY(-4px)}.card-line span:last-child{transition:transform .25s ease,color .25s ease}.work-card:hover .card-line span:last-child{transform:translate(4px);color:var(--blue)}.hero-full .hero-copy{animation:heroIn .9s cubic-bezier(.22,1,.36,1) both}.hero-full .art-caption{animation:fadeIn 1.2s .4s ease both}@keyframes heroIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1)}.reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.hero-full .hero-copy,.hero-full .art-caption{animation:none}}.calendar-page{min-height:75vh;padding:70px 0 90px;max-width:960px}.calendar-page .eyebrow{margin-bottom:24px}.calendar-page h1{font-family:var(--serif);font-weight:600;font-size:clamp(34px,4vw,52px);line-height:1.12;letter-spacing:-.02em;margin:0}.cal-lede{margin-top:20px;font-size:17px;line-height:1.75;color:#0b1226b8;max-width:620px}.cal-list{margin-top:56px;border-top:1px solid var(--rule)}.cal-item{display:grid;grid-template-columns:230px 1fr;gap:30px;padding:32px 0;border-bottom:1px solid var(--rule);align-items:start}.cal-thumb{display:block;aspect-ratio:16/10;border-radius:12px;overflow:hidden;border:1px solid var(--rule);background:var(--ice)}.cal-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s cubic-bezier(.22,1,.36,1)}.cal-item:hover .cal-thumb img{transform:scale(1.05)}.cal-body{min-width:0}.cal-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.cal-when{display:flex;align-items:baseline;gap:9px}.cal-month{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.2em;color:var(--blue);text-transform:uppercase}.cal-day{font-family:var(--serif);font-size:27px;font-weight:600;line-height:1;color:var(--ink)}.cal-year{font-family:var(--sans);font-size:13px;color:var(--muted);letter-spacing:.04em}.cal-badge{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.14em;padding:5px 13px;border-radius:999px;border:1px solid var(--blue);color:var(--blue);white-space:nowrap}.cal-badge.is-done{background:var(--ice);border-color:transparent;color:#0b12269e}.cal-item.is-upcoming .cal-badge{background:var(--blue);color:#fff}.cal-name{font-family:var(--serif);font-size:24px;font-weight:500;margin:10px 0 0;color:var(--ink)}.cal-place{margin-top:6px;font-size:14px;color:var(--muted);letter-spacing:.02em}.cal-desc{margin-top:10px;font-size:15px;line-height:1.75;color:#0b1226b8}.cal-visit{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-size:13px;font-weight:500;color:var(--blue);border-bottom:1px solid rgba(27,144,214,.35);padding-bottom:2px;transition:color .2s,border-color .2s}.cal-visit:hover{color:#0f6da8;border-color:#0f6da8}@media(max-width:640px){.cal-item{grid-template-columns:1fr;gap:16px;padding:28px 0}.cal-thumb{aspect-ratio:16/9}.calendar-page h1{font-size:32px}.cal-name{font-size:21px}}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0b122638;border-radius:999px;border:2px solid #f7f9fc}::-webkit-scrollbar-thumb:hover{background:#0b122666}.cursor-ring{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;width:14px;height:14px;border-radius:50%;background:#1b90d6bf;opacity:0;transition:width .22s ease,height .22s ease,opacity .3s ease,background .22s ease}.cursor-ring.is-visible{opacity:1}.cursor-ring.is-hover{width:26px;height:26px;background:#5cb8f073}@media(hover:hover)and (pointer:fine){body,a,button,.work-card{cursor:none}}@media(hover:none),(pointer:coarse){.cursor-ring{display:none}}@media(max-width:1024px){.card-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:900px){.hero{grid-template-columns:1fr;gap:35px;padding-top:40px}.art-panel{height:380px}}@media(max-width:640px){.shell{width:calc(100% - 34px)}.card-grid{grid-template-columns:1fr}.header-inner{padding:20px 0}nav{gap:16px;font-size:12px}.hero{min-height:auto;padding:70px 0}.hero-full{min-height:50vh;padding:0}.hero-full .hero-inner{padding:56px 0}.hero-full .art-caption{font-size:11px;letter-spacing:.14em}.hero-full .art-caption.right{top:24px;bottom:auto}.hero h1{font-size:49px}.about-page h1{font-size:32px}.hero-full h1{font-size:36px}.hero-full .lede{font-size:16px}.lede{font-size:17px}.art-panel{height:320px}.section-block{padding-bottom:58px}.section-head>h2{gap:14px}.section-head>h2 span:first-child{font-size:32px}.section-head>h2 span:last-child{font-size:22px}}
