/* 中文标题：花园明朝体 */
@font-face {
  font-family: 'HanaMinA';
  src: url('/fonts/HanaMinA.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  unicode-range: U+4E00-9FFF, U+3400-4DBF, U+20000-2A6DF, U+2A700-2B73F, U+2B740-2B81F, U+2B820-2CEAF, U+F900-FAFF, U+2F800-2FA1F;
}

/* 中文正文：方正书宋体 */
@font-face {
  font-family: 'FangZhengShuSong';
  src: url('/fonts/FangZhengShuSong.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  unicode-range: U+4E00-9FFF, U+3400-4DBF, U+20000-2A6DF, U+2A700-2B73F, U+2B740-2B81F, U+2B820-2CEAF, U+F900-FAFF, U+2F800-2FA1F;
}

/* 英文标题：Fraunces */
@font-face {
  font-family: 'Fraunces';
  src: url('/fonts/Fraunces.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* 英文正文：Commissioner */
@font-face {
  font-family: 'Commissioner';
  src: url('/fonts/Commissioner.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* 应用字体到相应的元素 */
h1, h2, h3, h4, h5, h6, .article-title, .post-title, .homepage-title {
  font-family: 'Fraunces', 'HanaMinA', Georgia, serif;
}

body, .article-content, .prose, p, span, div, .homepage-subtitle, .homepage-description {
  font-family: 'Commissioner', 'FangZhengShuSong', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* 确保中文内容使用正确的字体，注意将英文字体放在前面 */
html[lang^="zh"] h1, 
html[lang^="zh"] h2, 
html[lang^="zh"] h3, 
html[lang^="zh"] h4, 
html[lang^="zh"] h5, 
html[lang^="zh"] h6,
html[lang^="zh"] .article-title,
html[lang^="zh"] .post-title,
html[lang^="zh"] .homepage-title {
  font-family: 'Fraunces', 'HanaMinA', Georgia, serif;
}

html[lang^="zh"] body, 
html[lang^="zh"] .article-content, 
html[lang^="zh"] .prose, 
html[lang^="zh"] p,
html[lang^="zh"] span,
html[lang^="zh"] div,
html[lang^="zh"] .homepage-subtitle,
html[lang^="zh"] .homepage-description {
  font-family: 'Commissioner', 'FangZhengShuSong', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* 移除max-w-prose限制，如文档中提到的 */
.max-w-prose {
  max-width: none !important;
}﻿/*!
 * Project: Heti
 * URL: https://github.com/sivan/heti
 * Author: Sivan [sun.sivan@gmail.com]
 */@font-face{font-family:"Heti Hei";src:"Heti Hei SC","Heti Hei TC","Heti Hei JP","Heti Hei KR"}@font-face{font-family:"Heti Hei SC";src:local("PingFang SC Regular"),local("Heiti SC Regular"),local("Microsoft YaHei"),local("Source Han Sans CN Regular"),local("Noto Sans CJK SC Regular"),local("WenQuanYi Micro Hei"),local("Droid Sans Fallback")}@font-face{font-family:"Heti Hei TC";src:local("PingFang TC Regular"),local("Heiti TC Regular"),local("Microsoft Jhenghei"),local("Source Han Sans HK Regular"),local("Source Han Sans TW Regular"),local("Noto Sans CJK TC Regular"),local("WenQuanYi Micro Hei"),local("Droid Sans Fallback")}@font-face{font-family:"Heti Hei JP";src:local("Hiragino Sans GB W3"),local("Source Han Sans JP Regular"),local("Noto Sans CJK JP Regular"),local("Droid Sans Fallback")}@font-face{font-family:"Heti Hei KR";src:local("Source Han Sans KR Regular"),local("Noto Sans CJK KR Regular"),local("Droid Sans Fallback")}@font-face{font-family:"Heti Hei";font-weight:200;src:"Heti Hei SC Light","Heti Hei TC Light","Heti Hei JP Light","Heti Hei KR Light"}@font-face{font-family:"Heti Hei SC Light";font-weight:200;src:local("PingFang SC Light"),local("Heiti SC Light"),"Heti Hei SC Light Fallback",local("Source Han Sans CN Light"),local("Noto Sans CJK SC Light")}@font-face{font-family:"Heti Hei TC Light";font-weight:200;src:local("PingFang TC Light"),local("Heiti TC Light"),local("Microsoft Jhenghei Light"),local("Source Han Sans HK Light"),local("Source Han Sans TW Light"),local("Noto Sans CJK TC Light")}@font-face{font-family:"Heti Hei JP Light";font-weight:200;src:local("Source Han Sans JP Light"),local("Noto Sans CJK JP Light")}@font-face{font-family:"Heti Hei KR Light";font-weight:200;src:local("Source Han Sans KR Light"),local("Noto Sans CJK KR Light")}@font-face{font-family:"Heti Hei SC Light Fallback";font-weight:200;src:local("Microsoft YaHei"),local("Droid Sans Fallback")}@font-face{font-family:"Heti Hei";font-weight:600;src:"Heti Hei SC Bold","Heti Hei TC Bold","Heti Hei JP Bold","Heti Hei KR Bold"}@font-face{font-family:"Heti Hei SC Bold";font-weight:600;src:local("PingFang SC Medium"),local("Heiti SC Medium"),"Heti Hei SC Bold Fallback",local("Source Han Sans CN Bold"),local("Noto Sans CJK SC Bold")}@font-face{font-family:"Heti Hei TC Bold";font-weight:600;src:local("PingFang TC Medium"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local("Source Han Sans HK Bold"),local("Source Han Sans TW Bold"),local("Noto Sans CJK TC Bold")}@font-face{font-family:"Heti Hei JP Bold";font-weight:600;src:local("Hiragino Sans GB W6"),local("Source Han Sans JP Bold"),local("Noto Sans CJK JP Bold")}@font-face{font-family:"Heti Hei KR Bold";font-weight:600;src:local("Source Han Sans KR Bold"),local("Noto Sans CJK KR Bold")}@font-face{font-family:"Heti Hei SC Bold Fallback";font-weight:600;src:local("Microsoft YaHei"),local("Droid Sans Fallback")}@font-face{font-family:"Heti Hei Black";font-weight:800;src:"Heti Hei SC Black","Heti Hei TC Black","Heti Hei JP Black","Heti Hei KR Black"}@font-face{font-family:"Heti Hei SC Black";font-weight:800;src:local("Lantinghei SC Heavy"),local("PingFang SC Semibold"),local("Heiti SC Medium"),"Heti Hei SC Black Fallback",local("Source Han Sans CN Heavy"),local("Noto Sans CJK SC Heavy")}@font-face{font-family:"Heti Hei TC Black";font-weight:800;src:local("Lantinghei TC Heavy"),local("PingFang TC Semibold"),local("Heiti TC Medium"),local("Microsoft Jhenghei Bold"),local("Source Han Sans HK Heavy"),local("Source Han Sans TW Heavy"),local("Noto Sans CJK TC Heavy")}@font-face{font-family:"Heti Hei JP Black";font-weight:800;src:local("Hiragino Sans GB W6"),local("Source Han Sans JP Heavy"),local("Noto Sans CJK JP Heavy")}@font-face{font-family:"Heti Hei KR Black";font-weight:800;src:local("Source Han Sans KR Heavy"),local("Noto Sans CJK KR Heavy")}@font-face{font-family:"Heti Hei SC Black Fallback";font-weight:800;src:local("Microsoft YaHei"),local("Droid Sans Fallback")}@font-face{font-family:"Heti Song";src:local("Songti SC Regular"),local("Songti TC Regular"),local("SimSun")}@font-face{font-family:"Heti Song";font-weight:200;src:local("Songti SC Light"),local("Songti TC Light"),"Heti Song Light Fallback"}@font-face{font-family:"Heti Song Light Fallback";font-weight:200;src:local("SimSun")}@font-face{font-family:"Heti Song";font-weight:600;src:local("Songti SC Bold"),local("Songti TC Bold"),"Heti Song Bold Fallback"}@font-face{font-family:"Heti Song Bold Fallback";font-weight:600;src:local("SimSun")}@font-face{font-family:"Heti Song Black";font-weight:800;src:local("Songti SC Black"),local("SimSun")}@font-face{font-family:"Heti Kai";src:local("Kaiti SC Regular"),local("Kaiti TC Regular"),local("STKaiti"),local("Kaiti"),local("BiauKai")}@font-face{font-family:"Heti Kai";font-weight:600;src:local("Kaiti SC Bold"),local("Kaiti TC Bold")}@font-face{font-family:"Heti Kai Bold Fallback";font-weight:600;src:local("STKaiti"),local("Kaiti") local("BiauKai")}@font-face{font-family:"Heti Kai Black";font-weight:800;src:local("Kaiti SC Black"),local("Kaiti TC Black"),local("STKaiti"),local("Kaiti")}.heti{max-width:42em;font-size:16px;font-weight:400;-webkit-font-smoothing:subpixel-antialiased;line-height:1.5;overflow-wrap:break-word;word-wrap:break-word;hyphens:auto;letter-spacing:.02em}.heti::before,.heti::after{content:"";display:table}.heti::after{clear:both}.heti>*:first-child,.heti section>*:first-child,.heti td>*:first-child{margin-block-start:0 !important}.heti>*:last-child,.heti section>*:last-child,.heti td>*:last-child{margin-block-end:0 !important}.heti blockquote{margin-block-start:12px;margin-block-end:24px;margin-inline-start:32px;margin-inline-end:32px;padding-block-start:12px;padding-block-end:12px;padding-inline-start:16px;padding-inline-end:16px;background-color:rgba(0,0,0,.054)}@media(prefers-color-scheme: dark){.heti blockquote{background-color:rgba(255,255,255,.054)}}.heti figure{display:block;text-align:center}.heti figure>img{display:block;margin-inline-start:auto;margin-inline-end:auto}.heti hr{inline-size:30%;block-size:1px;margin-block-start:48px;margin-block-end:47px;margin-inline-start:auto;margin-inline-end:auto;border:0;background-color:#ccc}@media(prefers-color-scheme: dark){.heti hr{background-color:#404040}}.heti p{margin-block-start:12px;margin-block-end:24px;text-align:justify}.heti p:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti p:not(:lang(zh)){text-align:start}.heti pre{margin-block-start:12px;margin-block-end:12px;margin-inline-start:0;margin-inline-end:0;padding-block-start:12px;padding-block-end:12px;padding-inline-start:16px;padding-inline-end:16px;overflow:auto;font-family:"SFMono-Regular",consolas,"Liberation Mono",menlo,courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";white-space:pre;word-wrap:normal;border-radius:4px;background-color:rgba(0,0,0,.054)}@media(prefers-color-scheme: dark){.heti pre{background-color:rgba(255,255,255,.054)}}.heti pre code{margin:0;padding:0;border:0;border-radius:0;background-color:rgba(0,0,0,0);color:inherit}.heti:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti:not(:lang(zh)){letter-spacing:0}.heti a,.heti abbr,.heti code,.heti heti-spacing,.heti [lang=en-US]{letter-spacing:normal}.heti h1,.heti h2,.heti h3,.heti h4,.heti h5,.heti h6{position:relative;margin:0;margin-block-start:24px;margin-block-end:12px;font-weight:600}.heti h1{margin-block-end:24px;font-size:32px;line-height:48px}.heti h2{font-size:24px;line-height:36px}.heti h3{font-size:20px;line-height:36px}.heti h4{font-size:18px;line-height:24px}.heti h5{font-size:16px;line-height:24px}.heti h6{font-size:14px;line-height:24px}.heti h1,.heti h2,.heti h3{letter-spacing:.05em}.heti h1:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti h1:not(:lang(zh)),.heti h2:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti h2:not(:lang(zh)),.heti h3:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti h3:not(:lang(zh)){letter-spacing:0}.heti h1+h2,.heti h2+h3,.heti h3+h4,.heti h4+h5,.heti h5+h6{margin-block-start:12px}.heti ul,.heti ol,.heti dl{margin-block-start:12px;margin-block-end:24px}.heti ul,.heti ol{padding-inline-start:32px}.heti ul ul,.heti ul ol,.heti ol ul,.heti ol ol{margin-block-start:0;margin-block-end:0}.heti ul{list-style-type:disc}.heti ol{list-style-type:decimal}.heti ul ul,.heti ol ul{list-style-type:circle}.heti ul ul ul,.heti ul ol ul,.heti ol ul ul,.heti ol ol ul{list-style-type:square}.heti li{list-style-type:unset}.heti table{box-sizing:border-box;table-layout:fixed;margin-block-start:12px;margin-block-end:24px;margin-inline-start:auto;margin-inline-end:auto;border-collapse:collapse;border-width:1px;border-style:solid;border-color:#ccc;word-break:break-word}@media(prefers-color-scheme: dark){.heti table{border-color:#404040}}.heti th,.heti td{padding-block-start:6px;padding-block-end:6px;padding-inline-start:8px;padding-inline-end:8px;border-width:1px;border-style:solid;border-color:#ccc}@media(prefers-color-scheme: dark){.heti th,.heti td{border-color:#404040}}.heti caption{caption-side:bottom;margin-block-start:2px;margin-block-end:-4px;font-size:14px;line-height:24px}.heti a{text-decoration:none}.heti a:hover{padding-block-end:1px;border-block-end:1px solid currentColor;text-decoration:none}.heti abbr[title]{padding-block-end:1px;border-block-end:1px dotted;text-decoration:none;cursor:help}.heti b,.heti strong{font-weight:600}.heti code{margin-inline-start:.25em;margin-inline-end:.25em;font-family:"SFMono-Regular",consolas,"Liberation Mono",menlo,courier,monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:.875em}.heti dfn{font-weight:600}.heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti dfn:not(:lang(zh)){font-weight:400}.heti em{font-weight:600}.heti figcaption{display:inline-block;vertical-align:top;font-size:14px;text-align:start}.heti i{font-style:italic}.heti ins,.heti u{padding-block-end:1px;border-block-end:1px solid;text-decoration:none}.heti mark{padding-block-start:2px;padding-block-end:2px;padding-inline-start:1px;padding-inline-end:1px;margin-inline-start:1px;margin-inline-end:1px;background-color:rgba(255,247,0,.88);color:inherit}@media(prefers-color-scheme: dark){.heti mark{background-color:rgba(77,74,0,.88)}}.heti q{quotes:"「" "」" "『" "』"}.heti q:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti q:not(:lang(zh)){quotes:initial;quotes:auto}.heti rt{font-size:.875em;font-weight:400}.heti small{font-size:.875em}.heti strong{font-weight:600}.heti sub,.heti sup{position:relative;margin-inline-start:.25em;margin-inline-end:.25em;font-size:.75em;font-family:"Helvetica Neue",helvetica,arial,"Heti Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;line-height:1;vertical-align:baseline}.heti sub{bottom:-0.25em}.heti sup{top:-0.5em}.heti sup:target,.heti sup a:target{background-color:#dbedff}@media(prefers-color-scheme: dark){.heti sup:target,.heti sup a:target{background-color:#3a6188}}.heti summary{padding-inline-start:1em;outline:0;cursor:pointer}.heti summary::-webkit-details-marker{width:.6em;margin-inline-end:.4em}.heti u[title]{cursor:help;border-block-end-width:3px;border-block-end-style:double;border-block-end-color:rgba(0,0,0,.54)}@media(prefers-color-scheme: dark){.heti u[title]{border-block-end-color:rgba(255,255,255,.54)}}.heti address,.heti cite,.heti dfn,.heti dt,.heti em{font-style:normal}.heti address:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti address:not(:lang(zh)),.heti cite:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti cite:not(:lang(zh)),.heti dfn:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti dfn:not(:lang(zh)),.heti dt:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti dt:not(:lang(zh)),.heti em:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti em:not(:lang(zh)){font-style:italic}.heti abbr[title],.heti del,.heti ins,.heti s,.heti u{margin-inline-start:1px;margin-inline-end:1px}.heti,.heti--sans{font-family:"Helvetica Neue",helvetica,arial,"Heti Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--serif{font-family:"Times New Roman",times,"Heti Song",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--classic{font-family:"Times New Roman",times,"Heti Song",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--classic h1,.heti--classic h2,.heti--classic h3,.heti--classic h4,.heti--classic h5,.heti--classic h6{font-family:"Times New Roman",times,"Heti Kai Black",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:800}.heti--classic blockquote,.heti--classic cite,.heti--classic q{font-family:"Times New Roman",times,"Heti Kai",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--classic figcaption,.heti--classic caption,.heti--classic th{font-family:"Helvetica Neue",helvetica,arial,"Heti Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--hei{font-family:"Helvetica Neue",helvetica,arial,"Heti Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--song{font-family:"Times New Roman",times,"Heti Song",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--kai{font-family:"Times New Roman",times,"Heti Kai",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--columns-1,.heti--columns-2,.heti--columns-3,.heti--columns-4,.heti--columns-16em,.heti--columns-20em,.heti--columns-24em,.heti--columns-28em,.heti--columns-32em,.heti--columns-36em,.heti--columns-40em,.heti--columns-44em,.heti--columns-48em,.heti comma{max-width:none;column-gap:2em}.heti--columns-1 p,.heti--columns-2 p,.heti--columns-3 p,.heti--columns-4 p,.heti--columns-16em p,.heti--columns-20em p,.heti--columns-24em p,.heti--columns-28em p,.heti--columns-32em p,.heti--columns-36em p,.heti--columns-40em p,.heti--columns-44em p,.heti--columns-48em p,.heti comma p{margin-block-start:6px;margin-block-end:12px;text-indent:2em}.heti--columns-1{column-count:1}.heti--columns-2{column-count:2}.heti--columns-3{column-count:3}.heti--columns-4{column-count:4}.heti--columns-16em{column-width:16em}.heti--columns-20em{column-width:20em}.heti--columns-24em{column-width:24em}.heti--columns-28em{column-width:28em}.heti--columns-32em{column-width:32em}.heti--columns-36em{column-width:36em}.heti--columns-40em{column-width:40em}.heti--columns-44em{column-width:44em}.heti--columns-48em{column-width:48em}.heti--vertical{max-width:none;max-height:42em;writing-mode:vertical-rl;letter-spacing:.125em}.heti--vertical h1,.heti--vertical h2,.heti--vertical h3,.heti--vertical h4,.heti--vertical h5,.heti--vertical h6{text-align:start}.heti--vertical q{quotes:"「" "」" "『" "』"}.heti--ancient,.heti--poetry{font-family:"Times New Roman",times,"Heti Song",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}.heti--ancient h1,.heti--ancient h2,.heti--ancient h3,.heti--ancient h4,.heti--ancient h5,.heti--ancient h6,.heti--poetry h1,.heti--poetry h2,.heti--poetry h3,.heti--poetry h4,.heti--poetry h5,.heti--poetry h6{font-family:"Times New Roman",times,"Heti Kai Black",serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:800;text-align:center}.heti--ancient h1 .heti-meta,.heti--ancient h2 .heti-meta,.heti--ancient h3 .heti-meta,.heti--ancient h4 .heti-meta,.heti--ancient h5 .heti-meta,.heti--ancient h6 .heti-meta,.heti--poetry h1 .heti-meta,.heti--poetry h2 .heti-meta,.heti--poetry h3 .heti-meta,.heti--poetry h4 .heti-meta,.heti--poetry h5 .heti-meta,.heti--poetry h6 .heti-meta{font-weight:400}@media screen and (min-width: 640px){.heti--ancient h1 .heti-meta,.heti--ancient h2 .heti-meta,.heti--ancient h3 .heti-meta,.heti--ancient h4 .heti-meta,.heti--ancient h5 .heti-meta,.heti--ancient h6 .heti-meta,.heti--poetry h1 .heti-meta,.heti--poetry h2 .heti-meta,.heti--poetry h3 .heti-meta,.heti--poetry h4 .heti-meta,.heti--poetry h5 .heti-meta,.heti--poetry h6 .heti-meta{position:absolute;line-height:inherit;text-indent:0;display:inline;margin-block-start:4px;margin-inline-start:8px}}.heti--ancient .heti-meta,.heti--poetry .heti-meta{line-height:24px;text-align:center;text-indent:0}.heti--ancient p{text-indent:2em}.heti--poetry p{text-align:center;text-indent:0}.heti--annotation p{margin-block-start:0;margin-block-end:0;line-height:2.25;text-indent:2em}.heti--annotation em{-webkit-text-emphasis:filled circle;-webkit-text-emphasis-position:under;text-emphasis:filled circle;text-emphasis-position:under right;font-weight:400}.heti--annotation em:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti--annotation em:not(:lang(zh)){-webkit-text-emphasis:none;text-emphasis:none}.heti--annotation .heti-meta{margin-block-start:12px;margin-block-end:24px}.heti .heti-meta{display:block;text-indent:0}.heti .heti-verse{text-align:center;text-indent:0}.heti .heti-large{font-size:18px;line-height:24px}.heti .heti-x-large{font-size:20px;line-height:30px;letter-spacing:.05em}.heti .heti-small{font-size:14px;line-height:24px}.heti .heti-x-small{font-size:12px;line-height:18px}.heti .heti-list-latin{list-style-type:upper-latin}.heti .heti-list-latin ol{list-style-type:lower-roman}.heti .heti-list-latin ol ol{list-style-type:lower-latin}.heti .heti-list-han{list-style-type:cjk-ideographic}.heti .heti-list-han ol{list-style-type:decimal}.heti .heti-list-han ol ol{list-style-type:decimal-leading-zero}.heti .heti-fn{margin-block-start:59px;border-block-start:1px solid;border-block-start-color:#ccc;font-size:14px;font-family:"Helvetica Neue",helvetica,arial,"Heti Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";line-height:24px}@media(prefers-color-scheme: dark){.heti .heti-fn{border-block-start-color:#404040}}.heti .heti-fn ol{margin-block-start:12px;margin-block-end:0}.heti .heti-fn li:target{background-color:#dbedff}@media(prefers-color-scheme: dark){.heti .heti-fn li:target{background-color:#3a6188}}.heti .heti-hang{position:absolute;line-height:inherit;text-indent:0}.heti .heti-em{-webkit-text-emphasis:filled circle;-webkit-text-emphasis-position:under;text-emphasis:filled circle;text-emphasis-position:under right}.heti .heti-em:not(:lang(zh)):not(:lang(ja)):not(:lang(ko)),.heti .heti-em:not(:lang(zh)){-webkit-text-emphasis:none;text-emphasis:none}.heti .heti-ruby--inline{display:inline-flex;flex-direction:column-reverse;height:1.5em;vertical-align:top}.heti .heti-ruby--inline rt{display:inline;margin-bottom:-0.25em;line-height:1;text-align:center}.heti heti-spacing{display:inline}.heti heti-spacing+sup,.heti heti-spacing+sub{margin-inline-start:0}.heti .heti-spacing-start{margin-inline-end:.25em}.heti .heti-spacing-end{margin-inline-start:.25em}.heti heti-adjacent{display:inline;text-spacing-trim:space-all;unicode-bidi:isolate}.heti .heti-adjacent-half{margin-inline-end:-0.5em}.heti .heti-adjacent-quarter{margin-inline-end:-0.25em}
/* Component-only styles (Details, APlayer, Douban/NeoDB cards, and Friends cards).
   Global typography and layout live in editorial.css. */

/* Details / collapsible content */
details[open] > summary svg { transform: rotate(180deg); }
details > summary svg { transition: transform 0.2s ease; }
details > summary { list-style: none; user-select: none; }
details > summary::-webkit-details-marker { display: none; }
details .highlight { border-radius: 6px; }
details pre { border-radius: 6px; overflow-x: auto; }
details code { padding: 0; }

/* Music player */
.aplayer,
.aplayer .aplayer-lrc,
.aplayer .aplayer-list li {
  font-family: 'Commissioner', 'FangZhengShuSong', sans-serif !important;
}

@media (max-width: 768px) {
  .aplayer { margin: 0 1rem; }
}

/* Douban / NeoDB content card shortcode */
.db-card {
  margin: 2rem 0;
  border: 1px solid var(--editorial-line);
  border-radius: 10px;
  background: var(--editorial-surface);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.03);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.db-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
}

.db-card-subject {
  display: flex;
  align-items: flex-start;
  line-height: 1.6;
  padding: 14px 16px;
  position: relative;
}

.db-card-content { flex: 1 1 auto; min-width: 0; }
.db-card-post { width: 96px; margin-right: 16px; display: flex; flex: 0 0 auto; }
.db-card-post img { width: 100%; border-radius: 6px; margin: 0 !important; }
.db-card-title { margin-bottom: 5px; font-size: 1.08rem; font-weight: 600; }
.db-card-title a { text-decoration: none !important; background-image: none !important; }
.db-card-abstract,
.db-card-comment { font-size: 0.88rem; color: var(--editorial-muted); overflow: auto; max-height: 7rem; margin-top: 8px; }
.db-card-cate {
  position: absolute;
  top: 12px;
  right: 14px;
  color: var(--editorial-accent);
  background: var(--editorial-quote-bg);
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 0.75rem;
  font-family: ui-monospace, SFMono-Regular, monospace;
}
.rating_nums { font-size: 0.85rem; color: var(--editorial-muted); margin-left: 4px; }

/* ==============================================================================
   Friends Link Cards (Inspired by nanako.icu/friends/)
   ============================================================================== */
.friends-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.1rem;
  margin: 2rem 0 3rem;
}

.article-content a.friend-link,
.prose a.friend-link,
a.friend-link {
  display: block;
  text-decoration: none !important;
  color: inherit !important;
  background-image: none !important;
}

.article-content a.friend-link:hover,
.prose a.friend-link:hover,
a.friend-link:hover {
  background-image: none !important;
}

.friend-link-div {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem 1.2rem;
  height: 100%;
  background-color: var(--editorial-surface);
  border: 1px solid var(--editorial-line);
  border-radius: 12px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.025);
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.25s ease,
              border-color 0.25s ease;
}

.dark .friend-link-div {
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.2);
}

a.friend-link:hover .friend-link-div {
  transform: translateY(-3px);
  border-color: var(--editorial-accent);
  box-shadow: 0 10px 24px -6px rgba(0, 0, 0, 0.08);
}

.dark a.friend-link:hover .friend-link-div {
  box-shadow: 0 12px 28px -6px rgba(0, 0, 0, 0.4);
}

.friend-link-avatar {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  overflow: hidden;
  border: 1px solid var(--editorial-line);
  background-color: var(--editorial-paper);
}

.friend-avatar {
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  border-radius: 50% !important;
  box-shadow: none !important;
  border: none !important;
  object-fit: cover;
  transition: transform 0.35s ease;
}

a.friend-link:hover .friend-avatar {
  transform: scale(1.08) rotate(3deg);
}

.friend-link-info {
  flex: 1;
  min-width: 0;
}

.friend-name {
  display: block;
  font-style: normal;
  font-size: 1.02rem;
  font-weight: 600;
  color: var(--editorial-ink);
  margin-bottom: 0.22rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color 0.2s ease;
}

a.friend-link:hover .friend-name {
  color: var(--editorial-accent);
}

.friend-bio {
  margin: 0 !important;
  font-size: 0.84rem;
  line-height: 1.48 !important;
  color: var(--editorial-muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-align: start !important;
}

.friends-apply-box {
  margin-top: 2.5rem;
  padding: 1.4rem 1.6rem;
  background-color: var(--editorial-surface);
  border: 1px dashed var(--editorial-line);
  border-radius: 12px;
}

.friends-apply-box h3 {
  margin-top: 0 !important;
  margin-bottom: 0.6rem !important;
  font-size: 1.15rem;
}

.friends-apply-box p {
  margin-bottom: 0.8rem !important;
  font-size: 0.94rem;
  color: var(--editorial-muted);
}
/* ==============================================================================
   Editorial / Research Notebook & nanako.icu Inspired Visual System
   ============================================================================== */

:root {
  --editorial-paper: #faf8f5;
  --editorial-surface: #ffffff;
  --editorial-ink: #2c2a29;
  --editorial-muted: #6e6a66;
  --editorial-faint: #9e9a95;
  --editorial-accent: #b57c78;
  --editorial-accent-soft: rgba(181, 124, 120, 0.26);
  --editorial-highlight: rgba(181, 124, 120, 0.16);
  --editorial-line: #ebe6df;
  --editorial-code: #f4f1ec;
  --editorial-quote-bg: rgba(181, 124, 120, 0.06);
  --editorial-grid: rgba(44, 42, 41, 0.022);
}

.dark {
  --editorial-paper: #1e1d1b;
  --editorial-surface: #262522;
  --editorial-ink: #ebe7e0;
  --editorial-muted: #a6a29a;
  --editorial-faint: #78746d;
  --editorial-accent: #d4a574;
  --editorial-accent-soft: rgba(212, 165, 116, 0.28);
  --editorial-highlight: rgba(212, 165, 116, 0.2);
  --editorial-line: #383632;
  --editorial-code: #292724;
  --editorial-quote-bg: rgba(212, 165, 116, 0.08);
  --editorial-grid: rgba(255, 255, 255, 0.02);
}

/* 全局基础排版与纸张方格纹理 */
body {
  color: var(--editorial-ink) !important;
  background-color: var(--editorial-paper) !important;
  background-image:
    linear-gradient(var(--editorial-grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--editorial-grid) 1px, transparent 1px) !important;
  background-size: 24px 24px !important;
  font-family: 'Commissioner', 'FangZhengShuSong', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  text-wrap: pretty;
  overflow-wrap: break-word;
  transition: background-color 0.25s ease, color 0.25s ease;
}

/* 顶部导航栏与页脚静谧毛玻璃效果 */
nav,
header,
footer {
  border-color: var(--editorial-line) !important;
}

.main-menu {
  background-color: color-mix(in srgb, var(--editorial-paper) 88%, transparent) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* 标题层级体系 */
h1, h2, h3, h4, h5, h6 {
  color: var(--editorial-ink) !important;
  font-family: 'Fraunces', 'HanaMinA', 'FangZhengShuSong', Georgia, serif;
  font-weight: 600;
  text-wrap: balance;
  letter-spacing: -0.018em;
}

/* 全文排版容器 */
.prose {
  color: var(--editorial-ink) !important;
  font-size: 1.05rem;
  line-height: 1.85;
}

.prose p,
.article-content p {
  margin-top: 0;
  margin-bottom: 1.45rem;
  line-height: 1.88;
}

/* 重点加粗：参考 nanako.icu 柔和手账马克笔底色 */
.prose strong,
.prose b,
.article-content strong,
.article-content b {
  color: var(--editorial-ink) !important;
  background-color: var(--editorial-highlight) !important;
  font-weight: 600 !important;
  padding: 0.08rem 0.3rem !important;
  margin: 0 1px !important;
  border-radius: 3px !important;
}

/* 中文斜体规范化 */
.prose em,
.prose i,
.article-content em,
.article-content i {
  font-style: normal;
  font-weight: 600;
  color: var(--editorial-ink);
}

/* 正文与目录链接：还原 nanako.icu 荧光笔半透明上浮下划线动效 */
.prose a:not(.friend-link),
.article-content a:not(.friend-link),
.editorial-toc #TableOfContents a {
  color: var(--editorial-ink) !important;
  text-decoration: none !important;
  border-bottom: none !important;
  background-image: linear-gradient(to top, var(--editorial-accent-soft) 32%, transparent 32%) !important;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  padding: 0 0.1rem;
  border-radius: 2px;
  transition: background-image 0.25s ease, color 0.2s ease;
}

.prose a:not(.friend-link):hover,
.article-content a:not(.friend-link):hover,
.editorial-toc #TableOfContents a:hover {
  color: var(--editorial-ink) !important;
  background-image: linear-gradient(to top, var(--editorial-accent-soft) 86%, transparent 86%) !important;
}

/* 行内代码与代码块排版 */
.prose code,
.article-content code {
  background-color: var(--editorial-code) !important;
  color: var(--editorial-ink) !important;
  padding: 0.16rem 0.4rem;
  border-radius: 4px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 0.875em;
  border: 1px solid var(--editorial-line);
}

.prose pre,
.article-content pre {
  background-color: var(--editorial-code) !important;
  border: 1px solid var(--editorial-line);
  border-radius: 8px;
  padding: 1.15rem 1.35rem;
  overflow-x: auto;
  margin: 1.6rem 0;
  line-height: 1.65;
}

.prose pre code,
.article-content pre code {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  font-size: 0.9em;
  color: inherit !important;
}

/* 引用块排版 */
.prose blockquote,
.article-content blockquote {
  border-left: 3px solid var(--editorial-accent) !important;
  background-color: var(--editorial-quote-bg) !important;
  padding: 0.95rem 1.35rem !important;
  margin: 1.8rem 0 !important;
  border-radius: 0 8px 8px 0;
  color: var(--editorial-muted) !important;
  font-size: 0.98rem;
  line-height: 1.82;
  font-style: normal;
}

.prose blockquote p:last-child,
.article-content blockquote p:last-child {
  margin-bottom: 0;
}

/* 表格排版 */
.prose table,
.article-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 2rem 0;
  font-size: 0.94rem;
  line-height: 1.6;
  border-top: 2px solid var(--editorial-ink);
  border-bottom: 2px solid var(--editorial-ink);
}

.prose th,
.article-content th {
  font-weight: 600;
  text-align: left;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--editorial-line);
  color: var(--editorial-ink);
}

.prose td,
.article-content td {
  padding: 0.7rem 1rem;
  border-bottom: 1px dashed var(--editorial-line);
  color: var(--editorial-muted);
}

.prose tr:last-child td,
.article-content tr:last-child td {
  border-bottom: none;
}

/* 列表排版 */
.prose ul,
.prose ol,
.article-content ul,
.article-content ol {
  padding-left: 1.5rem;
  margin-bottom: 1.4rem;
}

.prose li,
.article-content li {
  margin-bottom: 0.45rem;
  line-height: 1.8;
}

/* ------------------------------
   文章列表与归档流 (Editorial List & Archives)
   ------------------------------ */
.editorial-list {
  width: min(100%, 820px);
  margin: 0 auto;
  padding: 2.5rem 1rem 5rem;
}

.editorial-list__header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1.5rem;
  margin-bottom: 2.5rem;
  border-bottom: 1px solid var(--editorial-line);
  padding-bottom: 1.1rem;
}

.editorial-list__title {
  font-size: clamp(2rem, 3.8vw, 2.75rem);
  margin: 0;
  line-height: 1.1;
}

.editorial-list__count {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.78rem;
  color: var(--editorial-faint);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.editorial-year {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  gap: 1.6rem;
  margin-bottom: 2.25rem;
}

.editorial-year__label {
  position: sticky;
  top: 6rem;
  align-self: start;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--editorial-accent) !important;
  margin: 0;
  padding-top: 0.9rem;
}

.editorial-year__entries {
  border-top: 1px solid var(--editorial-line);
}

.editorial-entry {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1.5rem;
  padding: 1.15rem 0;
  border-bottom: 1px dashed var(--editorial-line) !important;
  background: transparent !important;
  transition: transform 0.2s ease;
}

.editorial-entry:hover {
  background: transparent !important;
  transform: translateX(3px);
}

.editorial-entry:hover .editorial-entry__title a {
  color: var(--editorial-accent) !important;
}

.editorial-entry__main {
  flex-grow: 1;
  min-width: 0;
}

.editorial-entry__title {
  font-size: 1.14rem;
  font-weight: 550;
  margin: 0 0 0.35rem;
  font-family: 'Commissioner', 'FangZhengShuSong', sans-serif;
}

.editorial-entry__title a {
  color: var(--editorial-ink) !important;
  text-decoration: none !important;
  background-image: none !important;
  transition: color 0.18s ease;
}

.editorial-entry__summary {
  font-size: 0.88rem;
  color: var(--editorial-muted);
  margin: 0.35rem 0 0.55rem;
  line-height: 1.68;
}

.editorial-entry__topics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.editorial-entry__topic {
  font-size: 0.75rem;
  color: var(--editorial-muted) !important;
  text-decoration: none !important;
  background-image: none !important;
  font-family: ui-monospace, SFMono-Regular, monospace;
  transition: color 0.18s ease;
}

.editorial-entry__topic:hover {
  color: var(--editorial-accent) !important;
}

.editorial-entry__meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.25rem;
  flex-shrink: 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.76rem;
  color: var(--editorial-faint);
  text-align: right;
  white-space: nowrap;
}

/* ------------------------------
   文章正文页 (Single Article Layout)
   ------------------------------ */
.editorial-article {
  width: min(100%, 1040px);
  margin-inline: auto;
  padding: 2rem 1.25rem 5rem;
  border-bottom: 0 !important;
  background: transparent !important;
}

.editorial-article__header {
  width: min(100%, 720px);
  margin: 1.5rem 0 2.4rem;
  border-bottom: 1px solid var(--editorial-line);
  padding-bottom: 1.6rem;
}

.editorial-article__title {
  font-size: clamp(2rem, 3.8vw, 2.85rem);
  font-weight: 600;
  line-height: 1.2;
  margin: 0 0 1rem;
  letter-spacing: -0.025em;
  text-wrap: balance;
}

.editorial-article__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.85rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.82rem;
  color: var(--editorial-muted);
}

.editorial-article__layout {
  position: relative;
  display: grid !important;
  grid-template-columns: minmax(0, 720px) minmax(180px, 230px);
  justify-content: space-between;
  align-items: start;
  gap: clamp(2rem, 4.5vw, 4rem);
  width: 100%;
  max-width: none !important;
}

.editorial-article__main {
  min-width: 0;
  width: 100%;
  max-width: 720px !important;
}

.editorial-article__content {
  width: 100%;
  max-width: 720px !important;
  font-size: 1.05rem;
  line-height: 1.88;
}

.editorial-article__content h2 {
  font-size: 1.5rem;
  margin-top: 2.8rem;
  margin-bottom: 1rem;
  border-bottom: 1px solid var(--editorial-line);
  padding-bottom: 0.4rem;
}

.editorial-article__content h3 {
  font-size: 1.22rem;
  margin-top: 2.1rem;
  margin-bottom: 0.8rem;
}

.editorial-article__content img {
  border-radius: 8px;
  margin: 1.8rem auto;
  max-width: 100%;
  height: auto;
  display: block;
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.06);
  border: 1px solid var(--editorial-line);
}

