@font-face{font-family:Tears;src:url(/fonts/tearsfont-1.0.otf)format("opentype");font-display:swap}html{scroll-behavior:smooth}:root{--paper:#f4efe4;--paper2:#ebe4d5;--card:#fbf8f0;--ink:#3c3b36;--ink2:#7c766a;--line:#e2dac8;--sage:#9aa878;--sage-d:color-mix(in oklab,var(--sage),black 22%)}*{box-sizing:border-box}body{background:var(--paper);margin:0}.site{z-index:2;color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Zen Kaku Gothic New,sans-serif;font-weight:400;line-height:1.75;position:relative;overflow-x:clip}.paperbg{z-index:0;pointer-events:none;background:radial-gradient(100% 72% at 82% -8%,#fefcf4e6,transparent 58%),radial-gradient(90% 60% at 8% 110%,color-mix(in oklab,var(--sage),transparent 86%),transparent 60%),url(/images/bg-doodles.svg) 0 0/640px 640px repeat,var(--paper);position:fixed;inset:0}@supports (color:lab(0% 0 0)){.paperbg{background:radial-gradient(100% 72% at 82% -8%,lab(98.9545% -.3362 4.08835/.9),transparent 58%),radial-gradient(90% 60% at 8% 110%,color-mix(in oklab,var(--sage),transparent 86%),transparent 60%),url(/images/bg-doodles.svg) 0 0/640px 640px repeat,var(--paper)}}.serif{font-family:Shippori Mincho,serif;font-weight:500}.brandf{font-family:Zen Maru Gothic,sans-serif}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--sage-d);margin-bottom:18px;font-size:14px;display:inline-block}.sec{padding:104px 40px;scroll-margin-top:78px}.inner{max-width:1180px;margin:0 auto}.nav{z-index:50;background:color-mix(in oklab,var(--paper),transparent 12%);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;padding:16px 40px;display:grid;position:sticky;top:0}.brand{justify-self:start}.nav-actions{justify-self:end;align-items:center;gap:10px;display:flex}.langsw{border:1px solid var(--line);background:var(--card);border-radius:999px;align-items:center;gap:2px;padding:3px;display:inline-flex}.hamburger{background:var(--card);border:1px solid var(--line);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;padding:0;transition:border-color .2s;display:none}.hamburger:hover{border-color:var(--sage)}.hamburger span,.hamburger span:before,.hamburger span:after{background:var(--ink);border-radius:2px;width:18px;height:2px;transition:transform .25s,background .25s;display:block}.hamburger span{position:relative}.hamburger span:before,.hamburger span:after{content:"";position:absolute;left:0}.hamburger span:before{top:-6px}.hamburger span:after{top:6px}.hamburger.open span{background:0 0}.hamburger.open span:before{transform:translateY(6px)rotate(45deg)}.hamburger.open span:after{transform:translateY(-6px)rotate(-45deg)}.langsw button{letter-spacing:.05em;color:var(--ink2);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 12px;font-family:inherit;font-size:12px;transition:background .2s,color .2s}.langsw button.on{background:var(--sage-d);color:#fbf8f0}.langsw button:hover:not(.on){color:var(--ink)}.langs{border-top:1px solid var(--line);margin-top:56px;padding-top:32px}.langrow{grid-template-columns:repeat(3,1fr);gap:28px;margin-top:20px;display:grid}.langitem{flex-direction:column;gap:6px;display:flex}.lgname{color:var(--ink);font-size:19px}.lglvl{color:var(--ink2);letter-spacing:.02em;font-size:13px}.portrait-img{object-fit:cover;border-radius:16px;width:100%;height:100%;display:block}.brand{color:var(--ink);letter-spacing:.03em;align-items:center;font-size:23px;text-decoration:none;display:inline-flex}.logo-img{width:auto;max-width:180px;height:30px;display:block}.links{justify-self:center;align-items:center;gap:34px;display:flex}.navitem{outline:none;align-items:center;display:flex;position:relative}.nlink{color:var(--ink2);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;padding:8px 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;text-decoration:none;transition:color .2s;position:relative}.nlink:after{content:"";background:var(--sage-d);height:1.5px;transition:left .25s,right .25s;position:absolute;bottom:2px;left:50%;right:50%}.nlink:hover{color:var(--sage-d)}.nlink:hover:after{left:0;right:0}.hero{grid-template-columns:1.05fr .95fr;align-items:center;gap:64px;max-width:1180px;margin:0 auto;padding:88px 40px 44px;scroll-margin-top:78px;display:grid;position:relative}.hero-copy{z-index:2;position:relative}.watermark{color:var(--sage);opacity:.07;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;font-size:210px;line-height:1;position:absolute;top:-46px;left:-6px}.hero-img{aspect-ratio:1;object-fit:cover;border:1px solid var(--line);border-radius:18px;width:100%;display:block;box-shadow:0 34px 70px -34px #3c3b3666}.htitle{letter-spacing:.01em;margin:0 0 26px;font-family:Tears,Shippori Mincho,serif;font-size:50px;font-weight:500;line-height:1.36}.work-head h2,.about-intro h2,.contact h2{font-family:Tears,Shippori Mincho,serif}.hlead{color:var(--ink);max-width:44ch;margin:0 0 34px;font-size:18px;line-height:1.9}.hero-cta{flex-wrap:wrap;gap:14px;display:flex}.btn{white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:14px 28px;font-size:15px;font-weight:500;text-decoration:none;transition:transform .25s,background .25s,color .25s,border-color .25s;display:inline-flex}.avail{white-space:nowrap;color:var(--ink2);border:1px solid var(--line);background:var(--card);border-radius:999px;align-items:center;gap:9px;margin-bottom:24px;margin-right:18px;padding:7px 15px;font-size:13px;display:inline-flex}.avail .dot{background:var(--sage-d);border-radius:50%;flex:none;width:8px;height:8px;animation:2.6s ease-out infinite pulse}@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in oklab,var(--sage),transparent 25%)}70%{box-shadow:0 0 0 9px #0000}to{box-shadow:0 0 #0000}}.hero-meta{border-top:1px solid var(--line);color:var(--ink2);flex-wrap:wrap;gap:12px 30px;margin-top:34px;padding-top:24px;font-size:14px;display:flex}.hero-art{z-index:2;position:relative}.art-cap{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);background:#fbf8f0e6;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:absolute;bottom:14px;left:14px;right:14px}.art-cap .t{font-size:15px}.art-cap .n{color:var(--ink2);font-size:12px}.btn-p{background:var(--sage-d);color:#fbf8f0}.btn-p:hover{background:var(--ink);transform:translateY(-2px)}.btn-g{color:var(--ink);border:1px solid var(--line);background:0 0}.btn-g:hover{border-color:var(--sage-d);color:var(--sage-d)}.ph{background:var(--paper2);border:1px solid var(--line);aspect-ratio:4/3;border-radius:16px;align-items:flex-end;padding:14px;display:flex;overflow:hidden}.ph-img{padding:0;position:relative}.ph-img img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.ph-img .phlabel{position:absolute;bottom:14px;left:14px}.ph-portrait{aspect-ratio:3/4;border:1px solid var(--line);border-radius:16px;max-width:220px;margin-left:auto;overflow:hidden}.ph-sage{background:repeating-linear-gradient(135deg,#c9d2af,#c9d2af 13px,#bfc9a2 13px 26px)}.ph-moss{background:repeating-linear-gradient(135deg,#b7c29a,#b7c29a 13px,#abb88c 13px 26px)}.ph-brown{background:repeating-linear-gradient(135deg,#cfbda4,#cfbda4 13px,#c6b195 13px 26px)}.ph-clay{background:repeating-linear-gradient(135deg,#dac5ae,#dac5ae 13px,#d1b9a0 13px 26px)}.phlabel{color:var(--ink2);letter-spacing:.05em;background:#fbf8f0c7;border-radius:7px;padding:5px 10px;font-size:11px}.work-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:22px;margin-bottom:30px;display:flex}.work-head h2{margin:0;font-size:34px}.work-sub{color:var(--ink2);text-align:left;max-width:42ch;padding-bottom:6px;font-size:16px;line-height:1.7}.tabs{flex-wrap:wrap;gap:10px;margin-bottom:40px;display:flex}.tab{border:1px solid var(--line);color:var(--ink2);white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:500;transition:all .2s}.tab:hover{color:var(--ink);border-color:var(--sage)}.tab-on{background:var(--sage-d);color:#fbf8f0;border-color:var(--sage-d)}.grid-cards{grid-template-columns:repeat(2,1fr);gap:40px;display:grid}.work-loading{color:var(--ink2);flex-direction:column;grid-column:1/-1;justify-content:center;align-items:center;gap:16px;padding:72px 0;display:flex}.spinner{border:3px solid var(--line);border-top-color:var(--sage-d);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}.work-loading span{letter-spacing:.04em;font-size:14px}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.6s}}.card{background:var(--card);border:1px solid var(--line);cursor:pointer;border-radius:20px;flex-direction:column;gap:18px;padding:20px;transition:transform .3s,box-shadow .3s,border-color .3s;display:flex}.hover-lift .card:hover{border-color:var(--sage);transform:translateY(-7px);box-shadow:0 20px 42px -24px #3c3b3673}.cbody{flex-direction:column;gap:8px;padding:0 6px 8px;display:flex}.ctag{letter-spacing:.12em;text-transform:uppercase;color:var(--sage-d);font-size:11px}.ctitle{margin:0;font-size:24px}.cdesc{color:var(--ink2);margin:0;font-size:15px}.crow{justify-content:space-between;align-items:center;display:flex}.cnum{color:var(--sage-d);opacity:.6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.cfoot{color:var(--sage-d);align-items:center;gap:8px;margin-top:6px;font-size:13px;display:inline-flex}.arw{transition:transform .25s;display:inline-block}.card:hover .arw{transform:translate(5px)}.about-intro{grid-template-columns:1.35fr .65fr;align-items:center;gap:60px;margin-bottom:70px;display:grid}.about-intro h2{white-space:pre-line;margin:0 0 20px;font-size:38px;line-height:1.4}.navlink{transition:color .2s,transform .2s,opacity .2s}.navlink:after{display:none}.navlink:hover{color:var(--sage-d);opacity:.92;transform:translateY(-2px)}.navlink.nav-on{color:var(--sage-d)}@keyframes title-bounce{0%,to{transform:translateY(0)}32%{transform:translateY(-8px)}64%{transform:translateY(0)}}.title-bounce{animation:.6s title-bounce}.about-name{color:var(--sage-d);margin:2px 0 10px;font-size:22px;display:block}.about-intro p{color:var(--ink2);white-space:pre-line;max-width:56ch;margin:0;font-size:17px;line-height:2}.about-cols{grid-template-columns:1fr 1fr;gap:56px;display:grid}.acol{border-top:2px solid var(--sage);padding-top:26px}.acol h3{margin:0 0 12px;font-size:24px}.acol p{color:var(--ink2);margin:0}.chips{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.chip{background:var(--paper2);color:var(--ink2);border-radius:999px;padding:6px 14px;font-size:13px}.contact{background:var(--paper2);text-align:center;padding:112px 40px;scroll-margin-top:78px;position:relative;overflow:hidden}.contact h2{margin:0;font-size:40px;line-height:1.4}.email{color:var(--sage-d);border-bottom:1px solid var(--sage);margin:28px 0 16px;padding-bottom:5px;font-size:26px;text-decoration:none;transition:color .2s;display:inline-block}.email:hover{color:var(--ink)}.cform{text-align:left;gap:16px;max-width:560px;margin:38px auto 0;display:grid}.frow{grid-template-columns:1fr 1fr;gap:16px;display:grid}.field{flex-direction:column;gap:7px;display:flex}.field label{letter-spacing:.12em;text-transform:uppercase;color:var(--sage-d);font-size:12px}.field input,.field textarea,.field select{color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:12px;width:100%;padding:13px 15px;font-family:inherit;font-size:15px;transition:border-color .2s,box-shadow .2s}.field textarea{resize:vertical;min-height:120px}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--sage);box-shadow:0 0 0 3px color-mix(in oklab,var(--sage),transparent 78%);outline:none}.field input::placeholder,.field textarea::placeholder{color:color-mix(in oklab,var(--ink2),transparent 30%)}.cform .btn-p{cursor:pointer;border:none;justify-content:center;font-family:inherit}.cnote{color:var(--ink2);text-align:center;margin:2px 0 0;font-size:13px}.cerror{color:#a05252;text-align:center;margin:2px 0 0;font-size:13px}.cform .btn-p:disabled{opacity:.6;cursor:default}.sent{border:1px solid var(--sage);background:var(--card);text-align:center;border-radius:16px;max-width:560px;margin:38px auto 0;padding:34px}.sent .s-em{margin-bottom:10px;font-size:34px;display:block}.sent h3{color:var(--ink);margin:0 0 8px;font-family:Shippori Mincho,serif;font-size:22px}.sent p{color:var(--ink2);margin:0}.closing{color:var(--ink2);max-width:42ch;margin:0 auto}.foot-row{border-top:1px solid var(--line);grid-template-columns:1fr 1fr 1fr;align-items:start;gap:36px;max-width:1180px;margin:104px auto 0;padding:46px 0 6px;display:grid}.foot-l{align-items:flex-start;display:flex}.foot-l .logo-img{opacity:.9;width:auto;height:30px}.foot-c{flex-direction:column;align-items:center;gap:13px;display:flex}.foot-r{text-align:right;flex-direction:column;align-items:flex-end;gap:9px;display:flex}.foot-link,.foot-r span{color:var(--ink2);letter-spacing:.01em;font-family:Cormorant Garamond,Shippori Mincho,serif;font-size:18px;line-height:1.75}.foot-link{cursor:pointer;width:max-content;text-decoration:none;transition:color .2s;position:relative}.foot-link:after{content:"";opacity:.55;background:currentColor;height:1px;transition:right .3s;position:absolute;bottom:1px;left:0;right:100%}.foot-link:hover{color:var(--ink)}.foot-link:hover:after{right:0}.foot-arw{opacity:.65;margin-left:1px;font-size:.78em}.foot-r span:first-child{color:var(--ink)}.foot-egg{z-index:4;position:absolute;bottom:14px;right:30px}.foot-print{opacity:.42;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:50%;outline:none;justify-content:center;align-items:center;width:44px;height:44px;transition:opacity .24s,transform .24s,box-shadow .24s;animation:3.1s ease-in-out infinite foot-glow;display:inline-flex}.foot-print svg{width:24px;height:auto;display:block}.foot-print:hover{opacity:.74;animation:none;transform:scale(1.08)translateY(-1.5px);box-shadow:0 0 0 2px #8a9a5bb3,0 0 16px #8a9a5b6b,0 0 28px #a0be5a3d}.foot-print:focus-visible{box-shadow:0 0 0 3px color-mix(in oklab,var(--sage),transparent 42%)}.foot-print.pressed{animation:none;transform:scale(.94)}.foot-print.quiet{animation:none}@keyframes foot-glow{0%,to{transform:scale(1);box-shadow:0 0 0 1px #8a9a5b59,0 0 9px #8a9a5b33,0 0 16px #a0be5a1f}50%{transform:scale(1.04);box-shadow:0 0 0 1.5px #8a9a5b9e,0 0 14px #8a9a5b57,0 0 24px #a0be5a33}}.foot-tip{background:var(--card);border:1px solid var(--line);color:var(--ink);white-space:nowrap;opacity:0;pointer-events:none;border-radius:12px;padding:6px 12px;font-family:Shippori Mincho,serif;font-size:13px;line-height:1.4;transition:opacity .3s .35s,transform .3s .35s;position:absolute;bottom:calc(100% + 6px);right:6px;transform:translateY(5px);box-shadow:0 12px 26px -16px #3c3b3666}.foot-tip.loc-zh{font-family:Noto Serif TC,Shippori Mincho,serif}.foot-tip.loc-ja{font-family:Noto Serif JP,Shippori Mincho,serif}.foot-tip.loc-en{font-family:Cormorant Garamond,Shippori Mincho,serif;font-size:15px}.foot-print:hover~.foot-tip,.foot-print:focus-visible~.foot-tip{opacity:1;transform:translateY(0)}@media (hover:none){.foot-tip{display:none}}@media (prefers-reduced-motion:reduce){.foot-print{animation:none;box-shadow:0 0 0 1.5px #8a9a5b80,0 0 14px #8a9a5b4d,0 0 20px #a0be5a29}.foot-print:hover{transform:none}.peek-frog{transition:opacity .35s}}.peek-frog{opacity:0;pointer-events:none;z-index:5;width:66px;transition:transform 1.15s cubic-bezier(.25,.9,.3,1),opacity .8s;position:absolute;bottom:-6px;right:-8px;transform:translateY(104%)rotate(-4deg)}.peek-frog.show{opacity:1;transform:translateY(34%)rotate(-4deg)}.peek-frog img{filter:drop-shadow(0 8px 6px #3c3b3624);width:100%;height:auto;display:block;transform:scaleX(-1)}.peek-bubble{background:var(--card);border:1px solid var(--line);color:var(--ink);white-space:pre-line;text-align:center;opacity:0;pointer-events:none;border-radius:14px;width:max-content;max-width:min(64vw,240px);padding:9px 15px;font-family:Shippori Mincho,serif;font-size:14px;line-height:1.55;transition:opacity .34s,transform .34s;position:absolute;bottom:calc(100% + 6px);right:0;transform:translateY(6px);box-shadow:0 14px 30px -16px #3c3b3666}.peek-bubble.loc-zh{font-family:Noto Serif TC,Shippori Mincho,serif}.peek-bubble.loc-ja{font-family:Noto Serif JP,Shippori Mincho,serif}.peek-bubble.loc-en{font-family:Cormorant Garamond,Shippori Mincho,serif;font-size:17px}.peek-bubble.show{opacity:1;transform:translateY(0)}.falling{pointer-events:none;z-index:1;position:fixed;inset:0;overflow:clip}.petal{will-change:transform;background-repeat:no-repeat;animation-name:fall;animation-timing-function:linear;animation-iteration-count:infinite;display:block;position:absolute;top:-6vh}.petal-leaf{border-radius:0 100%;box-shadow:inset 0 0 0 1px #ffffff38}.petal-flower{background-image:radial-gradient(circle at 50% 21%,var(--fc) 27%,transparent 29%),radial-gradient(circle at 77% 43%,var(--fc) 27%,transparent 29%),radial-gradient(circle at 64% 81%,var(--fc) 27%,transparent 29%),radial-gradient(circle at 36% 81%,var(--fc) 27%,transparent 29%),radial-gradient(circle at 23% 43%,var(--fc) 27%,transparent 29%),radial-gradient(circle at 50% 50%,#f3e7cb 22%,transparent 24%);border-radius:50%}.lc-sage{background-color:#9aa878}.lc-moss{background-color:#8a9a5b}.lc-pale{background-color:#b7c29a}.lc-brown{background-color:#b39b7c}.fc-pink{--fc:#e4a9b8}.fc-blush{--fc:#ebc3ac}.fc-rose{--fc:#dda9ae}.fc-cream{--fc:#dcc6a0}@keyframes fall{0%{opacity:0;transform:translateY(-6vh)rotate(0)}9%{opacity:.5}55%{opacity:.5;transform:translate(28px,52vh)rotate(190deg)}to{opacity:.42;transform:translate(-16px,108vh)rotate(365deg)}}.grain{pointer-events:none;z-index:200;opacity:.55;mix-blend-mode:multiply;background-image:radial-gradient(color-mix(in oklab,var(--brown,#8a7d63),transparent 92%) 1px,transparent 1px);background-size:3px 3px;position:fixed;inset:0}.frog-spot{z-index:30;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;transition:left .74s cubic-bezier(.3,0,.2,1) .16s,top .74s cubic-bezier(.3,0,.2,1) .16s;position:fixed;top:0;left:0}.frog-spot.dragging{cursor:grabbing;z-index:60;transition:none}.frog-spot.peeking{z-index:6}.frog-body{--d:1;transform-origin:50% 100%;transition:transform .16s ease-out}.frog-body.face-l{--d:-1}.frog-body.blink{animation:.3s frog-blink}.frog-body.look{animation:1.15s ease-in-out frog-look}.frog-body.dragging{animation:1.1s ease-in-out infinite frog-float}.frog-body.tilt{animation:1.4s frog-tilt}@keyframes frog-tilt{0%,to{transform:rotate(0)}40%{transform:rotate(8deg)}70%{transform:rotate(6deg)}}@keyframes frog-blink{0%,to{transform:scaleY(1)}45%,55%{transform:scaleY(.85)translateY(2px)}}@keyframes frog-look{0%,to{transform:rotate(0)}28%{transform:rotate(-5deg)}68%{transform:rotate(5deg)}}@keyframes frog-float{0%,to{transform:translateY(0)rotate(-2.5deg)}50%{transform:translateY(-6px)rotate(2.5deg)}}.frog-breath{transform-origin:50% 100%;animation:3.8s ease-in-out infinite frog-breathe}@keyframes frog-breathe{0%,to{transform:scaleY(1)scaleX(1)}50%{transform:scaleY(1.035)scaleX(.99)}}.frog-img{filter:drop-shadow(0 10px 7px #3c3b361f);pointer-events:none;width:90px;height:auto;display:block;transform:scaleX(-1)}.frog-body.face-l .frog-img{transform:scaleX(1)}.frog-body.ready{transform:translateX(calc(var(--d)*6px)) rotate(calc(var(--d)*9deg))}.frog-body.jumping{animation:.72s cubic-bezier(.3,0,.7,1) hop-once}@keyframes hop-once{0%{transform:translateY(0) rotate(calc(var(--d)*10deg)) scaleX(1.12) scaleY(.7);animation-timing-function:cubic-bezier(.55,0,.2,1)}16%{transform:translateY(-8px) rotate(calc(var(--d)*-6deg)) scaleX(.86) scaleY(1.24);animation-timing-function:ease-out}40%{transform:translateY(-96px) rotate(calc(var(--d)*-3deg)) scaleX(.97) scaleY(1.06);animation-timing-function:ease-in-out}58%{animation-timing-function:ease-in;transform:translateY(-118px)rotate(0)scaleX(1.01)scaleY(.99)}80%{transform:translateY(-26px) rotate(calc(var(--d)*4deg)) scaleX(1.03) scaleY(.95);animation-timing-function:cubic-bezier(.7,0,.9,.4)}90%{animation-timing-function:ease-out;transform:translateY(0)rotate(0)scaleX(1.24)scaleY(.62)}to{transform:translateY(0)rotate(0)scaleX(1)scaleY(1)}}.bubble{background:var(--card);border:1px solid var(--line);color:var(--ink);white-space:pre-line;text-align:center;opacity:0;visibility:hidden;pointer-events:none;border-radius:16px;width:max-content;max-width:min(70vw,280px);padding:9px 16px;font-family:Shippori Mincho,serif;font-size:15px;line-height:1.5;transition:opacity .34s,transform .34s;position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%)translateY(7px);box-shadow:0 16px 34px -16px #3c3b366b}.bubble.loc-zh{font-family:Noto Serif TC,Shippori Mincho,serif;font-weight:500}.bubble.loc-ja{font-family:Noto Serif JP,Shippori Mincho,serif;font-weight:500}.bubble.loc-en{letter-spacing:.01em;font-family:Cormorant Garamond,Shippori Mincho,serif;font-size:19px;font-weight:600}.bubble.show{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.bubble:after{content:"";border:6px solid #0000;border-top-color:var(--card);margin-left:-6px;position:absolute;top:100%;left:50%}.terra-leaf{pointer-events:none;transform-origin:50% 100%;opacity:0;z-index:5;transition:opacity 1.3s,transform 1.5s cubic-bezier(.2,1.25,.3,1);position:absolute;transform:scale(.15)rotate(-10deg)}.terra-leaf.grown{opacity:1;transform:scale(1)rotate(-10deg)}@media (max-width:920px){.nav{grid-template-columns:auto 1fr auto;gap:14px}.links{justify-self:end}.hero{grid-template-columns:1fr;padding-top:64px}.about-intro{grid-template-columns:1fr;gap:36px}.ph-portrait{margin:0}.about-cols{grid-template-columns:1fr;gap:40px}.grid-cards{grid-template-columns:repeat(2,1fr)}.htitle{font-size:38px}}@media (max-width:620px){.sec{padding:68px 22px}.nav{padding:16px 22px}.hero{padding:44px 22px 24px}.links{gap:18px;font-size:14px}.grid-cards{grid-template-columns:1fr}.htitle{font-size:31px}.foot-row{text-align:center;grid-template-columns:1fr;justify-items:center;gap:26px}.foot-c{align-items:center}.foot-r{text-align:center;align-items:center}.contact{padding:80px 22px}.contact h2{font-size:31px}.frow{grid-template-columns:1fr}.links{flex-wrap:wrap;justify-content:flex-end;gap:14px}.langrow{grid-template-columns:1fr;gap:16px}}.admin{z-index:2;min-height:100vh;color:var(--ink);padding:60px 24px;font-family:Zen Kaku Gothic New,sans-serif;position:relative}.admin-inner{z-index:1;max-width:860px;margin:0 auto;position:relative}.admin h1{margin:0 0 6px;font-family:Shippori Mincho,serif;font-size:30px;font-weight:500}.admin-sub{color:var(--ink2);margin:0 0 34px;font-size:14px}.admin-card{background:var(--card);border:1px solid var(--line);border-radius:18px;margin-bottom:22px;padding:26px}.admin-card h2{margin:0 0 16px;font-family:Shippori Mincho,serif;font-size:19px;font-weight:500}.admin-login{max-width:400px;margin:12vh auto 0}.admin-err{color:#a05252;margin:10px 0 0;font-size:13px}.admin-ok{color:var(--sage-d);margin:10px 0 0;font-size:13px}.admin-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.admin-grid .field.full{grid-column:1/-1}.btn-sm{cursor:pointer;border:none;padding:8px 18px;font-family:inherit;font-size:13px}.btn-danger{color:#a05252;background:0 0;border:1px solid #c9a1a1}.btn-danger:hover{color:#fbf8f0;background:#a05252;border-color:#a05252}.proj-list{flex-direction:column;gap:12px;display:flex}.proj-item{border:1px solid var(--line);background:var(--paper);border-radius:14px;align-items:center;gap:14px;padding:12px 16px;display:flex}.proj-item .swatch{border:1px solid var(--line);border-radius:8px;flex:none;width:44px;height:34px}.proj-item .pi-main{flex:1;min-width:0}.proj-item .pi-title{font-family:Shippori Mincho,serif;font-size:16px}.proj-item .pi-meta{color:var(--ink2);font-size:12px}.proj-item .pi-actions{gap:8px;display:flex}.admin-note{color:var(--ink2);font-size:13px;line-height:1.8}.admin-note code{background:var(--paper2);border-radius:6px;padding:1px 6px;font-size:12px}.msg-item{border:1px solid var(--line);background:var(--paper);border-radius:14px;margin-bottom:10px;padding:14px 16px}.msg-item .m-head{color:var(--sage-d);justify-content:space-between;gap:10px;margin-bottom:6px;font-size:13px;display:flex}.msg-item .m-body{color:var(--ink);white-space:pre-line;font-size:14px}@media (max-width:620px){.admin-grid{grid-template-columns:1fr}}@media (max-width:720px){.hamburger{display:inline-flex}.links{background:var(--card);border:1px solid var(--line);opacity:0;visibility:hidden;border-radius:16px;flex-direction:column;justify-self:auto;align-items:stretch;gap:4px;padding:10px;transition:opacity .22s,transform .22s;display:flex;position:absolute;top:calc(100% + 8px);left:16px;right:16px;transform:translateY(-8px);box-shadow:0 24px 50px -28px #3c3b3680}.links.open{opacity:1;visibility:visible;transform:translateY(0)}.links .nlink{text-align:left;border-radius:10px;padding:12px 14px;font-size:13px}.links .nlink:after{display:none}.links .navlink:hover{background:var(--paper2);transform:none}}
