@font-face{font-family:Chancery;src:url(/fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(/fonts/chancery/apple-chancery-webfont.eot?#iefix) format("embedded-opentype"),url(/fonts/chancery/apple-chancery-webfont.woff2) format("woff2"),url(/fonts/chancery/apple-chancery-webfont.woff) format("woff"),url(/fonts/chancery/apple-chancery-webfont.ttf) format("truetype"),url(/fonts/chancery/apple-chancery-webfont.svg#apple-chancery) format("svg");font-weight:lighter;font-style:normal}

/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:16px;-webkit-box-sizing:border-box;box-sizing:border-box}body{padding:0;margin:0;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;color:#34495e;background:#fefefe;scroll-behavior:smooth;border-top:3px solid #c05b4d}@media screen and (max-width:800px){body{border-top:0}}::-moz-selection{background:#c05b4d;color:#fff}::selection{background:#c05b4d;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:#34495e;text-decoration:none}h1{font-size:26px}h1,h2{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:24px}h3{font-size:20px}h3,h4{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:16px}h5,h6{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.container{margin:0 auto;width:800px}@media screen and (max-width:800px){.container{width:100%;-webkit-box-shadow:-1px -5px 5px #cacaca;box-shadow:-1px -5px 5px #cacaca}}.content-wrapper{padding:0 20px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-family:iconfont;src:url(/fonts/iconfont/iconfont.eot?hash=c2af3bb);src:url(/fonts/iconfont/iconfont.eot?hash=c2af3bb#iefix) format("embedded-opentype"),url(/fonts/iconfont/iconfont.woff?hash=5d21a10) format("woff"),url(/fonts/iconfont/iconfont.ttf?hash=0e6028a) format("truetype"),url(/fonts/iconfont/iconfont.svg?hash=568ae3a#iconfont) format("svg")}.iconfont{font-family:iconfont!important;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale;cursor:pointer}.icon-instagram:before{font-size:.95em;content:"\E611";position:relative;top:-1px}.icon-douban:before{content:"\E610"}.icon-tumblr:before{content:"\E69F";font-size:.85em;position:relative;top:-4px}.icon-linkedin:before{content:"\E60D";position:relative;top:-4px}.icon-twitter:before{content:"\E600"}.icon-weibo:before{content:"\E602"}.icon-stack-overflow:before{content:"\E603";font-size:.85em;position:relative;top:-4px}.icon-email:before{content:"\E605";position:relative;top:-2px}.icon-facebook:before{content:"\E601";font-size:.95em;position:relative;top:-2px}.icon-github:before{content:"\E606";position:relative;top:-3px}.icon-rss:before{content:"\E604"}.icon-google:before{content:"\E609"}.icon-zhihu:before{content:"\E607";font-size:.9em;position:relative;top:-2px}.icon-pocket:before{content:"\E856"}.icon-heart:before{content:"\E608"}.icon-right:before{content:"\E60A"}.icon-left:before{content:"\E60B"}.icon-up:before{content:"\E60C"}.icon-close:before{content:"\E60F"}.header{padding:20px}.header:after,.header:before{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left}.header .logo-wrapper .logo{font-size:48px;font-family:Chancery,cursive}@media screen and (max-width:800px){.header .logo-wrapper{display:none}}.header .site-navbar{float:right}.header .site-navbar .menu{display:inline-block;position:relative;padding-left:0;padding-right:25px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;vertical-align:middle;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-shadow:0 0 1px transparent;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:right,left;transition-property:right,left;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.header .site-navbar .menu .menu-item.active:before,.header .site-navbar .menu .menu-item:active:before,.header .site-navbar .menu .menu-item:focus:before,.header .site-navbar .menu .menu-item:hover:before{right:0;left:0}.header .site-navbar .menu .menu-item-link{font-size:18px}@media screen and (max-width:800px){.header .site-navbar{display:none}}@media screen and (max-width:800px){.header{padding:50px 0 0;text-align:center}}.posts{margin-bottom:20px;border-bottom:1px solid #e6e6e6}.post{padding:1.5em 0}.post+.post{border-top:1px solid #e6e6e6}.post .post-header{margin-bottom:20px}.post .post-header .post-title{margin:0;font-size:27px;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-shadow:0 0 1px transparent;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:right,left;transition-property:right,left;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a:before{content:"\B7"}.post .post-header .post-meta .post-category a:hover{color:#c05b4d}.post .post-header .post-meta .more-meta:before{content:"\B7"}.post .post-toc{position:absolute;width:200px;margin-left:785px;padding:10px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;border-radius:5px;background:hsla(45,46%,95%,.6);-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);word-wrap:break-word;-webkit-box-sizing:border-box;box-sizing:border-box}.post .post-toc .post-toc-title{margin:0 10px;font-size:20px;font-weight:400;text-transform:uppercase}.post .post-toc .post-toc-content{font-size:15px}.post .post-toc .post-toc-content.always-active ul{display:block}.post .post-toc .post-toc-content>nav>ul{margin:10px 0}.post .post-toc .post-toc-content ul{padding-left:20px;list-style:square}.post .post-toc .post-toc-content ul ul{padding-left:15px;display:none}.post .post-toc .post-toc-content ul .has-active>ul{display:block}.post .post-toc .post-toc-content .toc-link.active{color:#c05b4d}@media screen and (max-width:1185px){.post .post-toc{display:none}}.post .post-content{word-wrap:break-word}.post .post-content h1,.post .post-content h2,.post .post-content h3,.post .post-content h4,.post .post-content h5,.post .post-content h6{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content a{color:#c05b4d;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #c05b4d}.post .post-content a.fancybox{border:0}.post .post-content blockquote{margin:2em 0;padding:10px 20px;position:relative;color:rgba(52,73,94,.8);background-color:rgba(192,91,77,.05);border-left:3px solid rgba(192,91,77,.3);-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125)}.post .post-content blockquote p{margin:0}.post .post-content img{display:inline-block;max-width:100%}.post .post-content>table{max-width:100%;margin:10px 0;border-spacing:0;-webkit-box-shadow:2px 2px 3px rgba(0,0,0,.125);box-shadow:2px 2px 3px rgba(0,0,0,.125)}.post .post-content>table thead{background:#f8f5ec}.post .post-content>table td,.post .post-content>table th{padding:5px 15px;border:1px double #f4efe1}.post .post-content>table tr:hover{background-color:#f8f5ec}.post .post-content code,.post .post-content pre{padding:7px;font-size:13px;font-family:Consolas,Monaco,Menlo,monospace;background:#f8f5ec}.post .post-content code{padding:3px 5px;border-radius:4px;color:#c7254e}.post .post-content figure.highlight{margin:1em 0;border-radius:5px;overflow-x:auto;-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.125);box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative}.post .post-content figure.highlight table{position:relative}.post .post-content figure.highlight table:after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:13px;font-weight:700;color:#b1b1b1;background:#f4efe1;content:"Code"}.post .post-content figure.highlight.language-bash>table:after{content:"Bash"}.post .post-content figure.highlight.language-c>table:after{content:"C"}.post .post-content figure.highlight.language-cs>table:after{content:"C#"}.post .post-content figure.highlight.language-cpp>table:after{content:"C++"}.post .post-content figure.highlight.language-css>table:after{content:"CSS"}.post .post-content figure.highlight.language-coffeescript>table:after{content:"CoffeeScript"}.post .post-content figure.highlight.language-html>table:after{content:"HTML"}.post .post-content figure.highlight.language-xml>table:after{content:"XML"}.post .post-content figure.highlight.language-http>table:after{content:"HTTP"}.post .post-content figure.highlight.language-json>table:after{content:"JSON"}.post .post-content figure.highlight.language-java>table:after{content:"Java"}.post .post-content figure.highlight.language-javascript>table:after,.post .post-content figure.highlight.language-js>table:after{content:"JavaScript"}.post .post-content figure.highlight.language-makefile>table:after{content:"Makefile"}.post .post-content figure.highlight.language-markdown>table:after{content:"Markdown"}.post .post-content figure.highlight.language-objectivec>table:after{content:"Objective-C"}.post .post-content figure.highlight.language-php>table:after{content:"PHP"}.post .post-content figure.highlight.language-perl>table:after{content:"Perl"}.post .post-content figure.highlight.language-python>table:after{content:"Python"}.post .post-content figure.highlight.language-ruby>table:after{content:"Ruby"}.post .post-content figure.highlight.language-sql>table:after{content:"SQL"}.post .post-content figure.highlight.language-shell>table:after{content:"Shell"}.post .post-content figure.highlight.language-erlang>table:after{content:"Erlang"}.post .post-content figure.highlight.language-go>table:after{content:"Go"}.post .post-content figure.highlight.language-groovy>table:after{content:"Groovy"}.post .post-content figure.highlight.language-haskell>table:after{content:"Haskell"}.post .post-content figure.highlight.language-kotlin>table:after{content:"Kotlin"}.post .post-content figure.highlight.language-less>table:after{content:"Less"}.post .post-content figure.highlight.language-lisp>table:after{content:"Lisp"}.post .post-content figure.highlight.language-lua>table:after{content:"Lua"}.post .post-content figure.highlight.language-matlab>table:after{content:"Matlab"}.post .post-content figure.highlight.language-rust>table:after{content:"Rust"}.post .post-content figure.highlight.language-scss>table:after{content:"Scss"}.post .post-content figure.highlight.language-scala>table:after{content:"Scala"}.post .post-content figure.highlight.language-swift>table:after{content:"Swift"}.post .post-content figure.highlight.language-typescript>table:after{content:"TypeScript"}.post .post-content figure.highlight.language-yaml>table:after,.post .post-content figure.highlight.language-yml>table:after{content:"YAML"}.post .post-content figure.highlight.language-toml>table:after{content:"TOML"}.post .post-content figure.highlight .code pre{margin:0;padding:30px 10px 10px}.post .post-content figure.highlight .gutter{width:10px;color:#cacaca}.post .post-content figure.highlight .gutter pre{margin:0;padding:30px 7px 10px}.post .post-content figure.highlight .line{height:20px}.post .post-content figure.highlight table,.post .post-content figure.highlight td,.post .post-content figure.highlight tr{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content figure.highlight .code .hljs-comment,.post .post-content figure.highlight .code .hljs-quote{color:#93a1a1}.post .post-content figure.highlight .code .hljs-addition,.post .post-content figure.highlight .code .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-tag{color:#859900}.post .post-content figure.highlight .code .hljs-doctag,.post .post-content figure.highlight .code .hljs-literal,.post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,.post .post-content figure.highlight .code .hljs-number,.post .post-content figure.highlight .code .hljs-regexp,.post .post-content figure.highlight .code .hljs-string{color:#2aa198}.post .post-content figure.highlight .code .hljs-name,.post .post-content figure.highlight .code .hljs-section,.post .post-content figure.highlight .code .hljs-selector-class,.post .post-content figure.highlight .code .hljs-selector-id,.post .post-content figure.highlight .code .hljs-title{color:#268bd2}.post .post-content figure.highlight .code .hljs-attr,.post .post-content figure.highlight .code .hljs-attribute,.post .post-content figure.highlight .code .hljs-class .hljs-title,.post .post-content figure.highlight .code .hljs-template-variable,.post .post-content figure.highlight .code .hljs-type,.post .post-content figure.highlight .code .hljs-variable{color:#b58900}.post .post-content figure.highlight .code .hljs-bullet,.post .post-content figure.highlight .code .hljs-link,.post .post-content figure.highlight .code .hljs-meta,.post .post-content figure.highlight .code .hljs-meta .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-attr,.post .post-content figure.highlight .code .hljs-selector-pseudo,.post .post-content figure.highlight .code .hljs-subst,.post .post-content figure.highlight .code .hljs-symbol{color:#cb4b16}.post .post-content figure.highlight .code .hljs-built_in,.post .post-content figure.highlight .code .hljs-deletion{color:#dc322f}.post .post-content figure.highlight .code .hljs-formula{background:#eee8d5}.post .post-content figure.highlight .code .hljs-emphasis{font-style:italic}.post .post-content figure.highlight .code .hljs-strong{font-weight:700}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more .read-more-link{color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #c05b4d}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #b5b5b5;box-shadow:inset 0 -1px 0 #b5b5b5;font-size:.8em;line-height:1.25;font-family:SFMono-Regular,Liberation Mono,Roboto Mono,Menlo,Monaco,Consolas,Courier New,Courier,monospace;color:#4a4a4a}.post .post-content dl dt:after{content:":"}.post .post-content figure.center{text-align:center}.post .post-content figure.right{text-align:right}.post .post-content figure.left{text-align:left}.post .post-content figure figcaption h4{color:#b5b5b5;font-size:.9rem}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .post-content .align-center{text-align:center}.post .post-content .align-right{text-align:right}.post .post-content .align-left{text-align:left}.post .post-content .MJXc-display{overflow-x:auto;overflow-y:hidden}.post .post-copyright{margin-top:20px;padding-top:10px;border-top:1px dashed #e6e6e6}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#c05b4d;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #c05b4d}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-reward{margin-top:20px;padding-top:10px;text-align:center;border-top:1px dashed #e6e6e6}.post .post-reward .reward-button{margin:15px 0;padding:3px 7px;display:inline-block;color:#c05b4d;border:1px solid #c05b4d;border-radius:5px;cursor:pointer}.post .post-reward .reward-button:hover{color:#fefefe;background-color:#c05b4d;-webkit-transition:.5s;transition:.5s}.post .post-reward #reward:checked~.qr-code{display:block}.post .post-reward #reward:checked~.reward-button,.post .post-reward .qr-code{display:none}.post .post-reward .qr-code .qr-code-image{display:inline-block;min-width:200px;width:40%;margin-top:15px}.post .post-reward .qr-code .qr-code-image span{display:inline-block;width:100%;margin:8px 0}.post .post-reward .qr-code .image{width:200px;height:200px}.post .post-footer{margin-top:20px;border-top:1px solid #e6e6e6;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{padding:15px 0}.post .post-footer .post-tags a{margin-right:5px;color:#c05b4d;word-break:break-all}.post .post-footer .post-tags a:before{content:"#"}.post .post-footer .post-nav{margin:1em 0}.post .post-footer .post-nav:after,.post .post-footer .post-nav:before{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .next,.post .post-footer .post-nav .prev{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#c05b4d;-webkit-transform:translateX(-4px);-ms-transform:translateX(-4px);transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#c05b4d;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:800px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.post .post-outdated .hint{border-left:4px solid #42acf3;background-color:#eff5ff;border-color:#42acf3}.post .post-outdated .hint,.post .post-outdated .warn{position:relative;margin-top:20px;margin-bottom:20px;padding:5px 10px}.post .post-outdated .warn{border-left:4px solid #f9cf63;background-color:#ffffc0;border-color:#f9cf63}.pagination{margin:2em 0}.pagination:after,.pagination:before{content:" ";display:table}.pagination:after{clear:both}.pagination .next,.pagination .prev{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#c05b4d;-webkit-transform:translateX(-4px);-ms-transform:translateX(-4px);transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#c05b4d;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.footer{margin-top:2em}.footer .social-links{text-align:center}.footer .social-links .iconfont{font-size:30px}.footer .social-links .iconfont+.iconfont{margin-left:10px}.footer .social-links .iconfont:hover{color:#c05b4d}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#c05b4d}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px}.archive{margin:2em 0;max-width:550px}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.category,.archive .archive-title.tag{margin:15px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:15px 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:3px 20px;border-left:1px solid #cacaca}.archive .archive-post .archive-post-time{margin-right:10px;color:#8a8a8a}.archive .archive-post .archive-post-title .archive-post-link{color:#c05b4d}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{border-left:3px solid #c05b4d;-webkit-transition:.2s ease-out;transition:.2s ease-out;-webkit-transform:translateX(4px);-ms-transform:translateX(4px);transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#a14639}@media screen and (max-width:800px){.archive{margin-left:auto;margin-right:auto}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}}.tag-cloud{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.tag-cloud .tag-cloud-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.tag-cloud .tag-cloud-tags{margin:10px 0}.tag-cloud .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.tag-cloud .tag-cloud-tags a .tag-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.tag-cloud .tag-cloud-tags a:active,.tag-cloud .tag-cloud-tags a:focus,.tag-cloud .tag-cloud-tags a:hover{color:#c05b4d;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.categories{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.categories .categories-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.categories .categories-tags{margin:10px 0}.categories .categories-tags .category-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.categories .categories-tags .category-link .category-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.categories .categories-tags .category-link:active,.categories .categories-tags .category-link:focus,.categories .categories-tags .category-link:hover{color:#c05b4d;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-panel{position:relative;z-index:1;background-color:#fefefe;min-height:100vh}.slideout-open,.slideout-open .slideout-panel,.slideout-open body{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;-webkit-box-shadow:0 2px 2px #cacaca;box-shadow:0 2px 2px #cacaca;text-align:center;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;z-index:99}.mobile-navbar.fixed-open{-webkit-transform:translate3d(180px,0,0);transform:translate3d(180px,0,0)}.mobile-navbar .mobile-header-logo{display:inline-block;margin-right:50px}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:Chancery,cursive}.mobile-navbar .mobile-navbar-icon{color:#c05b4d;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;-webkit-transition:background .5s;transition:background .5s}@-webkit-keyframes clickfirst{0%{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}}@keyframes clickfirst{0%{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}}@-webkit-keyframes clickmid{0%{opacity:1}to{opacity:0}}@keyframes clickmid{0%{opacity:1}to{opacity:0}}@-webkit-keyframes clicklast{0%{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}}@keyframes clicklast{0%{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}to{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}}@-webkit-keyframes outfirst{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}to{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}}@keyframes outfirst{0%{-webkit-transform:translateY(0) rotate(-45deg);transform:translateY(0) rotate(-45deg)}to{-webkit-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}}@-webkit-keyframes outmid{0%{opacity:0}to{opacity:1}}@keyframes outmid{0%{opacity:0}to{opacity:1}}@-webkit-keyframes outlast{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}to{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}}@keyframes outlast{0%{-webkit-transform:translateY(0) rotate(45deg);transform:translateY(0) rotate(45deg)}to{-webkit-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px) / 2);top:calc((100% - 1px) / 2);width:20px;height:1px;background-color:#c05b4d}.mobile-navbar .mobile-navbar-icon span:first-child{-webkit-transform:translateY(6px) rotate(0deg);-ms-transform:translateY(6px) rotate(0deg);transform:translateY(6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){-webkit-transform:translateY(-6px) rotate(0deg);-ms-transform:translateY(-6px) rotate(0deg);transform:translateY(-6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon.icon-click span:first-child{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clickfirst;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clickmid;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:clicklast;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:first-child{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outfirst;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outmid;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:outlast;animation-name:outlast}.mobile-menu{background-color:hsla(45,46%,95%,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f8f5ec}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f8f5ec}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#c05b4d}@media screen and (max-width:800px){.mobile-navbar{display:block}}.back-to-top{display:none;position:fixed;right:20px;bottom:20px;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-duration:.3s;transition-duration:.3s;z-index:10}.back-to-top:hover{-webkit-transform:translateY(-5px);-ms-transform:translateY(-5px);transform:translateY(-5px)}@media screen and (max-width:800px){.back-to-top{display:none!important}}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#c05b4d}
/*# sourceMappingURL=even.min.css.map*/
/* Chroma Highlighting for Even Theme */
.post-content .highlight {
  margin: 1.2em 0;
  border-radius: 5px;
  overflow-x: auto;
  box-shadow: 1px 1px 2px rgba(0,0,0,0.1);
  position: relative;
  background: #f8f8f8;
}

.post-content .highlight > .chroma {
  margin: 0;
  padding: 0;
  background: #f8f8f8;
  color: #34495e !important;
}

.post-content .highlight code {
  color: #34495e !important;
  padding: 0 !important;
  background: transparent !important;
  font-family: "Source Code Pro", Consolas, Monaco, Menlo, monospace !important;
  font-size: 14px !important;
}

.post-content .highlight table {
  position: relative;
  margin: 0 !important;
  padding: 0 !important;
  width: 100% !important;
  border-collapse: collapse !important;
  border: none !important;
}

.post-content .highlight table tr {
  background: transparent !important;
  border: none !important;
}

.post-content .highlight table tr:hover {
  background: transparent !important;
}

.post-content .highlight .lntd {
  line-height: 1.5 !important;
  border: none !important;
  padding: 0 !important;
  vertical-align: top;
}

.post-content .highlight .lntd:first-child {
  width: 10px !important;
  background: #f0f0f0 !important;
  border-right: 1px solid #e6e6e6 !important;
}

.post-content .highlight .lntd:first-child pre {
  margin: 0 !important;
  padding: 12px 8px 12px 10px !important;
  background: #f0f0f0 !important;
  color: #999999 !important;
  text-align: right;
  border: none !important;
}

.post-content .highlight .lntd:last-child {
  padding-left: 0 !important;
}

.post-content .highlight .lntd:last-child pre {
  margin: 0 !important;
  padding: 12px 12px !important;
  background: #f8f8f8 !important;
  border: none !important;
}

.post-content .highlight .lnt {
  color: #999999 !important;
  user-select: none;
}

.post-content .highlight .hl {
  display: block;
  width: 100%;
  background-color: #ffffcc;
}

/* Solarized Palette Syntax Highlighting */
.post-content .highlight .chroma .k, 
.post-content .highlight .chroma .kc, 
.post-content .highlight .chroma .kd, 
.post-content .highlight .chroma .kp, 
.post-content .highlight .chroma .kr, 
.post-content .highlight .chroma .kt { color: #859900 !important; font-weight: bold; }

.post-content .highlight .chroma .kn { color: #dc322f !important; font-weight: bold; }

.post-content .highlight .chroma .n, 
.post-content .highlight .chroma .na, 
.post-content .highlight .chroma .no, 
.post-content .highlight .chroma .nd, 
.post-content .highlight .chroma .ni, 
.post-content .highlight .chroma .ne, 
.post-content .highlight .chroma .nf, 
.post-content .highlight .chroma .fm, 
.post-content .highlight .chroma .nl, 
.post-content .highlight .chroma .nn, 
.post-content .highlight .chroma .nx, 
.post-content .highlight .chroma .py, 
.post-content .highlight .chroma .nv, 
.post-content .highlight .chroma .vc, 
.post-content .highlight .chroma .vg, 
.post-content .highlight .chroma .vi, 
.post-content .highlight .chroma .vm { color: #268bd2 !important; }

.post-content .highlight .chroma .nb, 
.post-content .highlight .chroma .nc { color: #cb4b16 !important; }

.post-content .highlight .chroma .bp { color: #268bd2 !important; }
.post-content .highlight .chroma .nt { color: #268bd2 !important; font-weight: bold; }

.post-content .highlight .chroma .l, 
.post-content .highlight .chroma .ld, 
.post-content .highlight .chroma .s, 
.post-content .highlight .chroma .sa, 
.post-content .highlight .chroma .sb, 
.post-content .highlight .chroma .sc, 
.post-content .highlight .chroma .dl, 
.post-content .highlight .chroma .sd, 
.post-content .highlight .chroma .s2, 
.post-content .highlight .chroma .se, 
.post-content .highlight .chroma .sh, 
.post-content .highlight .chroma .si, 
.post-content .highlight .chroma .sx, 
.post-content .highlight .chroma .sr, 
.post-content .highlight .chroma .s1, 
.post-content .highlight .chroma .ss { color: #2aa198 !important; }

.post-content .highlight .chroma .m, 
.post-content .highlight .chroma .mb, 
.post-content .highlight .chroma .mf, 
.post-content .highlight .chroma .mh, 
.post-content .highlight .chroma .mi, 
.post-content .highlight .chroma .il, 
.post-content .highlight .chroma .mo { color: #2aa198 !important; font-weight: bold; }

.post-content .highlight .chroma .o, 
.post-content .highlight .chroma .ow { color: #859900 !important; }

.post-content .highlight .chroma .c, 
.post-content .highlight .chroma .ch, 
.post-content .highlight .chroma .cm, 
.post-content .highlight .chroma .c1, 
.post-content .highlight .chroma .cs, 
.post-content .highlight .chroma .cp, 
.post-content .highlight .chroma .cpf { color: #93a1a1 !important; font-style: italic; }

.post-content .highlight .chroma .g, 
.post-content .highlight .chroma .ge, 
.post-content .highlight .chroma .gr, 
.post-content .highlight .chroma .gh, 
.post-content .highlight .chroma .go, 
.post-content .highlight .chroma .gp, 
.post-content .highlight .chroma .gs, 
.post-content .highlight .chroma .gu, 
.post-content .highlight .chroma .gt { color: #d33682 !important; }

.post-content .highlight .chroma .gd { color: #b58900 !important; }
.post-content .highlight .chroma .gi { color: #859900 !important; }

/* ==========================================================================
   Mobile Responsive Optimization (Pure CSS, Zero JS)
   ========================================================================== */
@media screen and (max-width: 800px) {
  .container {
    width: 100% !important;
    padding: 0 16px !important;
    box-sizing: border-box !important;
    box-shadow: none !important;
  }
  .content-wrapper {
    padding: 0 !important;
  }
  .header {
    padding: 24px 0 16px !important;
    text-align: center !important;
  }
  .header .logo-wrapper {
    display: block !important;
    float: none !important;
    margin-bottom: 8px !important;
  }
  .header .logo-wrapper .logo {
    font-size: 34px !important;
    line-height: 1.2 !important;
  }
  .header .site-navbar {
    display: block !important;
    float: none !important;
  }
  .header .site-navbar .menu {
    display: flex !important;
    justify-content: center !important;
    flex-wrap: wrap !important;
    gap: 16px !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  .header .site-navbar .menu .menu-item {
    margin-left: 0 !important;
    font-size: 16px !important;
  }
  .post {
    padding-top: 1em !important;
  }
  .post .post-title {
    font-size: 22px !important;
    line-height: 1.3 !important;
  }
  .post-content {
    font-size: 16px !important;
    line-height: 1.7 !important;
    word-break: break-word !important;
  }
  .post-content .highlight {
    margin: 1em -16px !important;
    border-radius: 0 !important;
    -webkit-overflow-scrolling: touch !important;
  }
  .post-content .highlight .lntd:first-child pre {
    padding: 10px 6px 10px 8px !important;
  }
  .post-content .highlight .lntd:last-child pre {
    padding: 10px 10px !important;
  }
  .post-content img {
    max-width: 100% !important;
    height: auto !important;
  }
  .pagination {
    margin: 2.5em 0 3em !important;
  }
  .pagination .prev, .pagination .next {
    font-size: 15px !important;
  }
  .archive .archive-post .archive-post-title {
    font-size: 15px !important;
  }
  .archive .archive-post .archive-post-time {
    font-size: 13px !important;
  }
  .footer {
    margin-top: 3em !important;
    padding: 2em 0 !important;
  }
}


/* ==========================================================================
   沉浸式动漫阳台花园微景观系统 (宽屏&高分屏自适应：阳光、流风、风雨雪月、花草猫咪)
   ========================================================================== */

/* 手机/平板/窄屏自动彻底隐藏，绝不影响正文阅读 */
@media screen and (max-width: 1200px) {
  .anime-balcony-garden {
    display: none !important;
  }
}

@media screen and (min-width: 1201px) {
  .anime-balcony-garden {
    display: block;
    position: relative;
    pointer-events: none;
    z-index: 5;
  }

  /* 阳台左右两翼框架（高分辨率流式自适应） */
  .balcony-framework {
    position: fixed;
    bottom: 0;
    /* 动态适配 1080p, 2K, 4K 大屏留白，并严格限制不超过版心外缘 */
    width: min(calc(50vw - 425px), clamp(260px, 20vw, 460px));
    height: clamp(520px, 75vh, 880px);
    z-index: 8;
    pointer-events: auto;
    cursor: pointer;
    user-select: none;
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), filter 0.8s ease;
  }

  .balcony-framework.flank-left {
    right: calc(50vw + 416px);
  }

  .balcony-framework.flank-right {
    left: calc(50vw + 416px);
  }

  .balcony-framework:hover {
    transform: translateY(-6px);
  }

  .balcony-canvas {
    width: 100%;
    height: 100%;
    display: block;
    overflow: visible;
    filter: drop-shadow(0 8px 24px rgba(0, 0, 0, 0.08));
  }

  /* 提示微标签 (Hover 浮现诗意描述与切换提示) */
  .balcony-caption {
    position: absolute;
    bottom: 16px;
    left: 50%;
    transform: translateX(-50%);
    white-space: nowrap;
    font-size: 11px;
    font-family: Athelas, STHeiti, "Microsoft Yahei", serif;
    color: #555;
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    padding: 4px 10px;
    border-radius: 12px;
    border: 1px solid rgba(192, 91, 77, 0.25);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease, transform 0.3s ease;
  }

  .balcony-framework:hover .balcony-caption {
    opacity: 1;
    transform: translateX(-50%) translateY(-2px);
  }

  /* --------------------------------------------------------------------------
     1. “能看到风”——阳台花草与风铃随风摇曳 (GPU 硬件加速，零 CPU 占用)
     -------------------------------------------------------------------------- */
  /* 日式玻璃风铃随风摆荡 (以顶梁挂点为轴心真实钟摆摆动) */
  @keyframes windChimeSwing {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(5.5deg); }
    60% { transform: rotate(-3.5deg); }
    85% { transform: rotate(2deg); }
  }
  .wind-swing-chime {
    transform-origin: 0px 0px;
    animation: windChimeSwing 4.5s ease-in-out infinite;
  }

  /* 顶部常春藤吊帘随风起伏 */
  @keyframes windCurtainSway {
    0%, 100% { transform: rotate(0deg); }
    35% { transform: rotate(2.5deg) skewX(0.8deg); }
    70% { transform: rotate(-2deg) skewX(-0.6deg); }
  }
  .wind-swing-curtain {
    transform-origin: 85px 28px;
    animation: windCurtainSway 7s ease-in-out infinite;
  }
  .hanging-canopy .vine-layer.v1 {
    transform-origin: 72px 75px;
    animation: windCurtainSway 5s ease-in-out infinite 0.4s;
  }
  .hanging-canopy .vine-layer.v2 {
    transform-origin: 98px 78px;
    animation: windCurtainSway 6s ease-in-out infinite 1.1s;
  }

  /* 地面大叶芭蕉/龟背竹主植物自然呼吸微动 (以盆底为根基) */
  @keyframes mainPlantBreeze {
    0%, 100% { transform: rotate(0deg); }
    40% { transform: rotate(1.8deg) skewX(0.6deg); }
    75% { transform: rotate(-1.3deg); }
  }
  .floor-monster-plant.wind-breeze-main {
    transform-origin: 85px 530px;
    animation: mainPlantBreeze 8s ease-in-out infinite;
  }
  .stand-hydrangea.wind-breeze-gentle {
    transform-origin: 256px 338px;
    animation: mainPlantBreeze 6.5s ease-in-out infinite 0.6s;
  }
  .floor-bamboo-plant.wind-breeze-gentle {
    transform-origin: 38px 95px;
    animation: mainPlantBreeze 6s ease-in-out infinite 0.9s;
  }
  .wind-breeze-main {
    animation: mainPlantBreeze 8s ease-in-out infinite;
  }
  .wind-breeze-gentle {
    animation: mainPlantBreeze 6.5s ease-in-out infinite 0.7s;
  }

  /* 栏杆静卧小黑猫悠闲尾巴微晃 (以尾巴根部为旋转中心) */
  @keyframes catTailFlick {
    0%, 100% { transform: rotate(0deg); }
    30% { transform: rotate(7deg); }
    60% { transform: rotate(-4.5deg); }
    80% { transform: rotate(2.5deg); }
  }
  .cat-tail {
    transform-origin: 58px 30px;
    animation: catTailFlick 5.5s ease-in-out infinite;
  }

  /* --------------------------------------------------------------------------
     2. “能看到风”——动漫流风粒子与花瓣飘拂
     -------------------------------------------------------------------------- */
  .wind-current-layer {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 6;
    overflow: hidden;
  }

  @keyframes petalFloat {
    0% {
      transform: translate(0, 0) rotate(0deg);
      opacity: 0;
    }
    15% { opacity: 0.8; }
    85% { opacity: 0.8; }
    100% {
      transform: translate(clamp(140px, 16vw, 300px), clamp(180px, 28vh, 450px)) rotate(320deg);
      opacity: 0;
    }
  }

  .anime-petal {
    position: absolute;
    width: 10px;
    height: 15px;
    border-radius: 50% 0 50% 50%;
    background: var(--petal-color, #fbcfe8);
    box-shadow: 0 1px 4px rgba(244, 114, 182, 0.3);
    opacity: 0;
    animation: petalFloat 8s linear infinite;
  }
  .anime-petal.ap1 { top: 18%; left: max(16px, calc(50vw - 400px - 380px)); animation-delay: 0.2s; }
  .anime-petal.ap2 { top: 35%; left: max(30px, calc(50vw - 400px - 260px)); animation-delay: 3.2s; animation-duration: 9.5s; }
  .anime-petal.ap3 { top: 22%; right: max(30px, calc(50vw - 400px - 280px)); animation-delay: 1.6s; animation-duration: 7.5s; }
  .anime-petal.ap4 { top: 48%; right: max(16px, calc(50vw - 400px - 360px)); animation-delay: 4.8s; }
  .anime-petal.ap5 { top: 62%; left: max(20px, calc(50vw - 400px - 320px)); animation-delay: 6s; }

  @keyframes gleamPulse {
    0%, 100% { transform: scale(0.6) translateY(0); opacity: 0.2; }
    50% { transform: scale(1.3) translateY(-18px); opacity: 0.75; }
  }

  .wind-gleam {
    position: absolute;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: #fef08a;
    box-shadow: 0 0 6px #fde047;
    animation: gleamPulse 4.5s ease-in-out infinite;
  }
  .wind-gleam.wg1 { top: 38%; left: max(50px, calc(50vw - 400px - 220px)); animation-delay: 0.5s; }
  .wind-gleam.wg2 { top: 55%; right: max(60px, calc(50vw - 400px - 240px)); animation-delay: 2.3s; }
  .wind-gleam.wg3 { top: 70%; right: max(90px, calc(50vw - 400px - 160px)); animation-delay: 3.8s; }

  /* --------------------------------------------------------------------------
     3. “还要有阳光”——新海诚风丁达尔温暖大光束 (Sunbeam Rays)
     -------------------------------------------------------------------------- */
  .anime-sunray {
    position: fixed;
    top: 0;
    width: clamp(240px, 20vw, 420px);
    height: 100vh;
    pointer-events: none;
    z-index: 4;
    opacity: 0;
    transition: opacity 1.5s ease;
  }

  .sunray-left {
    left: max(0px, calc(50vw - 400px - clamp(280px, 24vw, 500px)));
    background: linear-gradient(135deg, rgba(254, 240, 138, 0.32) 0%, rgba(253, 224, 71, 0.12) 40%, transparent 75%);
    transform: skewX(-14deg);
    transform-origin: top left;
  }

  .sunray-right {
    right: max(0px, calc(50vw - 400px - clamp(280px, 24vw, 500px)));
    background: linear-gradient(225deg, rgba(254, 240, 138, 0.32) 0%, rgba(253, 224, 71, 0.12) 40%, transparent 75%);
    transform: skewX(14deg);
    transform-origin: top right;
  }

  @keyframes sunbeamBreathe {
    0%, 100% { opacity: 0.18; transform: skewX(-14deg) scaleX(1); }
    50% { opacity: 0.32; transform: skewX(-12deg) scaleX(1.08); }
  }

  .atmo-sunny .anime-sunray {
    opacity: 0.25;
    animation: sunbeamBreathe 10s ease-in-out infinite;
  }

  .atmo-dusk .anime-sunray {
    opacity: 0.3;
    background: linear-gradient(135deg, rgba(251, 146, 60, 0.38) 0%, rgba(244, 114, 182, 0.15) 50%, transparent 80%);
    animation: sunbeamBreathe 10s ease-in-out infinite;
  }

  /* --------------------------------------------------------------------------
     4. “风雨雪月”天象系统与阳台反应
     -------------------------------------------------------------------------- */
  /* --- 动漫淅沥雨丝 --- */
  .anime-rain-system {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 6;
    overflow: hidden;
  }

  @keyframes animeRainFall {
    0% { transform: translateY(-80px) skewX(-10deg); opacity: 0; }
    30% { opacity: 0.7; }
    80% { opacity: 0.7; }
    100% { transform: translateY(105vh) skewX(-10deg); opacity: 0; }
  }

  .rain-streak {
    position: absolute;
    width: 1.5px;
    height: 45px;
    background: linear-gradient(to bottom, transparent, rgba(56, 189, 248, 0.65), transparent);
    animation: animeRainFall 1.1s linear infinite;
  }

  .rain-streak.rk1 { left: max(20px, calc(50vw - 400px - 340px)); animation-delay: 0.1s; }
  .rain-streak.rk2 { left: max(80px, calc(50vw - 400px - 220px)); animation-delay: 0.4s; }
  .rain-streak.rk3 { left: max(150px, calc(50vw - 400px - 100px)); animation-delay: 0.8s; }
  .rain-streak.rk4 { right: max(30px, calc(50vw - 400px - 320px)); animation-delay: 0.2s; }
  .rain-streak.rk5 { right: max(90px, calc(50vw - 400px - 210px)); animation-delay: 0.6s; }
  .rain-streak.rk6 { right: max(160px, calc(50vw - 400px - 110px)); animation-delay: 0.9s; }
  .rain-streak.rk7 { left: max(40px, calc(50vw - 400px - 180px)); animation-delay: 0.3s; }

  .atmo-rain .anime-rain-system { display: block; }
  .atmo-rain .balcony-framework {
    filter: brightness(0.92) contrast(1.04);
  }
  .atmo-rain .wind-breeze-main,
  .atmo-rain .hanging-canopy {
    transform: translateY(3px) rotate(1deg);
  }

  /* --- 动漫轻柔飞雪 --- */
  .anime-snow-system {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 6;
    overflow: hidden;
  }

  @keyframes animeSnowDrift {
    0% { transform: translateY(-30px) translateX(0) rotate(0deg); opacity: 0; }
    20% { opacity: 0.85; }
    80% { opacity: 0.85; }
    100% { transform: translateY(105vh) translateX(45px) rotate(360deg); opacity: 0; }
  }

  .snow-drift {
    position: absolute;
    color: #ffffff;
    font-size: 14px;
    line-height: 1;
    text-shadow: 0 0 6px rgba(255, 255, 255, 0.9);
    animation: animeSnowDrift 6.5s linear infinite;
  }

  .snow-drift.sd1 { left: max(20px, calc(50vw - 400px - 320px)); font-size: 16px; animation-delay: 0.3s; }
  .snow-drift.sd2 { left: max(110px, calc(50vw - 400px - 180px)); font-size: 18px; animation-delay: 2.5s; }
  .snow-drift.sd3 { right: max(30px, calc(50vw - 400px - 300px)); font-size: 15px; animation-delay: 1.4s; }
  .snow-drift.sd4 { right: max(120px, calc(50vw - 400px - 170px)); font-size: 20px; animation-delay: 3.8s; }
  .snow-drift.sd5 { right: max(200px, calc(50vw - 400px - 80px)); font-size: 13px; animation-delay: 5.1s; }

  .anime-snow-cap { display: none; }
  .atmo-snow .anime-snow-system { display: block; }
  .atmo-snow .anime-snow-cap { display: block; }
  .season-winter .anime-snow-cap { display: block; }

  /* --- 动漫夜月星宿与暖光串灯 --- */
  .anime-night-heavens {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 3;
  }

  .anime-moon {
    position: fixed;
    top: 52px;
    right: max(32px, calc(50vw - 400px - clamp(200px, 18vw, 360px)));
    width: clamp(38px, 3.5vw, 60px);
    height: clamp(38px, 3.5vw, 60px);
    filter: drop-shadow(0 0 14px rgba(254, 240, 138, 0.8));
  }

  @keyframes starTwinkleCross {
    0%, 100% { transform: scale(0.7) rotate(0deg); opacity: 0.3; }
    50% { transform: scale(1.25) rotate(45deg); opacity: 0.95; filter: drop-shadow(0 0 6px #fde047); }
  }

  .star-spark {
    position: fixed;
    fill: #fef08a;
    animation: starTwinkleCross 4.5s ease-in-out infinite;
  }

  .star-spark.ss1 { top: 12%; left: max(35px, calc(50vw - 400px - 300px)); width: 14px; height: 14px; animation-delay: 0.2s; }
  .star-spark.ss2 { top: 24%; left: max(95px, calc(50vw - 400px - 190px)); width: 8px; height: 8px; animation-delay: 1.8s; }
  .star-spark.ss3 { top: 16%; right: max(90px, calc(50vw - 400px - 210px)); width: 13px; height: 13px; animation-delay: 0.9s; }
  .star-spark.ss4 { top: 30%; right: max(45px, calc(50vw - 400px - 310px)); width: 7px; height: 7px; animation-delay: 2.7s; }
  .star-spark.ss5 { top: 8%; right: max(160px, calc(50vw - 400px - 140px)); width: 11px; height: 11px; animation-delay: 3.5s; }

  /* 阳台复古暖光吊灯串 */
  .bulb-soft-glow {
    opacity: 0;
    transition: opacity 1.2s ease;
  }
  .bulb-core {
    fill: #e2e8f0;
    transition: fill 1.2s ease;
  }

  .atmo-night .anime-night-heavens {
    display: block;
  }
  .atmo-night .balcony-framework {
    filter: brightness(0.72) contrast(1.12) hue-rotate(-12deg);
  }
  .atmo-night .bulb-core {
    fill: #fef08a;
    filter: drop-shadow(0 0 4px #fef08a);
  }
  .atmo-night .bulb-soft-glow {
    opacity: 0.55;
    animation: bulbAura 4s ease-in-out infinite alternate;
  }
  @keyframes bulbAura {
    0% { opacity: 0.4; transform: scale(0.95); }
    100% { opacity: 0.75; transform: scale(1.1); }
  }

  /* --------------------------------------------------------------------------
     5. 四季色彩与花草状态映射
     -------------------------------------------------------------------------- */
  .season-spring {
    --sky-top: rgba(186, 230, 253, 0.45);
    --sky-bottom: rgba(254, 240, 138, 0.15);
    --leaf-dark: #365314;
    --leaf-primary: #4d7c0f;
    --leaf-secondary: #65a30d;
    --leaf-light: #84cc16;
    --hydrangea-c1: #38bdf8;
    --hydrangea-c2: #818cf8;
    --hydrangea-c3: #f472b6;
    --succ-tip: #f43f5e;
    --petal-color: #fbcfe8;
  }

  .season-summer {
    --sky-top: rgba(125, 211, 252, 0.5);
    --sky-bottom: rgba(253, 224, 71, 0.2);
    --leaf-dark: #1e3a1e;
    --leaf-primary: #15803d;
    --leaf-secondary: #22c55e;
    --leaf-light: #4ade80;
    --hydrangea-c1: #0ea5e9;
    --hydrangea-c2: #6366f1;
    --hydrangea-c3: #ec4899;
    --succ-tip: #e11d48;
    --petal-color: #fde047;
  }

  .season-autumn {
    --sky-top: rgba(254, 215, 170, 0.5);
    --sky-bottom: rgba(251, 146, 60, 0.25);
    --leaf-dark: #78350f;
    --leaf-primary: #b45309;
    --leaf-secondary: #d97706;
    --leaf-light: #f59e0b;
    --hydrangea-c1: #f97316;
    --hydrangea-c2: #ea580c;
    --hydrangea-c3: #c2410c;
    --succ-tip: #9a3412;
    --petal-color: #fed7aa;
  }

  .season-winter {
    --sky-top: rgba(224, 242, 254, 0.45);
    --sky-bottom: rgba(241, 245, 249, 0.25);
    --leaf-dark: #1e293b;
    --leaf-primary: #334155;
    --leaf-secondary: #475569;
    --leaf-light: #64748b;
    --hydrangea-c1: #94a3b8;
    --hydrangea-c2: #cbd5e1;
    --hydrangea-c3: #e2e8f0;
    --succ-tip: #94a3b8;
    --petal-color: #ffffff;
  }
}