.dark .editorial-article__content img {
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.35);
}

.editorial-article__content figure {
  margin: 2rem 0;
  text-align: center;
}

.editorial-article__content figcaption {
  font-size: 0.84rem;
  color: var(--editorial-muted);
  text-align: center;
  margin-top: 0.55rem;
  font-family: 'FangZhengShuSong', 'Commissioner', serif;
}

/* 右侧悬浮文章目录 (Sticky Right Rail TOC like nanako.icu) */
.editorial-toc {
  order: 2;
  min-width: 0;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  border: none !important;
}

.editorial-toc .toc {
  padding-inline-start: 0 !important;
  border-inline-start: 0 !important;
}

.editorial-toc #TableOfContents {
  border-left: 1.5px solid var(--editorial-line);
  padding-left: 1rem;
}

.editorial-toc #TableOfContents ul {
  list-style: none;
  padding-left: 0.75rem;
  margin: 0;
}

.editorial-toc #TableOfContents > ul {
  padding-left: 0;
}

.editorial-toc #TableOfContents li {
  margin-bottom: 0.45rem;
  line-height: 1.5;
}

.editorial-toc #TableOfContents a {
  font-size: 0.84rem;
  line-height: 1.5;
}

/* 底部标签 */
.editorial-article__footer-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 3rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--editorial-line);
}

.editorial-article__footer-tags a {
  padding: 0.22rem 0.65rem !important;
  background-color: var(--editorial-surface) !important;
  background-image: none !important;
  border: 1px solid var(--editorial-line) !important;
  border-radius: 6px !important;
  font-size: 0.78rem !important;
  color: var(--editorial-muted) !important;
  text-decoration: none !important;
  font-family: ui-monospace, SFMono-Regular, monospace;
  transition: border-color 0.2s ease, color 0.2s ease;
}

.editorial-article__footer-tags a:hover {
  border-color: var(--editorial-accent) !important;
  color: var(--editorial-accent) !important;
}

/* 响应式适配 */
@media (max-width: 1023px) {
  .editorial-article__layout {
    display: block !important;
  }

  .editorial-article__header,
  .editorial-article__main,
  .editorial-article__content {
    max-width: 720px !important;
    margin-inline: auto;
  }

  .editorial-toc {
    display: none;
  }
}

@media (max-width: 768px) {
  .editorial-list,
  .editorial-article {
    padding: 1.6rem 0.75rem 3.5rem;
  }

  .editorial-year {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }

  .editorial-year__label {
    position: static;
  }

  .editorial-entry {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
  }

  .editorial-entry__meta {
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
    text-align: left;
  }
}
/* Fine-grained scale calibration layer */

.editorial-list {
  width: min(100%, 820px);
  margin-inline: auto;
}

.editorial-article {
  width: min(100%, 1040px);
  margin-inline: auto;
}

.editorial-article__header {
  width: min(100%, 720px);
}

.editorial-article__layout {
  grid-template-columns: minmax(0, 720px) minmax(180px, 230px);
  gap: clamp(2rem, 4vw, 3.75rem);
}

.editorial-article__main,
.editorial-article__content {
  max-width: 720px !important;
}

@media (max-width: 720px) {
  .editorial-list {
    width: 100%;
  }

  .editorial-list__title {
    font-size: 2.15rem;
  }

  .editorial-article__title {
    font-size: clamp(1.85rem, 8.5vw, 2.5rem);
  }

  .editorial-article__content {
    font-size: 1rem;
    line-height: 1.82;
  }
}
/* ==============================================================================
   Editorial Homepage Design System (Refined Magazine & Art Gallery Composition)
   ============================================================================== */

.homepage-body {
  min-height: 100vh;
  margin: 0;
  padding: 0;
  color: var(--editorial-ink);
  background-color: var(--editorial-paper);
  background-image: none !important;
  font-family: 'Commissioner', 'FangZhengShuSong', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  overflow-x: hidden;
}

/* 主容器：桌面端左右分栏 */
.homepage-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(400px, 0.88fr);
  background-color: var(--editorial-paper);
}

/* 左侧：视觉画廊展示区 */
.homepage-visual {
  position: relative;
  min-height: 100vh;
  background-color: var(--editorial-surface);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: clamp(1.8rem, 3.5vw, 4rem);
}

.homepage-visual-wrapper {
  position: relative;
  width: 100%;
  height: auto;
  max-height: 88vh;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 16px 45px rgba(0, 0, 0, 0.08), 0 2px 10px rgba(0, 0, 0, 0.04);
  background-color: var(--editorial-surface);
}

.dark .homepage-visual-wrapper {
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.45), 0 2px 10px rgba(0, 0, 0, 0.2);
}

.homepage-cover {
  width: 100%;
  max-width: 100%;
  height: auto;
  max-height: 85vh;
  object-fit: contain;
  object-position: center;
  display: block;
  border-radius: 6px;
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.homepage-visual-wrapper:hover .homepage-cover {
  transform: scale(1.015);
}

/* 右侧：内容与导航面板 */
.homepage-panel {
  min-width: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: clamp(2rem, 4vw, 4rem) clamp(2.5rem, 5vw, 5.5rem);
  border-left: 1px solid var(--editorial-line);
  background-color: var(--editorial-paper);
  background-image: none !important;
  position: relative;
}
/* 顶部导航 */
.homepage-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.9rem 1.6rem;
  font-size: 0.84rem;
  letter-spacing: 0.06em;
  padding: 0;
  margin: 0;
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border: none !important;
}

.homepage-nav a {
  color: var(--editorial-muted) !important;
  text-decoration: none !important;
  font-weight: 500;
  position: relative;
  padding: 0.25rem 0;
  transition: color 0.2s ease;
}

.homepage-nav a::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 1.5px;
  background-color: var(--editorial-accent);
  transition: width 0.25s ease;
}
.homepage-nav a:hover {
  color: var(--editorial-ink) !important;
}

.homepage-nav a:hover::after {
  width: 100%;
}

.homepage-theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent !important;
  border: none !important;
  cursor: pointer;
  padding: 0.2rem;
  margin-left: 0.2rem;
  color: var(--editorial-muted) !important;
  transition: color 0.2s ease, transform 0.2s ease;
  line-height: 1;
}

.homepage-theme-toggle:hover {
  color: var(--editorial-ink) !important;
  transform: scale(1.1);
}

.homepage-theme-toggle .icon {
  width: 1.15rem;
  height: 1.15rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.homepage-theme-toggle .icon svg {
  width: 100%;
  height: 100%;
  fill: currentColor;
}

/* 中部核心文案 */
.homepage-copy {
  margin: auto 0;
  padding: 2rem 0;
  max-width: 560px;
}

.homepage-kicker {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  margin: 0 0 1.2rem;
  color: var(--editorial-accent);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.74rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
}

.homepage-kicker::before {
  content: "";
  display: inline-block;
  width: 18px;
  height: 1.5px;
  background-color: var(--editorial-accent);
}

.homepage-title {
  margin: 0;
  color: var(--editorial-ink) !important;
  font-family: 'FangZhengShuSong', 'HanaMinA', 'Fraunces', Georgia, serif;
  font-size: clamp(2.4rem, 3.6vw, 3.8rem);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.025em;
  text-wrap: balance;
}

.homepage-content {
  margin-top: 1.6rem;
  color: var(--editorial-muted);
  font-size: 1rem;
  line-height: 1.85;
}

.homepage-content p {
  margin: 0 0 1rem;
}

.homepage-content p:last-child {
  margin-bottom: 0;
}

/* 进入阅读 CTA 按钮 */
.homepage-content .homepage-action-link {
  margin-top: 2.4rem;
}

.homepage-content .homepage-action-link a {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.8rem 1.6rem;
  background-color: var(--editorial-ink);
  color: var(--editorial-paper) !important;
  border-radius: 6px;
  text-decoration: none !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.8rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.1);
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.homepage-content .homepage-action-link a:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  background-color: var(--editorial-accent);
  color: #ffffff !important;
}

.dark .homepage-content .homepage-action-link a:hover {
  color: #1a1a18 !important;
}

.homepage-content .homepage-action-link a::after {
  content: "→";
  font-size: 1.15em;
  transition: transform 0.2s ease;
}

.homepage-content .homepage-action-link a:hover::after {
  transform: translateX(4px);
}

/* 底部 Footer */
.homepage-footer {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  color: var(--editorial-faint);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  padding-top: 1.5rem;
}

.homepage-footer__rule {
  flex: 1 1 auto;
  height: 1px;
  background-color: var(--editorial-line);
}

.homepage-footer a {
  flex: 0 0 auto;
  color: var(--editorial-muted) !important;
  text-decoration: none !important;
  transition: color 0.18s ease;
}

.homepage-footer a:hover {
  color: var(--editorial-ink) !important;
}

/* ================= 响应式断点适配 ================= */

/* 中等尺寸屏幕 / 平板横屏 (860px ~ 1100px) */
@media (min-width: 861px) and (max-width: 1100px) {
  .homepage-shell {
    grid-template-columns: 1fr 1fr;
  }
  .homepage-panel {
    padding: 2rem 2.5rem;
  }
  .homepage-title {
    font-size: 2.4rem;
  }
}

/* 平板竖屏与手机移动端 (< 860px) */
@media (max-width: 860px) {
  .homepage-shell {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
  }

  .homepage-panel {
    min-height: auto;
    border-left: 0;
    padding: 1.5rem 1.4rem 2.5rem;
    order: 2;
  }

  .homepage-visual {
    min-height: 0;
    padding: 1.4rem 1.4rem 0;
    order: 1;
    background-color: transparent;
  }

  .homepage-visual-wrapper {
    max-height: 380px;
    aspect-ratio: 16 / 10;
  }

  .homepage-nav {
    justify-content: center;
    gap: 0.7rem 1.2rem;
    padding-bottom: 0.9rem;
    border-bottom: 1px solid var(--editorial-line);
  }

  .homepage-copy {
    margin: 1.8rem 0 1.2rem;
    padding: 0;
  }

  .homepage-title {
    font-size: clamp(2rem, 7.5vw, 2.6rem);
  }

  .homepage-content {
    margin-top: 1.2rem;
    font-size: 0.95rem;
    line-height: 1.75;
  }

  .homepage-content .homepage-action-link {
    margin-top: 1.6rem;
  }

  .homepage-content .homepage-action-link a {
    width: 100%;
    justify-content: center;
    padding: 0.8rem 1.4rem;
  }

  .homepage-footer {
    justify-content: center;
    flex-wrap: wrap;
    text-align: center;
    padding-top: 1.5rem;
    border-top: 1px dashed var(--editorial-line);
  }

  .homepage-footer__rule {
    display: none;
  }

  .homepage-footer a {
    width: 100%;
    margin-top: 0.3rem;
  }
}

/* 超小屏适配 (< 420px) */
@media (max-width: 420px) {
  .homepage-panel {
    padding: 1.2rem 1rem 2rem;
  }
  .homepage-visual {
    padding: 1rem 1rem 0;
  }
  .homepage-visual-wrapper {
    max-height: 260px;
    aspect-ratio: 16 / 10;
  }
  .homepage-nav {
    font-size: 0.78rem;
    gap: 0.5rem 0.85rem;
  }
  .homepage-title {
    font-size: 1.85rem;
  }
}
/* ==============================================================================
   微语 / 书摘 / Memos 页面专属样式 (Warm Editorial Notebook & Password Vault UI)
   ============================================================================== */

:root {
  --memo-paper: var(--editorial-paper, #faf8f5);
  --memo-surface: var(--editorial-surface, #ffffff);
  --memo-ink: var(--editorial-ink, #2c2a29);
  --memo-muted: var(--editorial-muted, #6e6a66);
  --memo-faint: var(--editorial-faint, #9e9a95);
  --memo-accent: var(--editorial-accent, #b57c78);
  --memo-accent-soft: var(--editorial-accent-soft, rgba(181, 124, 120, 0.16));
  --memo-line: var(--editorial-line, #ebe6df);
  --memo-code: var(--editorial-code, #f4f1ec);
  --memo-quote-bg: var(--editorial-quote-bg, rgba(181, 124, 120, 0.06));
}

.dark {
  --memo-paper: var(--editorial-paper, #1e1d1b);
  --memo-surface: var(--editorial-surface, #262522);
  --memo-ink: var(--editorial-ink, #ebe7e0);
  --memo-muted: var(--editorial-muted, #a6a29a);
  --memo-faint: var(--editorial-faint, #78746d);
  --memo-accent: var(--editorial-accent, #d4a574);
  --memo-accent-soft: var(--editorial-accent-soft, rgba(212, 165, 116, 0.2));
  --memo-line: var(--editorial-line, #383632);
  --memo-code: var(--editorial-code, #292724);
  --memo-quote-bg: var(--editorial-quote-bg, rgba(212, 165, 116, 0.08));
}

.memos-container {
  width: min(100%, 760px);
  margin-inline: auto;
  padding: 2.2rem 1rem 4.5rem;
  font-family: 'Commissioner', 'FangZhengShuSong', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* 页面头部 */
.memos-header {
  margin-bottom: 1.8rem;
  border-bottom: 1px solid var(--memo-line);
  padding-bottom: 1.4rem;
}

.memos-title {
  font-size: clamp(2rem, 4vw, 2.8rem);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.025em;
  color: var(--memo-ink) !important;
  margin: 0 0 0.45rem;
  font-family: 'Fraunces', 'HanaMinA', 'FangZhengShuSong', Georgia, serif;
}

.memos-subtitle {
  font-size: 0.9rem;
  color: var(--memo-muted);
  margin: 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: 0.02em;
}

.memos-intro {
  margin-top: 0.85rem;
  font-size: 0.96rem;
  line-height: 1.75;
  color: var(--memo-muted);
}

/* 作者看板与操作栏卡片 */
.memos-profile-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1.25rem;
  padding: 1.15rem 1.4rem;
  background-color: var(--memo-surface);
  border: 1px solid var(--memo-line);
  border-radius: 12px;
  margin-bottom: 1.6rem;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.025);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.memos-profile-card__user {
  display: flex;
  align-items: center;
  gap: 0.95rem;
}

.memos-profile-card__avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid var(--memo-line);
  background-color: var(--memo-paper);
  margin: 0 !important;
}

.memos-profile-card__info {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.memos-profile-card__name-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.memos-profile-card__name {
  font-size: 1rem;
  font-weight: 600;
  color: var(--memo-ink);
}

.memos-profile-card__badge {
  font-size: 0.68rem;
  padding: 0.12rem 0.5rem;
  background-color: var(--memo-accent-soft);
  color: var(--memo-accent);
  border-radius: 9999px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-weight: 600;
}

.memos-profile-card__bio {
  font-size: 0.82rem;
  color: var(--memo-muted);
  margin: 0;
}

.memos-profile-card__right {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  flex-wrap: wrap;
}

.memos-profile-card__stats {
  display: flex;
  align-items: center;
  gap: 1.1rem;
}

.memos-stat-item {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.memos-stat-value {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--memo-ink);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  line-height: 1.2;
}

.memos-stat-label {
  font-size: 0.72rem;
  color: var(--memo-muted);
}

.memos-stat-divider {
  width: 1px;
  height: 24px;
  background-color: var(--memo-line);
}

.memos-publish-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.memos-btn-publish {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1rem;
  background-color: var(--memo-accent);
  color: #ffffff !important;
  border: none;
  border-radius: 8px;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(181, 124, 120, 0.25);
  transition: opacity 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
  font-family: inherit;
}

.dark .memos-btn-publish {
  color: #1e1d1b !important;
  box-shadow: 0 2px 8px rgba(212, 165, 116, 0.2);
}

.memos-btn-publish:hover {
  opacity: 0.94;
  transform: translateY(-1px);
}

.memos-btn-config {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.3rem;
  height: 34px;
  padding: 0 0.65rem;
  background-color: var(--memo-paper);
  border: 1px solid var(--memo-line);
  color: var(--memo-muted);
  border-radius: 8px;
  font-size: 0.78rem;
  cursor: pointer;
  transition: all 0.2s ease;
  font-family: inherit;
}

.memos-btn-config:hover {
  color: var(--memo-ink);
  border-color: var(--memo-accent);
}

/* 工具栏：搜索与标签 */
.memos-toolbar {
  margin-bottom: 1.8rem;
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
}

.memos-search-box {
  position: relative;
  width: 100%;
}

.memos-search-icon {
  position: absolute;
  left: 0.95rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--memo-faint);
  pointer-events: none;
}

.memos-search-input {
  width: 100%;
  padding: 0.7rem 2.4rem 0.7rem 2.5rem;
  background-color: var(--memo-surface);
  border: 1px solid var(--memo-line);
  border-radius: 10px;
  color: var(--memo-ink);
  font-size: 0.9rem;
  outline: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  font-family: inherit;
}

.memos-search-input:focus {
  border-color: var(--memo-accent);
  box-shadow: 0 0 0 3px var(--memo-accent-soft);
}

.memos-search-clear {
  position: absolute;
  right: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  font-size: 1.2rem;
  color: var(--memo-muted);
  cursor: pointer;
  padding: 0.2rem 0.5rem;
  border-radius: 4px;
}

.memos-tags-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}

.memos-tag-btn {
  padding: 0.32rem 0.78rem;
  font-size: 0.8rem;
  background-color: var(--memo-surface);
  border: 1px solid var(--memo-line);
  color: var(--memo-muted);
  border-radius: 9999px;
  cursor: pointer;
  transition: all 0.18s ease;
  font-family: inherit;
}

.memos-tag-btn:hover {
  border-color: var(--memo-accent);
  color: var(--memo-ink);
}

.memos-tag-btn.active {
  background-color: var(--memo-accent);
  border-color: var(--memo-accent);
  color: #ffffff !important;
  font-weight: 500;
}

.dark .memos-tag-btn.active {
  color: #1e1d1b !important;
}

.memos-tag-count {
  font-size: 0.72rem;
  opacity: 0.82;
  font-family: ui-monospace, SFMono-Regular, monospace;
}

/* 微语手账卡片流 (去除冗余左侧头像列，专注阅读呼吸感) */
.memos-stream {
  display: flex;
  flex-direction: column;
  gap: 1.35rem;
  position: relative;
}

.memo-card {
  position: relative;
  transition: transform 0.2s ease, opacity 0.25s ease;
}

.memo-card--highlight .memo-card__body {
  animation: memoHighlight 2s ease;
}

@keyframes memoHighlight {
  0% { transform: scale(1.01); }
  50% { border-color: var(--memo-accent); box-shadow: 0 0 0 3px var(--memo-accent-soft); }
  100% { transform: scale(1); }
}

.memo-card__body {
  width: 100%;
  background-color: var(--memo-surface);
  border: 1px solid var(--memo-line);
  border-radius: 12px;
  padding: 1.35rem 1.55rem;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.025);
  transition: border-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease;
}

.dark .memo-card__body {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.22);
}

.memo-card:hover .memo-card__body {
  border-color: color-mix(in srgb, var(--memo-accent) 45%, var(--memo-line));
  box-shadow: 0 8px 24px -6px rgba(0, 0, 0, 0.06);
}

.memo-card--pinned .memo-card__body {
  border-left: 3.5px solid var(--memo-accent);
  background-image: linear-gradient(135deg, var(--memo-quote-bg) 0%, transparent 40%);
}

/* 卡片头部：清爽时间戳与置顶/设备标记 */
.memo-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding-bottom: 0.55rem;
  border-bottom: 1px dashed var(--memo-line);
}

.memo-card__meta-left {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}

.memo-time {
  font-size: 0.8rem;
  color: var(--memo-muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-weight: 500;
}

.memo-badge--pinned {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.72rem;
  padding: 0.1rem 0.48rem;
  background-color: var(--memo-accent-soft);
  color: var(--memo-accent);
  border-radius: 6px;
  font-weight: 600;
}

.memo-card__meta-right {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}

.memo-device {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  font-size: 0.75rem;
  color: var(--memo-faint);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  background-color: var(--memo-paper);
  padding: 0.12rem 0.5rem;
  border-radius: 4px;
  border: 1px solid var(--memo-line);
}

/* 卡片正文 */
.memo-card__content {
  font-size: 1.02rem;
  line-height: 1.88;
  color: var(--memo-ink);
  word-break: break-word;
}

.memo-card__content p {
  margin: 0 0 0.8rem;
  text-align: start;
}

.memo-card__content p:last-child {
  margin-bottom: 0;
}

.memo-card__content blockquote {
  border-left: 3px solid var(--memo-accent);
  background-color: var(--memo-quote-bg);
  padding: 0.65rem 1rem;
  color: var(--memo-muted);
  margin: 0.65rem 0;
  border-radius: 0 6px 6px 0;
  font-style: normal;
}

.memo-card__content code {
  background-color: var(--memo-code);
  padding: 0.15rem 0.38rem;
  border-radius: 4px;
  font-size: 0.88em;
  font-family: ui-monospace, SFMono-Regular, monospace;
}

/* 书摘/引用来源卡片：文学引文风格 */
.memo-source-card {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem;
  padding: 0.55rem 0.9rem;
  background-color: var(--memo-quote-bg);
  border-right: 3px solid var(--memo-accent);
  border-radius: 6px 0 0 6px;
  margin-top: 0.15rem;
  font-size: 0.86rem;
}

.memo-source-card__icon {
  color: var(--memo-accent);
  display: flex;
  align-items: center;
  flex-shrink: 0;
}

.memo-source-card__info {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.memo-source-card__title {
  font-weight: 600;
  color: var(--memo-ink);
  font-family: 'FangZhengShuSong', 'HanaMinA', 'Fraunces', Georgia, serif;
}

.memo-source-card__author {
  color: var(--memo-muted);
}

/* 配图画廊 */
.memo-gallery {
  display: grid;
  gap: 0.5rem;
  margin-top: 0.25rem;
  border-radius: 8px;
  overflow: hidden;
}

.memo-gallery--1 {
  grid-template-columns: minmax(0, 1fr);
  max-width: 380px;
}

.memo-gallery--2 {
  grid-template-columns: repeat(2, 1fr);
}

.memo-gallery--3,
.memo-gallery--4,
.memo-gallery--5,
.memo-gallery--6 {
  grid-template-columns: repeat(3, 1fr);
}

.memo-gallery__item {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background-color: var(--memo-paper);
  border-radius: 6px;
  border: 1px solid var(--memo-line);
}

.memo-gallery--1 .memo-gallery__item {
  aspect-ratio: auto;
  max-height: 300px;
}

.memo-gallery__img {
  width: 100%;
  height: 100%;
  margin: 0 !important;
  object-fit: cover;
  cursor: zoom-in;
  transition: transform 0.25s ease;
}

.memo-gallery__img:hover {
  transform: scale(1.03);
}

/* 底部：标签与操作栏 */
.memo-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.6rem;
  padding-top: 0.55rem;
  border-top: 1px dashed var(--memo-line);
  font-size: 0.8rem;
}

.memo-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}

.memo-tag {
  background: var(--memo-quote-bg);
  border: none;
  padding: 0.12rem 0.5rem;
  border-radius: 4px;
  font-size: 0.76rem;
  color: var(--memo-accent);
  cursor: pointer;
  font-family: ui-monospace, SFMono-Regular, monospace;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.memo-tag:hover {
  background-color: var(--memo-accent);
  color: #ffffff;
}

.dark .memo-tag:hover {
  color: #1e1d1b;
}

.memo-card__actions {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-left: auto;
}

.memo-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  background: none;
  border: none;
  padding: 0.22rem 0.45rem;
  font-size: 0.76rem;
  color: var(--memo-faint);
  cursor: pointer;
  border-radius: 4px;
  transition: all 0.15s ease;
  font-family: inherit;
}

.memo-action-btn:hover {
  color: var(--memo-ink);
  background-color: var(--memo-code);
}

.memo-action-btn--danger:hover {
  color: #d9534f;
  background-color: rgba(217, 83, 79, 0.1);
}

/* 空状态与无结果提示 */
.memos-empty,
.memos-no-result {
  text-align: center;
  padding: 3rem 1.5rem;
  background-color: var(--memo-surface);
  border: 1px dashed var(--memo-line);
  border-radius: 12px;
  color: var(--memo-muted);
}

.memos-reset-btn {
  margin-top: 0.8rem;
  padding: 0.45rem 1rem;
  background-color: var(--memo-accent);
  color: #ffffff;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.85rem;
}

/* ================= 模态弹窗与密码直发组件 ================= */
.memos-modal {
  position: fixed;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
  z-index: 9998;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}

.memos-modal__dialog {
  background-color: var(--memo-surface);
  border: 1px solid var(--memo-line);
  border-radius: 14px;
  width: min(100%, 560px);
  max-height: 92vh;
  overflow-y: auto;
  padding: 1.4rem 1.6rem;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.22);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  animation: modalSlideDown 0.2s ease;
}

@keyframes modalSlideDown {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

.memos-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--memo-line);
  padding-bottom: 0.75rem;
}

.memos-modal__title {
  font-size: 1.12rem;
  font-weight: 600;
  color: var(--memo-ink);
  margin: 0;
}

.memos-modal__close {
  background: none;
  border: none;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--memo-muted);
  cursor: pointer;
  padding: 0 0.3rem;
}

.memos-form-group {
  display: flex;
  flex-direction: column;
  gap: 0.32rem;
  margin-bottom: 0.8rem;
}

.memos-form-row {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.75rem;
}

.memos-form-label {
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--memo-ink);
}

.memos-form-label .required {
  color: var(--memo-accent);
}

.memos-input,
.memos-textarea {
  width: 100%;
  padding: 0.58rem 0.8rem;
  background-color: var(--memo-paper);
  border: 1px solid var(--memo-line);
  border-radius: 8px;
  color: var(--memo-ink);
  font-size: 0.9rem;
  outline: none;
  font-family: inherit;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.memos-input:focus,
.memos-textarea:focus {
  border-color: var(--memo-accent);
  box-shadow: 0 0 0 3px var(--memo-accent-soft);
}

.memos-textarea {
  resize: vertical;
  min-height: 95px;
  line-height: 1.65;
}

/* 发布弹窗内置密码栏 (一键输密码直发) */
.memos-quick-auth-bar {
  padding: 0.75rem 0.95rem;
  background-color: var(--memo-quote-bg);
  border: 1px solid var(--memo-line);
  border-radius: 10px;
  margin-bottom: 0.5rem;
}

.memos-quick-auth__unlocked {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.82rem;
  color: var(--memo-ink);
}

.memos-quick-auth__badge {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-weight: 500;
  color: #3b8a5a;
}

.dark .memos-quick-auth__badge {
  color: #6bc48d;
}

.memos-quick-auth__locked {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.memos-quick-auth__row {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}

.memos-quick-auth__row .memos-input {
  flex: 1;
  min-width: 160px;
  padding: 0.45rem 0.75rem;
  font-size: 0.86rem;
}

.memos-auth-tip {
  padding: 0.75rem 0.95rem;
  background-color: var(--memo-quote-bg);
  border-left: 3px solid var(--memo-accent);
  border-radius: 0 8px 8px 0;
  font-size: 0.82rem;
  color: var(--memo-ink);
  line-height: 1.6;
  margin-bottom: 0.85rem;
}

.memos-auth-tip p {
  margin: 0;
}

.memos-vault-tabs {
  display: flex;
  gap: 0.5rem;
  border-bottom: 1px solid var(--memo-line);
  padding-bottom: 0.6rem;
  margin-bottom: 0.8rem;
}

.memos-vault-tab {
  padding: 0.38rem 0.85rem;
  border-radius: 6px;
  border: 1px solid transparent;
  background: none;
  font-size: 0.84rem;
  color: var(--memo-muted);
  cursor: pointer;
  font-family: inherit;
}

.memos-vault-tab.active {
  background-color: var(--memo-accent-soft);
  color: var(--memo-accent);
  font-weight: 600;
}

.memos-form-help {
  font-size: 0.75rem;
  color: var(--memo-muted);
  line-height: 1.45;
}

.memos-checkbox-label {
  display: inline-flex;
  align-items: center;
  gap: 0.38rem;
  font-size: 0.82rem;
  color: var(--memo-ink);
  cursor: pointer;
  user-select: none;
}

.memos-modal__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem;
  border-top: 1px solid var(--memo-line);
  padding-top: 0.9rem;
  margin-top: 0.25rem;
}

.memos-modal__footer-right {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-left: auto;
}

.memos-btn-primary {
  padding: 0.5rem 1.15rem;
  background-color: var(--memo-accent);
  color: #ffffff !important;
  border: none;
  border-radius: 8px;
  font-size: 0.86rem;
  font-weight: 600;
  cursor: pointer;
  transition: opacity 0.2s ease;
  font-family: inherit;
}

.dark .memos-btn-primary {
  color: #1e1d1b !important;
}

.memos-btn-secondary,
.memos-btn-cancel,
.memos-btn-danger {
  padding: 0.45rem 0.85rem;
  background: none;
  border: 1px solid var(--memo-line);
  border-radius: 8px;
  font-size: 0.8rem;
  cursor: pointer;
  transition: all 0.18s ease;
  font-family: inherit;
  color: var(--memo-muted);
}

.memos-btn-secondary:hover,
.memos-btn-cancel:hover {
  color: var(--memo-ink);
  border-color: var(--memo-accent);
}

.memos-btn-danger {
  color: #d9534f;
  border-color: rgba(217, 83, 79, 0.35);
}

.memos-btn-danger:hover {
  background-color: rgba(217, 83, 79, 0.1);
}

/* 图片灯箱与 Toast */
.memos-lightbox {
  position: fixed;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.86);
  backdrop-filter: blur(4px);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  cursor: zoom-out;
}

.memos-lightbox__content {
  position: relative;
  max-width: 90vw;
  max-height: 90vh;
}

.memos-lightbox__content img {
  max-width: 100%;
  max-height: 85vh;
  object-fit: contain;
  border-radius: 8px;
}

.memos-lightbox__close {
  position: absolute;
  top: -2.4rem;
  right: 0;
  background: none;
  border: none;
  color: #ffffff;
  font-size: 2rem;
  cursor: pointer;
}

.memos-toast {
  position: fixed;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%) translateY(30px);
  background-color: var(--memo-ink);
  color: var(--memo-paper);
  padding: 0.6rem 1.2rem;
  border-radius: 8px;
  font-size: 0.86rem;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease, transform 0.25s ease;
  z-index: 10000;
  white-space: nowrap;
}

.memos-toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

@media (max-width: 640px) {
  .memos-container {
    padding: 1.8rem 0.65rem 3.5rem;
  }
  .memos-profile-card {
    flex-direction: column;
    align-items: flex-start;
    padding: 1rem;
  }
  .memos-profile-card__right {
    width: 100%;
    justify-content: space-between;
    border-top: 1px dashed var(--memo-line);
    padding-top: 0.8rem;
  }
  .memos-form-row {
    grid-template-columns: 1fr;
  }
  .memo-card__body {
    padding: 1.1rem 1.15rem;
  }
}
/* ==============================================================================
   EXIF Photography Gallery Design System (With Password Vault & Auto EXIF Upload)
   ============================================================================== */

:root {
  --photo-paper: var(--editorial-paper, #faf8f5);
  --photo-surface: var(--editorial-surface, #ffffff);
  --photo-ink: var(--editorial-ink, #2c2a29);
  --photo-muted: var(--editorial-muted, #6e6a66);
  --photo-faint: var(--editorial-faint, #9e9a95);
  --photo-accent: var(--editorial-accent, #b57c78);
  --photo-accent-soft: var(--editorial-accent-soft, rgba(181, 124, 120, 0.16));
  --photo-line: var(--editorial-line, #ebe6df);
  --photo-hud-bg: rgba(255, 255, 255, 0.88);
  --photo-pill-bg: rgba(44, 42, 41, 0.045);
}

.dark {
  --photo-paper: var(--editorial-paper, #1e1d1b);
  --photo-surface: var(--editorial-surface, #262522);
  --photo-ink: var(--editorial-ink, #ebe7e0);
  --photo-muted: var(--editorial-muted, #a6a29a);
  --photo-faint: var(--editorial-faint, #78746d);
  --photo-accent: var(--editorial-accent, #d4a574);
  --photo-accent-soft: var(--editorial-accent-soft, rgba(212, 165, 116, 0.2));
  --photo-line: var(--editorial-line, #383632);
  --photo-hud-bg: rgba(30, 29, 27, 0.88);
  --photo-pill-bg: rgba(255, 255, 255, 0.07);
}

.gallery-container {
  width: min(100%, 880px);
  margin-inline: auto;
  padding: 2.8rem 1rem 5rem;
  font-family: 'Commissioner', 'FangZhengShuSong', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* ================= 顶栏 Header 与控制面板 ================= */
.gallery-header {
  margin-bottom: 2.5rem;
  border-bottom: 1px solid var(--photo-line);
  padding-bottom: 1.5rem;
}

.gallery-header__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: 1.25rem;
}

.gallery-header__kicker {
  color: var(--photo-accent);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  font-weight: 600;
  margin-bottom: 0.35rem;
}

.gallery-title {
  font-size: clamp(2rem, 4.2vw, 2.9rem);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.025em;
  color: var(--photo-ink) !important;
  margin: 0 0 0.45rem;
  font-family: 'Fraunces', 'HanaMinA', 'FangZhengShuSong', Georgia, serif;
}

.gallery-subtitle {
  font-size: 0.92rem;
  color: var(--photo-muted);
  margin: 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}

.gallery-publish-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding-top: 0.25rem;
}

.gallery-btn-publish {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1rem;
  background-color: var(--photo-accent);
  color: #ffffff !important;
  border: none;
  border-radius: 8px;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(181, 124, 120, 0.25);
  transition: opacity 0.2s ease, transform 0.15s ease;
  font-family: inherit;
}

.dark .gallery-btn-publish {
  color: #1e1d1b !important;
  box-shadow: 0 2px 8px rgba(212, 165, 116, 0.2);
}

.gallery-btn-publish:hover {
  opacity: 0.94;
  transform: translateY(-1px);
}

.gallery-btn-config {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.3rem;
  height: 34px;
  padding: 0 0.65rem;
  background-color: var(--photo-surface);
  border: 1px solid var(--photo-line);
  color: var(--photo-muted);
  border-radius: 8px;
  font-size: 0.78rem;
  cursor: pointer;
  transition: all 0.2s ease;
  font-family: inherit;
}

.gallery-btn-config:hover {
  color: var(--photo-ink);
  border-color: var(--photo-accent);
}

.gallery-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
}

/* 相册筛选按钮 */
.gallery-albums-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.gallery-album-btn {
  padding: 0.34rem 0.85rem;
  font-size: 0.8rem;
  background-color: var(--photo-surface);
  border: 1px solid var(--photo-line);
  color: var(--photo-muted);
  border-radius: 9999px;
  cursor: pointer;
  transition: all 0.18s ease;
  font-family: inherit;
}

.gallery-album-btn:hover {
  border-color: var(--photo-accent);
  color: var(--photo-ink);
}

.gallery-album-btn.active {
  background-color: var(--photo-accent);
  border-color: var(--photo-accent);
  color: #ffffff !important;
  font-weight: 500;
}

.dark .gallery-album-btn.active {
  color: #1e1d1b !important;
}

.gallery-count {
  font-size: 0.74rem;
  opacity: 0.82;
  font-family: ui-monospace, SFMono-Regular, monospace;
}

/* 视图模式切换器 (Feed / Grid) */
.gallery-view-switcher {
  display: flex;
  align-items: center;
  background-color: var(--photo-surface);
  border: 1px solid var(--photo-line);
  border-radius: 8px;
  padding: 2px;
  margin-left: auto;
}

.gallery-view-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.3rem 0.75rem;
  background: none;
  border: none;
  border-radius: 6px;
  font-size: 0.78rem;
  color: var(--photo-muted);
  cursor: pointer;
  font-family: ui-monospace, SFMono-Regular, monospace;
  font-weight: 500;
  transition: all 0.18s ease;
}

.gallery-view-btn:hover {
  color: var(--photo-ink);
}

.gallery-view-btn.active {
  background-color: var(--photo-accent);
  color: #ffffff !important;
}

.dark .gallery-view-btn.active {
  color: #1e1d1b !important;
}

/* ================= 摄影作品容器 (Feed 大图流模式) ================= */
.gallery-stream--feed {
  display: flex;
  flex-direction: column;
  gap: 3.2rem;
}

.photo-card {
  display: flex;
  flex-direction: column;
  background-color: var(--photo-surface);
  border: 1px solid var(--photo-line);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.04);
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease, opacity 0.25s ease;
}

.dark .photo-card {
  box-shadow: 0 12px 35px rgba(0, 0, 0, 0.35);
}

.photo-card--highlight {
  animation: photoHighlight 2s ease;
}

@keyframes photoHighlight {
  0% { transform: scale(1.01); }
  50% { box-shadow: 0 0 0 3px var(--photo-accent); }
  100% { transform: scale(1); }
}

/* 照片主图区 */
.photo-card__visual {
  position: relative;
  background-color: var(--photo-surface);
  overflow: hidden;
}

.photo-card__img-box {
  position: relative;
  cursor: pointer;
  display: block;
}

.photo-card__img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: contain;
  max-height: 80vh;
  margin: 0 auto !important;
  border-radius: 0 !important;
  border: none !important;
  box-shadow: none !important;
  transition: transform 0.4s ease;
}

.photo-card__hover-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.28);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.25s ease;
}

.photo-card__img-box:hover .photo-card__hover-overlay {
  opacity: 1;
}

.photo-card__zoom-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.45rem 0.95rem;
  background-color: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(6px);
  color: #ffffff;
  border-radius: 9999px;
  font-size: 0.8rem;
  font-family: ui-monospace, SFMono-Regular, monospace;
}

/* ================= EXIF 参数 HUD 面板 (Darkroom HUD Bar) ================= */
.photo-card__hud {
  padding: 1.05rem 1.35rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem 1.15rem;
  border-top: 1px solid var(--photo-line);
  background-color: var(--photo-surface);
  font-size: 0.82rem;
}

.photo-hud__primary {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.4rem;
  color: var(--photo-ink);
}

.photo-hud__camera {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-weight: 600;
  color: var(--photo-ink);
}

.photo-hud__lens {
  color: var(--photo-muted);
}

.photo-hud__divider {
  color: var(--photo-faint);
  margin: 0 0.1rem;
}

/* 曝光三要素 Pills */
.photo-hud__exposure {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-wrap: wrap;
}

.photo-pill {
  display: inline-block;
  padding: 0.14rem 0.5rem;
  background-color: var(--photo-pill-bg);
  border: 1px solid var(--photo-line);
  border-radius: 4px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.76rem;
  color: var(--photo-ink);
  font-weight: 500;
}

.photo-hud__meta {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  color: var(--photo-muted);
  font-family: ui-monospace, SFMono-Regular, monospace;
  font-size: 0.76rem;
  margin-left: auto;
}

.photo-hud__location {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  color: var(--photo-accent);
}

.photo-hud__actions {
  display: flex;
  align-items: center;
  gap: 0.2rem;
}

.photo-hud__btn {
  background: none;
  border: none;
  color: var(--photo-muted);
  cursor: pointer;
  padding: 0.24rem 0.38rem;
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  border-radius: 4px;
  font-size: 0.74rem;
  font-family: inherit;
  transition: all 0.15s ease;
}

.photo-hud__btn:hover {
  color: var(--photo-ink);
  background-color: var(--photo-pill-bg);
}

.photo-hud__btn--danger:hover {
  color: #d9534f;
  background-color: rgba(217, 83, 79, 0.1);
}

/* ================= 摄影作品容器 (Grid 网格模式) ================= */
.gallery-stream--grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.1rem;
}

.gallery-stream--grid .photo-card {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
}

.gallery-stream--grid .photo-card__img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
  max-height: none;
}

.gallery-stream--grid .photo-card__hud {
  padding: 0.75rem 0.9rem;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.45rem;
}

.gallery-stream--grid .photo-hud__meta {
  margin-left: 0;
  width: 100%;
  justify-content: space-between;
}

/* ================= 沉浸式暗房 EXIF Lightbox Modal ================= */
.gallery-modal {
  position: fixed;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.94);
  backdrop-filter: blur(8px);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
}

.gallery-modal__dialog {
  position: relative;
  width: 100vw;
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 1.5rem;
}

.gallery-modal__close {
  position: absolute;
  top: 1.2rem;
  right: 1.5rem;
  background: none;
  border: none;
  color: #ffffff;
  font-size: 2.2rem;
  line-height: 1;
  cursor: pointer;
  z-index: 10;
  padding: 0.2rem 0.5rem;
  opacity: 0.8;
  transition: opacity 0.2s ease;
}

.gallery-modal__close:hover {
  opacity: 1;
}

.gallery-modal__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #ffffff;
  font-size: 1.5rem;
  padding: 0.8rem 1rem;
  border-radius: 8px;
  cursor: pointer;
  z-index: 10;
  backdrop-filter: blur(4px);
  transition: all 0.2s ease;
}

.gallery-modal__nav:hover {
  background: rgba(255, 255, 255, 0.25);
}

.gallery-modal__nav--prev { left: 1.5rem; }
.gallery-modal__nav--next { right: 1.5rem; }

.gallery-modal__body {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}

.gallery-modal__image-wrapper {
  flex-grow: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-height: 78vh;
}

.gallery-modal__image-wrapper img {
  max-width: 90vw;
  max-height: 78vh;
  object-fit: contain;
  border-radius: 6px;
  box-shadow: 0 15px 50px rgba(0, 0, 0, 0.6);
}

.gallery-modal__hud {
  width: min(100%, 720px);
  margin-top: 1rem;
  padding: 0.8rem 1.4rem;
  background-color: rgba(24, 24, 24, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 8px;
  backdrop-filter: blur(10px);
  color: #ffffff;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-size: 0.82rem;
}

.modal-hud__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.modal-hud__title {
  font-size: 0.95rem;
  font-weight: 600;
  margin: 0;
  color: #ffffff !important;
}

.modal-hud__counter {
  font-family: ui-monospace, SFMono-Regular, monospace;
  font-size: 0.78rem;
  color: #999999;
}

.modal-hud__row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.6rem;
  font-family: ui-monospace, SFMono-Regular, monospace;
}

.modal-hud__gear { color: #cccccc; font-size: 0.8rem; }

.modal-pill {
  padding: 0.15rem 0.45rem;
  background-color: rgba(255, 255, 255, 0.12);
  border-radius: 4px;
  font-size: 0.75rem;
  color: #ffffff;
}

.modal-hud__geo { color: #d4a574; font-size: 0.78rem; }

/* ================= 智能 EXIF 解析与文件拖拽上传区 ================= */
.photo-exif-dropzone {
  position: relative;
  border: 1.5px dashed var(--photo-accent);
  background-color: var(--photo-accent-soft);
  border-radius: 10px;
  padding: 0.85rem 1rem;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s ease;
  margin-bottom: 0.85rem;
}

.photo-exif-dropzone:hover {
  background-color: color-mix(in srgb, var(--photo-accent) 22%, transparent);
}

.photo-exif-dropzone input[type="file"] {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  width: 100%;
  height: 100%;
}

.photo-exif-dropzone__title {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--photo-ink);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
}

.photo-exif-dropzone__sub {
  font-size: 0.75rem;
  color: var(--photo-muted);
  margin-top: 0.2rem;
}

.photo-form-grid-4 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.6rem;
}

/* 吐司提示组件 */
.gallery-toast {
  position: fixed;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%) translateY(30px);
  background-color: var(--photo-ink);
  color: var(--photo-paper);
  padding: 0.6rem 1.2rem;
  border-radius: 8px;
  font-size: 0.86rem;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease, transform 0.25s ease;
  z-index: 10001;
  white-space: nowrap;
}

.gallery-toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ================= 响应式适配 ================= */
@media (max-width: 640px) {
  .gallery-container {
    padding: 2rem 0.65rem 3.5rem;
  }

  .gallery-header__top {
    flex-direction: column;
    align-items: flex-start;
  }

  .gallery-publish-actions {
    width: 100%;
  }

  .gallery-btn-publish {
    flex: 1;
    justify-content: center;
  }

  .gallery-controls {
    flex-direction: column;
    align-items: flex-start;
  }

  .gallery-view-switcher {
    margin-left: 0;
    width: 100%;
    justify-content: center;
  }

  .gallery-view-btn {
    flex-grow: 1;
    justify-content: center;
  }

  .photo-card__hud {
    padding: 0.9rem;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.6rem;
  }

  .photo-hud__meta {
    margin-left: 0;
    width: 100%;
    justify-content: space-between;
  }

  .photo-form-grid-4 {
    grid-template-columns: repeat(2, 1fr);
  }

  .gallery-modal__nav {
    display: none;
  }

  .gallery-modal__dialog {
    padding: 0.8rem;
  }
}
