@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_AMS-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/vendor/fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(/vendor/fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/vendor/fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(/vendor/fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/vendor/fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Main-Bold.woff) format("woff"),url(/vendor/fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/vendor/fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(/vendor/fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/vendor/fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Main-Italic.woff) format("woff"),url(/vendor/fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Main-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/vendor/fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(/vendor/fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/vendor/fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Math-Italic.woff) format("woff"),url(/vendor/fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(/vendor/fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(/vendor/fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(/vendor/fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(/vendor/fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(/vendor/fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(/vendor/fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Script-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Size1-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Size2-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Size3-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Size4-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/vendor/fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(/vendor/fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(/vendor/fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.md-body .katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.md-body .katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.md-body .katex .katex-version:after{content:"0.16.47"}.md-body .katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.md-body .katex .katex-html>.newline{display:block}.md-body .katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.md-body .katex .base,.md-body .katex .strut{display:inline-block}.md-body .katex .textbf{font-weight:700}.md-body .katex .textit{font-style:italic}.md-body .katex .textrm{font-family:KaTeX_Main}.md-body .katex .textsf{font-family:KaTeX_SansSerif}.md-body .katex .texttt{font-family:KaTeX_Typewriter}.md-body .katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.md-body .katex .mathit{font-family:KaTeX_Main;font-style:italic}.md-body .katex .mathrm{font-style:normal}.md-body .katex .mathbf{font-family:KaTeX_Main;font-weight:700}.md-body .katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.md-body .katex .amsrm,.md-body .katex .mathbb,.md-body .katex .textbb{font-family:KaTeX_AMS}.md-body .katex .mathcal{font-family:KaTeX_Caligraphic}.md-body .katex .mathfrak,.md-body .katex .textfrak{font-family:KaTeX_Fraktur}.md-body .katex .mathboldfrak,.md-body .katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.md-body .katex .mathtt{font-family:KaTeX_Typewriter}.md-body .katex .mathscr,.md-body .katex .textscr{font-family:KaTeX_Script}.md-body .katex .mathsf,.md-body .katex .textsf{font-family:KaTeX_SansSerif}.md-body .katex .mathboldsf,.md-body .katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.md-body .katex .mathitsf,.md-body .katex .mathsfit,.md-body .katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.md-body .katex .mainrm{font-family:KaTeX_Main;font-style:normal}.md-body .katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.md-body .katex .vlist-r{display:table-row}.md-body .katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.md-body .katex .vlist>span{display:block;height:0;position:relative}.md-body .katex .vlist>span>span{display:inline-block}.md-body .katex .vlist>span>.pstrut{overflow:hidden;width:0}.md-body .katex .vlist-t2{margin-right:-2px}.md-body .katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.md-body .katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.md-body .katex .hbox{width:100%}.md-body .katex .hbox,.md-body .katex .thinbox{display:inline-flex;flex-direction:row}.md-body .katex .thinbox{max-width:0;width:0}.md-body .katex .msupsub{text-align:left}.md-body .katex .mfrac>span>span{text-align:center}.md-body .katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.md-body .katex .hdashline,.md-body .katex .hline,.md-body .katex .mfrac .frac-line,.md-body .katex .overline .overline-line,.md-body .katex .rule,.md-body .katex .underline .underline-line{min-height:1px}.md-body .katex .mspace{display:inline-block}.md-body .katex .smash{display:inline;line-height:0}.md-body .katex .clap,.md-body .katex .llap,.md-body .katex .rlap{position:relative;width:0}.md-body .katex .clap>.inner,.md-body .katex .llap>.inner,.md-body .katex .rlap>.inner{position:absolute}.md-body .katex .clap>.fix,.md-body .katex .llap>.fix,.md-body .katex .rlap>.fix{display:inline-block}.md-body .katex .llap>.inner{right:0}.md-body .katex .clap>.inner,.md-body .katex .rlap>.inner{left:0}.md-body .katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.md-body .katex .rule{border:0 solid;display:inline-block;position:relative}.md-body .katex .hline,.md-body .katex .overline .overline-line,.md-body .katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.md-body .katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.md-body .katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.md-body .katex .fontsize-ensurer.reset-size1.size1,.md-body .katex .sizing.reset-size1.size1{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size1.size2,.md-body .katex .sizing.reset-size1.size2{font-size:1.2em}.md-body .katex .fontsize-ensurer.reset-size1.size3,.md-body .katex .sizing.reset-size1.size3{font-size:1.4em}.md-body .katex .fontsize-ensurer.reset-size1.size4,.md-body .katex .sizing.reset-size1.size4{font-size:1.6em}.md-body .katex .fontsize-ensurer.reset-size1.size5,.md-body .katex .sizing.reset-size1.size5{font-size:1.8em}.md-body .katex .fontsize-ensurer.reset-size1.size6,.md-body .katex .sizing.reset-size1.size6{font-size:2em}.md-body .katex .fontsize-ensurer.reset-size1.size7,.md-body .katex .sizing.reset-size1.size7{font-size:2.4em}.md-body .katex .fontsize-ensurer.reset-size1.size8,.md-body .katex .sizing.reset-size1.size8{font-size:2.88em}.md-body .katex .fontsize-ensurer.reset-size1.size9,.md-body .katex .sizing.reset-size1.size9{font-size:3.456em}.md-body .katex .fontsize-ensurer.reset-size1.size10,.md-body .katex .sizing.reset-size1.size10{font-size:4.148em}.md-body .katex .fontsize-ensurer.reset-size1.size11,.md-body .katex .sizing.reset-size1.size11{font-size:4.976em}.md-body .katex .fontsize-ensurer.reset-size2.size1,.md-body .katex .sizing.reset-size2.size1{font-size:.8333333333em}.md-body .katex .fontsize-ensurer.reset-size2.size2,.md-body .katex .sizing.reset-size2.size2{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size2.size3,.md-body .katex .sizing.reset-size2.size3{font-size:1.1666666667em}.md-body .katex .fontsize-ensurer.reset-size2.size4,.md-body .katex .sizing.reset-size2.size4{font-size:1.3333333333em}.md-body .katex .fontsize-ensurer.reset-size2.size5,.md-body .katex .sizing.reset-size2.size5{font-size:1.5em}.md-body .katex .fontsize-ensurer.reset-size2.size6,.md-body .katex .sizing.reset-size2.size6{font-size:1.6666666667em}.md-body .katex .fontsize-ensurer.reset-size2.size7,.md-body .katex .sizing.reset-size2.size7{font-size:2em}.md-body .katex .fontsize-ensurer.reset-size2.size8,.md-body .katex .sizing.reset-size2.size8{font-size:2.4em}.md-body .katex .fontsize-ensurer.reset-size2.size9,.md-body .katex .sizing.reset-size2.size9{font-size:2.88em}.md-body .katex .fontsize-ensurer.reset-size2.size10,.md-body .katex .sizing.reset-size2.size10{font-size:3.4566666667em}.md-body .katex .fontsize-ensurer.reset-size2.size11,.md-body .katex .sizing.reset-size2.size11{font-size:4.1466666667em}.md-body .katex .fontsize-ensurer.reset-size3.size1,.md-body .katex .sizing.reset-size3.size1{font-size:.7142857143em}.md-body .katex .fontsize-ensurer.reset-size3.size2,.md-body .katex .sizing.reset-size3.size2{font-size:.8571428571em}.md-body .katex .fontsize-ensurer.reset-size3.size3,.md-body .katex .sizing.reset-size3.size3{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size3.size4,.md-body .katex .sizing.reset-size3.size4{font-size:1.1428571429em}.md-body .katex .fontsize-ensurer.reset-size3.size5,.md-body .katex .sizing.reset-size3.size5{font-size:1.2857142857em}.md-body .katex .fontsize-ensurer.reset-size3.size6,.md-body .katex .sizing.reset-size3.size6{font-size:1.4285714286em}.md-body .katex .fontsize-ensurer.reset-size3.size7,.md-body .katex .sizing.reset-size3.size7{font-size:1.7142857143em}.md-body .katex .fontsize-ensurer.reset-size3.size8,.md-body .katex .sizing.reset-size3.size8{font-size:2.0571428571em}.md-body .katex .fontsize-ensurer.reset-size3.size9,.md-body .katex .sizing.reset-size3.size9{font-size:2.4685714286em}.md-body .katex .fontsize-ensurer.reset-size3.size10,.md-body .katex .sizing.reset-size3.size10{font-size:2.9628571429em}.md-body .katex .fontsize-ensurer.reset-size3.size11,.md-body .katex .sizing.reset-size3.size11{font-size:3.5542857143em}.md-body .katex .fontsize-ensurer.reset-size4.size1,.md-body .katex .sizing.reset-size4.size1{font-size:.625em}.md-body .katex .fontsize-ensurer.reset-size4.size2,.md-body .katex .sizing.reset-size4.size2{font-size:.75em}.md-body .katex .fontsize-ensurer.reset-size4.size3,.md-body .katex .sizing.reset-size4.size3{font-size:.875em}.md-body .katex .fontsize-ensurer.reset-size4.size4,.md-body .katex .sizing.reset-size4.size4{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size4.size5,.md-body .katex .sizing.reset-size4.size5{font-size:1.125em}.md-body .katex .fontsize-ensurer.reset-size4.size6,.md-body .katex .sizing.reset-size4.size6{font-size:1.25em}.md-body .katex .fontsize-ensurer.reset-size4.size7,.md-body .katex .sizing.reset-size4.size7{font-size:1.5em}.md-body .katex .fontsize-ensurer.reset-size4.size8,.md-body .katex .sizing.reset-size4.size8{font-size:1.8em}.md-body .katex .fontsize-ensurer.reset-size4.size9,.md-body .katex .sizing.reset-size4.size9{font-size:2.16em}.md-body .katex .fontsize-ensurer.reset-size4.size10,.md-body .katex .sizing.reset-size4.size10{font-size:2.5925em}.md-body .katex .fontsize-ensurer.reset-size4.size11,.md-body .katex .sizing.reset-size4.size11{font-size:3.11em}.md-body .katex .fontsize-ensurer.reset-size5.size1,.md-body .katex .sizing.reset-size5.size1{font-size:.5555555556em}.md-body .katex .fontsize-ensurer.reset-size5.size2,.md-body .katex .sizing.reset-size5.size2{font-size:.6666666667em}.md-body .katex .fontsize-ensurer.reset-size5.size3,.md-body .katex .sizing.reset-size5.size3{font-size:.7777777778em}.md-body .katex .fontsize-ensurer.reset-size5.size4,.md-body .katex .sizing.reset-size5.size4{font-size:.8888888889em}.md-body .katex .fontsize-ensurer.reset-size5.size5,.md-body .katex .sizing.reset-size5.size5{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size5.size6,.md-body .katex .sizing.reset-size5.size6{font-size:1.1111111111em}.md-body .katex .fontsize-ensurer.reset-size5.size7,.md-body .katex .sizing.reset-size5.size7{font-size:1.3333333333em}.md-body .katex .fontsize-ensurer.reset-size5.size8,.md-body .katex .sizing.reset-size5.size8{font-size:1.6em}.md-body .katex .fontsize-ensurer.reset-size5.size9,.md-body .katex .sizing.reset-size5.size9{font-size:1.92em}.md-body .katex .fontsize-ensurer.reset-size5.size10,.md-body .katex .sizing.reset-size5.size10{font-size:2.3044444444em}.md-body .katex .fontsize-ensurer.reset-size5.size11,.md-body .katex .sizing.reset-size5.size11{font-size:2.7644444444em}.md-body .katex .fontsize-ensurer.reset-size6.size1,.md-body .katex .sizing.reset-size6.size1{font-size:.5em}.md-body .katex .fontsize-ensurer.reset-size6.size2,.md-body .katex .sizing.reset-size6.size2{font-size:.6em}.md-body .katex .fontsize-ensurer.reset-size6.size3,.md-body .katex .sizing.reset-size6.size3{font-size:.7em}.md-body .katex .fontsize-ensurer.reset-size6.size4,.md-body .katex .sizing.reset-size6.size4{font-size:.8em}.md-body .katex .fontsize-ensurer.reset-size6.size5,.md-body .katex .sizing.reset-size6.size5{font-size:.9em}.md-body .katex .fontsize-ensurer.reset-size6.size6,.md-body .katex .sizing.reset-size6.size6{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size6.size7,.md-body .katex .sizing.reset-size6.size7{font-size:1.2em}.md-body .katex .fontsize-ensurer.reset-size6.size8,.md-body .katex .sizing.reset-size6.size8{font-size:1.44em}.md-body .katex .fontsize-ensurer.reset-size6.size9,.md-body .katex .sizing.reset-size6.size9{font-size:1.728em}.md-body .katex .fontsize-ensurer.reset-size6.size10,.md-body .katex .sizing.reset-size6.size10{font-size:2.074em}.md-body .katex .fontsize-ensurer.reset-size6.size11,.md-body .katex .sizing.reset-size6.size11{font-size:2.488em}.md-body .katex .fontsize-ensurer.reset-size7.size1,.md-body .katex .sizing.reset-size7.size1{font-size:.4166666667em}.md-body .katex .fontsize-ensurer.reset-size7.size2,.md-body .katex .sizing.reset-size7.size2{font-size:.5em}.md-body .katex .fontsize-ensurer.reset-size7.size3,.md-body .katex .sizing.reset-size7.size3{font-size:.5833333333em}.md-body .katex .fontsize-ensurer.reset-size7.size4,.md-body .katex .sizing.reset-size7.size4{font-size:.6666666667em}.md-body .katex .fontsize-ensurer.reset-size7.size5,.md-body .katex .sizing.reset-size7.size5{font-size:.75em}.md-body .katex .fontsize-ensurer.reset-size7.size6,.md-body .katex .sizing.reset-size7.size6{font-size:.8333333333em}.md-body .katex .fontsize-ensurer.reset-size7.size7,.md-body .katex .sizing.reset-size7.size7{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size7.size8,.md-body .katex .sizing.reset-size7.size8{font-size:1.2em}.md-body .katex .fontsize-ensurer.reset-size7.size9,.md-body .katex .sizing.reset-size7.size9{font-size:1.44em}.md-body .katex .fontsize-ensurer.reset-size7.size10,.md-body .katex .sizing.reset-size7.size10{font-size:1.7283333333em}.md-body .katex .fontsize-ensurer.reset-size7.size11,.md-body .katex .sizing.reset-size7.size11{font-size:2.0733333333em}.md-body .katex .fontsize-ensurer.reset-size8.size1,.md-body .katex .sizing.reset-size8.size1{font-size:.3472222222em}.md-body .katex .fontsize-ensurer.reset-size8.size2,.md-body .katex .sizing.reset-size8.size2{font-size:.4166666667em}.md-body .katex .fontsize-ensurer.reset-size8.size3,.md-body .katex .sizing.reset-size8.size3{font-size:.4861111111em}.md-body .katex .fontsize-ensurer.reset-size8.size4,.md-body .katex .sizing.reset-size8.size4{font-size:.5555555556em}.md-body .katex .fontsize-ensurer.reset-size8.size5,.md-body .katex .sizing.reset-size8.size5{font-size:.625em}.md-body .katex .fontsize-ensurer.reset-size8.size6,.md-body .katex .sizing.reset-size8.size6{font-size:.6944444444em}.md-body .katex .fontsize-ensurer.reset-size8.size7,.md-body .katex .sizing.reset-size8.size7{font-size:.8333333333em}.md-body .katex .fontsize-ensurer.reset-size8.size8,.md-body .katex .sizing.reset-size8.size8{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size8.size9,.md-body .katex .sizing.reset-size8.size9{font-size:1.2em}.md-body .katex .fontsize-ensurer.reset-size8.size10,.md-body .katex .sizing.reset-size8.size10{font-size:1.4402777778em}.md-body .katex .fontsize-ensurer.reset-size8.size11,.md-body .katex .sizing.reset-size8.size11{font-size:1.7277777778em}.md-body .katex .fontsize-ensurer.reset-size9.size1,.md-body .katex .sizing.reset-size9.size1{font-size:.2893518519em}.md-body .katex .fontsize-ensurer.reset-size9.size2,.md-body .katex .sizing.reset-size9.size2{font-size:.3472222222em}.md-body .katex .fontsize-ensurer.reset-size9.size3,.md-body .katex .sizing.reset-size9.size3{font-size:.4050925926em}.md-body .katex .fontsize-ensurer.reset-size9.size4,.md-body .katex .sizing.reset-size9.size4{font-size:.462962963em}.md-body .katex .fontsize-ensurer.reset-size9.size5,.md-body .katex .sizing.reset-size9.size5{font-size:.5208333333em}.md-body .katex .fontsize-ensurer.reset-size9.size6,.md-body .katex .sizing.reset-size9.size6{font-size:.5787037037em}.md-body .katex .fontsize-ensurer.reset-size9.size7,.md-body .katex .sizing.reset-size9.size7{font-size:.6944444444em}.md-body .katex .fontsize-ensurer.reset-size9.size8,.md-body .katex .sizing.reset-size9.size8{font-size:.8333333333em}.md-body .katex .fontsize-ensurer.reset-size9.size9,.md-body .katex .sizing.reset-size9.size9{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size9.size10,.md-body .katex .sizing.reset-size9.size10{font-size:1.2002314815em}.md-body .katex .fontsize-ensurer.reset-size9.size11,.md-body .katex .sizing.reset-size9.size11{font-size:1.4398148148em}.md-body .katex .fontsize-ensurer.reset-size10.size1,.md-body .katex .sizing.reset-size10.size1{font-size:.2410800386em}.md-body .katex .fontsize-ensurer.reset-size10.size2,.md-body .katex .sizing.reset-size10.size2{font-size:.2892960463em}.md-body .katex .fontsize-ensurer.reset-size10.size3,.md-body .katex .sizing.reset-size10.size3{font-size:.337512054em}.md-body .katex .fontsize-ensurer.reset-size10.size4,.md-body .katex .sizing.reset-size10.size4{font-size:.3857280617em}.md-body .katex .fontsize-ensurer.reset-size10.size5,.md-body .katex .sizing.reset-size10.size5{font-size:.4339440694em}.md-body .katex .fontsize-ensurer.reset-size10.size6,.md-body .katex .sizing.reset-size10.size6{font-size:.4821600771em}.md-body .katex .fontsize-ensurer.reset-size10.size7,.md-body .katex .sizing.reset-size10.size7{font-size:.5785920926em}.md-body .katex .fontsize-ensurer.reset-size10.size8,.md-body .katex .sizing.reset-size10.size8{font-size:.6943105111em}.md-body .katex .fontsize-ensurer.reset-size10.size9,.md-body .katex .sizing.reset-size10.size9{font-size:.8331726133em}.md-body .katex .fontsize-ensurer.reset-size10.size10,.md-body .katex .sizing.reset-size10.size10{font-size:1em}.md-body .katex .fontsize-ensurer.reset-size10.size11,.md-body .katex .sizing.reset-size10.size11{font-size:1.1996142719em}.md-body .katex .fontsize-ensurer.reset-size11.size1,.md-body .katex .sizing.reset-size11.size1{font-size:.2009646302em}.md-body .katex .fontsize-ensurer.reset-size11.size2,.md-body .katex .sizing.reset-size11.size2{font-size:.2411575563em}.md-body .katex .fontsize-ensurer.reset-size11.size3,.md-body .katex .sizing.reset-size11.size3{font-size:.2813504823em}.md-body .katex .fontsize-ensurer.reset-size11.size4,.md-body .katex .sizing.reset-size11.size4{font-size:.3215434084em}.md-body .katex .fontsize-ensurer.reset-size11.size5,.md-body .katex .sizing.reset-size11.size5{font-size:.3617363344em}.md-body .katex .fontsize-ensurer.reset-size11.size6,.md-body .katex .sizing.reset-size11.size6{font-size:.4019292605em}.md-body .katex .fontsize-ensurer.reset-size11.size7,.md-body .katex .sizing.reset-size11.size7{font-size:.4823151125em}.md-body .katex .fontsize-ensurer.reset-size11.size8,.md-body .katex .sizing.reset-size11.size8{font-size:.578778135em}.md-body .katex .fontsize-ensurer.reset-size11.size9,.md-body .katex .sizing.reset-size11.size9{font-size:.6945337621em}.md-body .katex .fontsize-ensurer.reset-size11.size10,.md-body .katex .sizing.reset-size11.size10{font-size:.8336012862em}.md-body .katex .fontsize-ensurer.reset-size11.size11,.md-body .katex .sizing.reset-size11.size11{font-size:1em}.md-body .katex .delimsizing.size1{font-family:KaTeX_Size1}.md-body .katex .delimsizing.size2{font-family:KaTeX_Size2}.md-body .katex .delimsizing.size3{font-family:KaTeX_Size3}.md-body .katex .delimsizing.size4{font-family:KaTeX_Size4}.md-body .katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.md-body .katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.md-body .katex .nulldelimiter{display:inline-block;width:.12em}.md-body .katex .delimcenter,.md-body .katex .op-symbol{position:relative}.md-body .katex .op-symbol.small-op{font-family:KaTeX_Size1}.md-body .katex .op-symbol.large-op{font-family:KaTeX_Size2}.md-body .katex .accent>.vlist-t,.md-body .katex .op-limits>.vlist-t{text-align:center}.md-body .katex .accent .accent-body{position:relative}.md-body .katex .accent .accent-body:not(.accent-full){width:0}.md-body .katex .overlay{display:block}.md-body .katex .mtable .vertical-separator{display:inline-block;min-width:1px}.md-body .katex .mtable .arraycolsep{display:inline-block}.md-body .katex .mtable .col-align-c>.vlist-t{text-align:center}.md-body .katex .mtable .col-align-l>.vlist-t{text-align:left}.md-body .katex .mtable .col-align-r>.vlist-t{text-align:right}.md-body .katex .svg-align{text-align:left}.md-body .katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.md-body .katex svg path{stroke:none}.md-body .katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.md-body .katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.md-body .katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.md-body .katex .stretchy:after,.md-body .katex .stretchy:before{content:""}.md-body .katex .hide-tail{overflow:hidden;position:relative;width:100%}.md-body .katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.md-body .katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.md-body .katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.md-body .katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.md-body .katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.md-body .katex .x-arrow-pad{padding:0 .5em}.md-body .katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.md-body .katex .mover,.md-body .katex .munder,.md-body .katex .x-arrow{text-align:center}.md-body .katex .boxpad{padding:0 .3em}.md-body .katex .fbox,.md-body .katex .fcolorbox{border:.04em solid;box-sizing:border-box}.md-body .katex .cancel-pad{padding:0 .2em}.md-body .katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.md-body .katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.md-body .katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.md-body .katex .anglpad{padding:0 .03889em}.md-body .katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.md-body .katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.md-body .katex .mtr-glue{width:50%}.md-body .katex .cd-vert-arrow{display:inline-block;position:relative}.md-body .katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.md-body .katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.md-body .katex-display{display:block;margin:1em 0;text-align:center}.md-body .katex-display>.katex{display:block;text-align:center;white-space:nowrap}.md-body .katex-display>.katex>.katex-html{display:block;position:relative}.md-body .katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.md-body .katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.md-body .katex-display.fleqn>.katex{padding-left:2em;text-align:left}.md-body{counter-reset:katexEqnNo mmlEqnNo}:root{--hljs-color:#000000;--hljs-bg:#F7F7F7;--hljs-keyword:#9B2393;--hljs-title:#6C36A9;--hljs-attr:#0F68A0;--hljs-string:#C41A16;--hljs-built-in:#3E8087;--hljs-comment:#5D6C79;--hljs-name:#3E8087;--hljs-subst:#24292e;--hljs-section:#0F68A0;--hljs-bullet:#8C6A00;--hljs-emphasis-color:#24292e;--hljs-strong-color:#24292e;--hljs-addition-color:#22863a;--hljs-addition-bg:#f0fff4;--hljs-deletion-color:#b31d28;--hljs-deletion-bg:#ffeef0;}@media (prefers-color-scheme:dark){:root{--hljs-color:#FFFFFF;--hljs-bg:#1C1C1E;--hljs-keyword:#FC5FA3;--hljs-title:#A167E6;--hljs-attr:#5DD8FF;--hljs-string:#FC6A5D;--hljs-built-in:#9EF1DD;--hljs-comment:#7F8C98;--hljs-name:#9EF1DD;--hljs-subst:#c9d1d9;--hljs-section:#5DD8FF;--hljs-bullet:#D0BF69;--hljs-emphasis-color:#c9d1d9;--hljs-strong-color:#c9d1d9;--hljs-addition-color:#aff5b4;--hljs-addition-bg:#033a16;--hljs-deletion-color:#ffdcd7;--hljs-deletion-bg:#67060c;}}:root[data-theme="light"]{--hljs-color:#000000;--hljs-bg:#F7F7F7;--hljs-keyword:#9B2393;--hljs-title:#6C36A9;--hljs-attr:#0F68A0;--hljs-string:#C41A16;--hljs-built-in:#3E8087;--hljs-comment:#5D6C79;--hljs-name:#3E8087;--hljs-subst:#24292e;--hljs-section:#0F68A0;--hljs-bullet:#8C6A00;--hljs-emphasis-color:#24292e;--hljs-strong-color:#24292e;--hljs-addition-color:#22863a;--hljs-addition-bg:#f0fff4;--hljs-deletion-color:#b31d28;--hljs-deletion-bg:#ffeef0;}:root[data-theme="dark"]{--hljs-color:#FFFFFF;--hljs-bg:#1C1C1E;--hljs-keyword:#FC5FA3;--hljs-title:#A167E6;--hljs-attr:#5DD8FF;--hljs-string:#FC6A5D;--hljs-built-in:#9EF1DD;--hljs-comment:#7F8C98;--hljs-name:#9EF1DD;--hljs-subst:#c9d1d9;--hljs-section:#5DD8FF;--hljs-bullet:#D0BF69;--hljs-emphasis-color:#c9d1d9;--hljs-strong-color:#c9d1d9;--hljs-addition-color:#aff5b4;--hljs-addition-bg:#033a16;--hljs-deletion-color:#ffdcd7;--hljs-deletion-bg:#67060c;}.md-body pre code.hljs{display:block;overflow-x:auto;padding:0;}.md-body code.hljs{padding:0;}.md-body .hljs{color:var(--hljs-color);background:var(--hljs-bg);}.md-body .hljs-doctag,.md-body .hljs-keyword,.md-body .hljs-meta .hljs-keyword,.md-body .hljs-template-tag,.md-body .hljs-template-variable,.md-body .hljs-type,.md-body .hljs-variable.language_{color:var(--hljs-keyword);}.md-body .hljs-title,.md-body .hljs-title.class_,.md-body .hljs-title.class_.inherited__,.md-body .hljs-title.function_{color:var(--hljs-title);}.md-body .hljs-attr,.md-body .hljs-attribute,.md-body .hljs-literal,.md-body .hljs-meta,.md-body .hljs-number,.md-body .hljs-operator,.md-body .hljs-variable,.md-body .hljs-selector-attr,.md-body .hljs-selector-class,.md-body .hljs-selector-id{color:var(--hljs-attr);}.md-body .hljs-regexp,.md-body .hljs-string,.md-body .hljs-meta .hljs-string{color:var(--hljs-string);}.md-body .hljs-built_in,.md-body .hljs-symbol{color:var(--hljs-built-in);}.md-body .hljs-comment,.md-body .hljs-code,.md-body .hljs-formula{color:var(--hljs-comment);}.md-body .hljs-comment{font-style:var(--hljs-comment-style,normal);}.md-body .hljs-name,.md-body .hljs-quote,.md-body .hljs-selector-tag,.md-body .hljs-selector-pseudo{color:var(--hljs-name);}.md-body .hljs-subst{color:var(--hljs-subst);}.md-body .hljs-section{color:var(--hljs-section);font-weight:bold;}.md-body .hljs-bullet{color:var(--hljs-bullet);}.md-body .hljs-emphasis{color:var(--hljs-emphasis-color);font-style:italic;}.md-body .hljs-strong{color:var(--hljs-strong-color);font-weight:bold;}.md-body .hljs-addition{color:var(--hljs-addition-color);background-color:var(--hljs-addition-bg);}.md-body .hljs-deletion{color:var(--hljs-deletion-color);background-color:var(--hljs-deletion-bg);}:root{--md-hairline:1px;--md-table-scroll-slack:1px;--md-table-max-column:12em;color-scheme:light dark;--markdown-padding:0;--markdown-bottom-gap:0;--markdown-background:#FFFFFF;--markdown-font-size:16px;--chat-text-color:#000000;--chat-secondary-text-color:rgba(60,60,67,0.6);--chat-link-color:#007AFF;--chat-background:var(--markdown-background);--chat-code-color:#000000;--chat-fill:rgba(118,118,128,0.12);--chat-inline-code-bg:rgba(118,118,128,0.12);--chat-table-border:rgba(60,60,67,0.29);--chat-success:#34C759;--md-error-color:#D70015;--code-surface:#F7F7F7;--code-border:rgba(60,60,67,0.29);--code-header-bg:transparent;--code-header-text:var(--chat-text-color);--code-header-button-bg:rgba(120,120,128,0.12);--code-header-button-bg-hover:rgba(120,120,128,0.2);--code-header-button-border:rgba(60,60,67,0.18);}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--md-hairline:0.5px;}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){:root{--md-hairline:0.5px;}}@media (prefers-color-scheme:dark){:root{--markdown-background:#000000;--chat-text-color:#FFFFFF;--chat-secondary-text-color:rgba(235,235,245,0.6);--chat-link-color:#0A84FF;--chat-background:var(--markdown-background);--chat-code-color:#FFFFFF;--chat-fill:rgba(118,118,128,0.24);--chat-inline-code-bg:rgba(118,118,128,0.24);--chat-table-border:rgba(84,84,88,0.65);--chat-success:#30D158;--md-error-color:#FF453A;--code-surface:#1C1C1E;--code-border:rgba(84,84,88,0.65);--code-header-bg:transparent;--code-header-text:var(--chat-text-color);--code-header-button-bg:rgba(120,120,128,0.24);--code-header-button-bg-hover:rgba(120,120,128,0.36);--code-header-button-border:rgba(255,255,255,0.16);}}:root[data-theme="light"]{--markdown-background:#FFFFFF;--chat-text-color:#000000;--chat-secondary-text-color:rgba(60,60,67,0.6);--chat-link-color:#007AFF;--chat-background:var(--markdown-background);--chat-code-color:#000000;--chat-fill:rgba(118,118,128,0.12);--chat-inline-code-bg:rgba(118,118,128,0.12);--chat-table-border:rgba(60,60,67,0.29);--chat-success:#34C759;--md-error-color:#D70015;--code-surface:#F7F7F7;--code-border:rgba(60,60,67,0.29);--code-header-bg:transparent;--code-header-text:var(--chat-text-color);--code-header-button-bg:rgba(120,120,128,0.12);--code-header-button-bg-hover:rgba(120,120,128,0.2);--code-header-button-border:rgba(60,60,67,0.18);}:root[data-theme="dark"]{--markdown-background:#000000;--chat-text-color:#FFFFFF;--chat-secondary-text-color:rgba(235,235,245,0.6);--chat-link-color:#0A84FF;--chat-background:var(--markdown-background);--chat-code-color:#FFFFFF;--chat-fill:rgba(118,118,128,0.24);--chat-inline-code-bg:rgba(118,118,128,0.24);--chat-table-border:rgba(84,84,88,0.65);--chat-success:#30D158;--md-error-color:#FF453A;--code-surface:#1C1C1E;--code-border:rgba(84,84,88,0.65);--code-header-bg:transparent;--code-header-text:var(--chat-text-color);--code-header-button-bg:rgba(120,120,128,0.24);--code-header-button-bg-hover:rgba(120,120,128,0.36);--code-header-button-border:rgba(255,255,255,0.16);}.md-body,.md-body,.md-body{margin:0;padding:0;box-sizing:border-box;}.md-body,.md-body{overflow-x:hidden;max-width:100%;}.md-body{display:flow-root;overflow-x:hidden;overflow-x:clip;overflow-y:visible;max-width:100%;}.md-body,.md-body>*,.md-body .code-block-wrapper,.md-body .code-block-header,.md-body .code-block-body,.md-body .table-container,.md-body table{box-sizing:border-box;}.md-body{background:var(--chat-background);}.md-body{font-family:var(--md-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif);color:var(--chat-text-color);line-height:1.55;font-size:var(--markdown-font-size,16px);background:var(--chat-background);padding:var(--markdown-padding);-webkit-text-size-adjust:100%;}.md-body{max-width:100%;word-wrap:break-word;padding-bottom:calc(env(safe-area-inset-bottom, 0px) + var(--markdown-bottom-gap));}.md-body>:first-child{margin-top:0;}.md-body>:last-child{margin-bottom:0;}.md-body h1,.md-body h2,.md-body h3,.md-body h4,.md-body h5,.md-body h6{margin-top:1.5em;margin-bottom:0.5em;font-family:var(--md-heading-font-family,inherit);font-weight:var(--md-heading-weight,600);line-height:var(--md-heading-line-height,1.3);color:var(--chat-text-color);text-wrap:var(--md-heading-text-wrap,wrap);}.md-body h1{font-size:var(--md-h1-size,2em);}.md-body h2{font-size:var(--md-h2-size,1.5em);}.md-body h3{font-size:var(--md-h3-size,1.25em);}.md-body h4{font-size:var(--md-h4-size,1.1em);}.md-body h5{font-size:var(--md-h5-size,1em);}.md-body h6{font-size:var(--md-h6-size,0.9em);}.md-body p{margin:var(--md-paragraph-margin,0.8em) 0;line-height:var(--md-body-line-height,1.6);}.md-body p,.md-body li{text-wrap:var(--md-text-wrap,wrap);}.md-body p,.md-body li{text-align:var(--md-text-align,start);-webkit-hyphens:var(--md-hyphens,manual);hyphens:var(--md-hyphens,manual);}.md-body .md-keep{white-space:nowrap;}.md-body{text-autospace:var(--md-text-autospace,no-autospace);}.md-body :is(pre,code,kbd,samp){text-autospace:no-autospace;}.md-body a{color:var(--chat-link-color);text-decoration:var(--md-link-decoration,none);text-decoration-color:var(--md-link-decoration-color,currentColor);text-underline-offset:var(--md-link-underline-offset,auto);}.md-body a:hover{text-decoration:underline;}.md-body .md-ext{color:var(--chat-link-color);}.md-body .md-ext[data-md-action]{cursor:pointer;}.md-body code:not(pre code){background-color:var(--chat-inline-code-bg);color:var(--chat-code-color);padding:var(--md-inline-code-padding,2px 6px);border-radius:var(--md-inline-code-radius,3px);font-family:var(--md-code-font-family,Menlo,Monaco,"Courier New",monospace);font-size:var(--md-inline-code-size,0.9em);display:var(--md-inline-code-display,inline);max-width:100%;line-height:var(--md-inline-code-line-height,inherit);}.md-body .code-block-wrapper{margin:1em 0;border-radius:var(--md-code-radius,12px);overflow:hidden;border:var(--md-hairline) solid var(--code-border);background:var(--code-surface);}.md-body .code-block-header{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:34px;padding:6px 8px 0 14px;background:var(--code-header-bg);}.md-body .code-language{font-size:0.74em;font-weight:500;letter-spacing:0.02em;color:var(--chat-secondary-text-color);text-transform:lowercase;font-family:var(--md-code-font-family,Menlo,Monaco,"Courier New",monospace);}.md-body .code-copy-button{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;background:transparent;border:0;border-radius:7px;color:var(--chat-secondary-text-color);font-size:0.78em;font-weight:500;cursor:pointer;transition:background 0.15s ease,color 0.15s ease,transform 0.05s ease;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;}.md-body .code-copy-button:hover{background:var(--code-header-button-bg-hover);color:var(--chat-text-color);}.md-body .code-copy-button:active{transform:scale(0.96);}.md-body .code-copy-button.copied{background:rgba(52,199,89,0.16);border-color:var(--chat-success);color:var(--chat-success);}.md-body .code-copy-button .icon-check{display:none;}.md-body .code-copy-button.copied .icon-copy{display:none;}.md-body .code-copy-button.copied .icon-check{display:inline-block;}.md-body .copy-icon{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}.md-body .copy-text{font-size:0.9em;}.md-body .code-block-body{overflow-x:auto;}.md-body .code-block-body pre{margin:0;padding:4px 14px 14px;background:transparent;overflow-x:auto;}.md-body .code-block-body pre code,.md-body .code-block-body pre code.hljs{display:block;font-family:var(--md-code-font-family,Menlo,Monaco,"Courier New",monospace);font-size:var(--md-code-block-size,0.9em);line-height:var(--md-code-block-line-height,1.6);color:var(--chat-code-color);background:transparent;padding:0;white-space:pre;overflow-wrap:normal;word-break:normal;}.md-body .md-diagram{margin:1em 0;}.md-body .md-diagram>.code-block-wrapper,.md-body .md-diagram>pre{margin:0;}.md-body .md-diagram-image{font-family:var(--md-diagram-font-family,inherit);font-size:var(--md-diagram-font-size,0.875em);line-height:1.5;color:var(--chat-text-color);}.md-body .md-diagram-image:empty{display:none;}.md-body .md-diagram-image[data-md-diagram="pending"]~*{visibility:hidden;}.md-body .md-diagram-image[data-md-diagram="drawn"]~*{display:none;}.md-body .md-diagram-image[data-md-diagram="drawn"]{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;}.md-body .md-diagram-image svg{display:block;height:auto;margin:0 auto;}.md-body .md-diagram-image svg [filter]{filter:none;}.md-body .md-diagram-error{margin:0 0 0.5em;font-size:0.92em;color:var(--chat-secondary-text-color);}.md-body blockquote{margin:1em 0;padding:var(--md-blockquote-padding,0.5em 1em);border-left:var(--md-blockquote-border-width,4px) solid var(--md-blockquote-border,var(--chat-link-color));background:var(--md-blockquote-background,var(--chat-fill));color:var(--md-blockquote-color,var(--chat-text-color));}.md-body blockquote p{margin:0.5em 0;}.md-body ul,.md-body ol{margin:0.8em 0;padding-left:var(--md-list-indent,2em);}.md-body li{margin:var(--md-list-item-margin,0.3em) 0;line-height:var(--md-body-line-height,1.6);}.md-body ul ul,.md-body ul ol,.md-body ol ul,.md-body ol ol{margin:0.3em 0;}.md-body .task-list-item{list-style:none;padding-left:0;}.md-body .task-list-item>input[type="checkbox"]{margin-right:0.5em;vertical-align:middle;cursor:pointer;}.md-body .task-list-item-checkbox{-webkit-appearance:var(--md-task-checkbox-appearance,auto);appearance:var(--md-task-checkbox-appearance,auto);width:var(--md-task-checkbox-size,auto);height:var(--md-task-checkbox-size,auto);margin:var(--md-task-checkbox-margin,3px 3px 3px 4px);vertical-align:var(--md-task-checkbox-align,baseline);border:var(--md-task-checkbox-border,none);border-radius:var(--md-task-checkbox-radius,0);background-clip:padding-box;position:relative;top:var(--md-task-checkbox-offset,0);flex:none;}.md-body .task-list-item>label{display:var(--md-task-label-display,inline);align-items:baseline;gap:var(--md-task-label-gap,0);}.md-body .task-list-item-checkbox:checked{background-color:var(--md-task-checkbox-checked-color,transparent);border-color:var(--md-task-checkbox-checked-color,currentColor);}.md-body .task-list-item-checkbox:checked::after{content:var(--md-task-checkbox-mark,none);position:absolute;left:50%;top:45%;width:28%;height:55%;border:solid var(--md-task-checkbox-mark-color,currentColor);border-width:0 0.13em 0.13em 0;transform:translate(-50%,-50%) rotate(45deg);box-sizing:border-box;}.md-body .task-list-item:has(>label>.task-list-item-checkbox:checked,>.task-list-item-checkbox:checked){color:var(--md-task-done-color,inherit);}.md-body .table-container{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1em 0;padding-right:var(--md-table-scroll-slack);padding-bottom:var(--md-table-scroll-slack);}.md-body .table-container>table{min-width:max-content;margin-right:var(--md-table-scroll-slack);}.md-body .table-container[data-md-more]{--md-fade:var(--md-table-scroll-fade,0px);}.md-body .table-container[data-md-more="end"]{-webkit-mask-image:linear-gradient(to right,#000 calc(var(--markdown-font-size)),transparent);mask-image:linear-gradient(to right,#000 calc(100% - var(--md-fade)),transparent);}.md-body .table-container[data-md-more="start"]{-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--md-fade));mask-image:linear-gradient(to right,transparent,#000 var(--md-fade));}.md-body .table-container[data-md-more="start end"]{-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--md-fade),#000 calc(100% - var(--md-fade)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--md-fade),#000 calc(100% - var(--md-fade)),transparent);}.md-body .table-container::-webkit-scrollbar{display:none;}.md-body table{width:var(--md-table-width,100%);max-width:100%;font-family:var(--md-table-font-family,inherit);font-size:var(--md-table-font-size,inherit);font-variant-numeric:var(--md-table-numeric,normal);border-collapse:separate;border-spacing:0;border:var(--md-table-frame,var(--md-hairline) solid var(--code-border));border-radius:var(--md-table-radius,var(--md-code-radius,12px));background:var(--chat-background);}.md-body th,.md-body td{padding:var(--md-table-cell-padding,11px 14px);max-width:var(--md-table-max-column);border-right:var(--md-table-column-rule,var(--md-hairline) solid var(--code-border));border-bottom:var(--md-table-row-rule,var(--md-hairline) solid var(--code-border));color:var(--chat-text-color);vertical-align:var(--md-table-cell-align,middle);}.md-body th:first-child,.md-body td:first-child{padding-left:var(--md-table-edge-inset,14px);}.md-body th:last-child,.md-body td:last-child{padding-right:var(--md-table-edge-inset,14px);}.md-body th{text-align:left;font-weight:600;background:var(--md-table-head-background,transparent);border-bottom:var(--md-table-head-rule,var(--md-table-row-rule,var(--md-hairline) solid var(--code-border)));}.md-body th:last-child,.md-body td:last-child{border-right:none;}.md-body tbody tr:last-child td{border-bottom:none;}.md-body hr{margin:1.5em 0;border:none;border-top:1px solid var(--chat-table-border);}.md-body img{max-width:100%;height:auto;border-radius:8px;margin:0.5em 0;}.md-body img[data-md-inline="text"]{vertical-align:middle;margin:0 0.15em;border-radius:0;}.md-body img[data-md-runtime-img="loading"],.md-body img[data-md-runtime-img="sizing"]{width:100%;background:var(--chat-inline-code-bg);object-fit:cover;animation:md-image-pending 1.6s ease-in-out infinite;}.md-body img[data-md-runtime-img="loading"]{min-height:var(--md-image-placeholder-height,160px);}.md-body img[data-md-runtime-img="sizing"]{aspect-ratio:var(--md-image-ratio);}@keyframes md-image-pending{0%,100%{opacity:1;}50%{opacity:0.55;}}@media (prefers-reduced-motion:reduce){.md-body img[data-md-runtime-img="loading"],.md-body img[data-md-runtime-img="sizing"]{animation:none;opacity:0.8;}}.md-body .math-inline{display:inline-block;max-width:100%;overflow-x:auto;overflow-y:hidden;padding-top:0.35em;margin-top:-0.35em;vertical-align:middle;scrollbar-width:none;}.md-body .math-inline::-webkit-scrollbar{display:none;height:0;}.md-body .math-inline.math-inline--flow{display:inline;max-width:none;overflow:visible;padding-top:0;margin-top:0;vertical-align:baseline;}.md-body :is(p,li) .math-inline .katex-html>.base:has(.mfrac,.sqrt,.delimsizing,.mtable,.op-limits,.svg-align):not(:is(.md-choices,td,th) *){margin-block:0.15em;}.md-body .math-punct{display:inline-block;max-width:100%;}.md-body .math-punct-edge{display:inline-block;}.md-body .math-punct-edge.math-punct-edge--loose{display:inline;}.md-body .math-punct,.md-body .math-inline,.md-body .math-punct-edge{text-decoration:inherit;}.md-body :is(del,s) :is(.math-punct,.math-punct-edge){text-decoration-line:line-through;}.md-body .md-choices{display:grid;grid-template-columns:repeat(var(--md-choice-columns,1),minmax(0,1fr));gap:var(--md-choice-row-gap,0.35em) var(--md-choice-column-gap,0.5em);align-items:baseline;margin:var(--md-paragraph-margin,0.8em) 0.35em var(--md-paragraph-margin,0.8em) 0;}.md-body .md-choice{position:relative;display:flex;align-items:baseline;gap:0.4em;min-width:0;padding:0.2em 0.4em;border-radius:var(--md-choice-radius,8px);}.md-body .md-choice-label{flex-shrink:0;font-size:0.875em;font-weight:500;color:var(--md-choice-label-color,var(--chat-secondary-text-color));}.md-body .md-choice-body{width:fit-content;min-width:0;line-height:var(--md-body-line-height,1.6);}.md-body .md-choice:has(>.md-choice-body>img:first-child){align-items:flex-start;}.md-body .md-choice[data-md-choice-state="correct"]{background:var(--md-choice-correct-bg,color-mix(in srgb,var(--chat-success) 12%,transparent));box-shadow:0 0 0 1px var(--md-choice-correct-border,color-mix(in srgb,var(--chat-success) 45%,transparent));}.md-body .md-choice[data-md-choice-state="correct"]>.md-choice-label{color:var(--md-choice-correct-label,var(--chat-success));}.md-body .md-choice[data-md-choice-state="correct"]::after{content:"✓";position:absolute;top:-0.45em;right:-0.45em;width:1.15em;height:1.15em;border-radius:50%;background:var(--md-choice-correct-label,var(--chat-success));color:#fff;font-size:0.75em;font-weight:700;line-height:1.15em;text-align:center;}.md-body .md-choice[data-md-choice-state="incorrect"]{background:var(--md-choice-incorrect-bg,color-mix(in srgb,var(--md-error-color) 10%,transparent));box-shadow:0 0 0 1px var(--md-choice-incorrect-border,color-mix(in srgb,var(--md-error-color) 40%,transparent));}.md-body .katex{color:var(--chat-text-color);font-size:var(--md-math-font-size,1.1em);}.md-body .katex-display{margin:0;max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding:0.55em 0 0.25em;margin-top:-0.3em;scrollbar-width:none;}.md-body .katex-display>.katex{display:inline-block;white-space:nowrap;padding:0 0.25em;}.md-body .katex-display::-webkit-scrollbar{display:none;height:0;}.md-body .katex-error{color:inherit;font-family:inherit;}.md-body .md-math-raw{color:inherit;font-family:inherit;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;}.md-body .md-math-raw-block{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}.md-body .md-math-raw-block::-webkit-scrollbar{display:none;height:0;}.md-body strong{font-weight:600;color:var(--chat-text-color);}.md-body em{font-style:italic;color:var(--chat-text-color);}.md-body del{text-decoration:line-through;opacity:0.7;}.md-body mark{background-color:rgba(255,235,59,0.4);color:var(--chat-text-color);padding:2px 4px;border-radius:2px;}.md-body sub,.md-body sup{font-size:0.75em;line-height:0;position:relative;vertical-align:baseline;}.md-body sub{bottom:-0.25em;}.md-body sup{top:-0.5em;}.md-body .md-reasoning{margin:0 0 var(--md-paragraph-margin) 0;color:var(--md-reasoning-color,var(--chat-secondary-text-color));font-size:var(--md-reasoning-font-size,0.94em);}.md-body .md-reasoning:last-child{margin-bottom:0;}.md-body .md-reasoning-summary,.md-body .md-reasoning-header{display:flex;align-items:center;gap:6px;width:fit-content;max-width:100%;margin:0 0 0 -8px;padding:5px 10px 5px 8px;border:0;border-radius:999px;color:inherit;background:var(--md-reasoning-header-bg,transparent);font:inherit;line-height:1.35;text-align:left;cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent;}.md-body .md-reasoning-summary::-webkit-details-marker,.md-body .md-reasoning-summary::marker{display:none;content:'';}@media (hover:hover){.md-body .md-reasoning-header:hover,.md-body .md-reasoning-summary:hover{background:var(--md-reasoning-header-hover-bg,var(--chat-inline-code-bg));}}.md-body .md-reasoning-header:active,.md-body .md-reasoning-summary:active{background:var(--md-reasoning-header-hover-bg,var(--chat-inline-code-bg));}.md-body .md-reasoning-header:focus-visible,.md-body .md-reasoning-summary:focus-visible{outline:2px solid var(--chat-link-color);outline-offset:2px;}.md-body .md-reasoning-chevron{flex:0 0 auto;width:14px;height:14px;transition:transform 0.18s ease;}.md-body .md-reasoning[open]>.md-reasoning-summary>.md-reasoning-chevron,.md-body .md-reasoning[data-expanded="true"]>.md-reasoning-header>.md-reasoning-chevron{transform:rotate(90deg);}.md-body .md-reasoning-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.md-body .md-reasoning[data-state="thinking"]>.md-reasoning-header>.md-reasoning-label,.md-body .md-reasoning[data-state="thinking"]>.md-reasoning-summary>.md-reasoning-label{background:linear-gradient(90deg,var(--md-reasoning-color,var(--chat-secondary-text-color)) 20%,var(--chat-text-color) 45%,var(--md-reasoning-color,var(--chat-secondary-text-color)) 70%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:md-reasoning-shimmer 1.8s linear infinite;}@keyframes md-reasoning-shimmer{from{background-position:140% 0;}to{background-position:-40% 0;}}@media (prefers-reduced-motion:reduce){.md-body .md-reasoning[data-state="thinking"]>.md-reasoning-header>.md-reasoning-label,.md-body .md-reasoning[data-state="thinking"]>.md-reasoning-summary>.md-reasoning-label{animation:none;background:none;color:var(--md-reasoning-color,var(--chat-secondary-text-color));-webkit-text-fill-color:currentColor;}.md-body .md-reasoning-chevron{transition:none;}}.md-body .md-reasoning-body{margin:4px 0 0 0;padding:2px 0 2px 12px;border-left:2px solid var(--md-reasoning-border,var(--chat-table-border));color:inherit;overflow-wrap:break-word;}.md-body .md-reasoning-body>:first-child{margin-top:0;}.md-body .md-reasoning-body>:last-child{margin-bottom:0;}.md-body .md-reasoning-body p,.md-body .md-reasoning-body li{color:inherit;}.md-body .md-reasoning-body h1,.md-body .md-reasoning-body h2,.md-body .md-reasoning-body h3,.md-body .md-reasoning-body h4,.md-body .md-reasoning-body h5,.md-body .md-reasoning-body h6{font-size:1em;color:inherit;}.md-body .md-reasoning-collapsible{display:grid;grid-template-rows:0fr;transition:grid-template-rows 0.22s ease;}.md-body .md-reasoning[data-expanded="true"]>.md-reasoning-collapsible{grid-template-rows:1fr;}.md-body .md-reasoning-collapsible>.md-reasoning-body{min-height:0;margin-top:0;padding-top:0;padding-bottom:0;overflow:hidden;transition:padding 0.22s ease;}.md-body .md-reasoning[data-expanded="true"]>.md-reasoning-collapsible>.md-reasoning-body{padding-top:6px;padding-bottom:2px;}@media (prefers-reduced-motion:reduce){.md-body .md-reasoning-collapsible,.md-body .md-reasoning-collapsible>.md-reasoning-body{transition:none;}}:root[data-md-links="disabled"] .md-body a,:root[data-md-links="disabled"] #markdown-content a{color:inherit;text-decoration:none;pointer-events:none;}:root[data-md-images="disabled"] #markdown-content img{pointer-events:none;}:root[data-md-code-copy="disabled"] .code-copy-button{display:none;}:root[data-md-code-copy="disabled"] .code-block-header{cursor:default;pointer-events:none;}
/*
 * Nota 的网页。宽屏是侧栏(收件箱、最近、文件夹树)+ 主区;手机上(< 900px)一层一层往里走:首页是
 * 侧栏,其余页面占满整屏、顶栏带返回,和系统的「文件」一样。
 *
 * 样子(UI 设计稿,2026-10-23 定):暖色的纸。象牙白的底、暖灰的字和线、读的时候一张白纸;标题
 * 用衬线,界面用系统无衬线;主按钮是墨色,只有「要你处理」的地方用一点赤陶色。字体全用系统自带的,
 * 不从别处下载。颜色跟随系统的浅色 / 深色。
 *
 * 手机上的几条(sites/nodal-web 踩过的):输入框在触屏上 16px,不然 Safari 聚焦时放大整页;顶栏让出
 * 状态栏(safe-area-inset-top);编辑页按 visualViewport 摆(js/viewport.js),键盘弹起时不把整页推走。
 */

:root {
  --bg: #FAF9F5;
  --side: #F5F4ED;
  --surface: #FFFFFF;
  --surface-2: #F0EEE6;
  --hover: rgba(115, 114, 108, 0.1);
  --selected: rgba(115, 114, 108, 0.16);
  --text: #1F1E1D;
  --text-2: #3D3D3A;
  --muted: #73726C;
  --faint: #B0AEA5;
  --line: rgba(31, 30, 29, 0.12);
  --line-strong: rgba(31, 30, 29, 0.22);
  --ink: #1F1E1D;
  --on-ink: #FAF9F5;
  --attention: #9C4421;
  --attention-soft: #F5E6DD;
  --ok: #4D7A3A;
  --danger: #B3261E;
  /* 两版比一比:新增的绿、删掉的红;-strong 是一行里改了的那几个字,-ink 是加减号和计数的字色。 */
  --diff-add: #E8F1E1;
  --diff-add-strong: #C9E0B8;
  --diff-add-ink: #3F6B2E;
  --diff-del: #FBE9E7;
  --diff-del-strong: #F4C7C2;
  --diff-del-ink: #A1271F;
  --radius: 12px;
  --sidebar: 280px;
  --serif: ui-serif, "New York", "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", system-ui, "Segoe UI", "Microsoft YaHei", sans-serif;
  --mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;
  --vv-height: 100dvh;
  --vv-top: 0px;
  color-scheme: light dark;
  /* 渲染库的变量:正文背景跟着所在的纸,不画自己的底色。 */
  --chat-background: transparent;
  --chat-link-color: var(--text);
  --markdown-font-size: 16px;
}

/* 汉字的字形随语言:同一个字,简体、繁体、日文、韩文各有各的写法。字体栈跟着 <html lang> 换。 */
:root:lang(zh-Hant) {
  --serif: ui-serif, "New York", "Songti TC", "Noto Serif CJK TC", "Source Han Serif TC", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "PingFang TC", "Heiti TC", system-ui, "Segoe UI", "Microsoft JhengHei", sans-serif;
}
:root:lang(ja) {
  --serif: ui-serif, "New York", "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif CJK JP", "Source Han Serif JP", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", system-ui, "Segoe UI", "Yu Gothic UI", Meiryo, sans-serif;
}
:root:lang(ko) {
  --serif: ui-serif, "New York", AppleMyungjo, "Noto Serif CJK KR", "Source Han Serif KR", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", system-ui, "Segoe UI", "Malgun Gothic", sans-serif;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #262624;
    --side: #1F1E1D;
    --surface: #30302E;
    --surface-2: #3D3D3A;
    --hover: rgba(250, 249, 245, 0.06);
    --selected: rgba(250, 249, 245, 0.11);
    --text: #F5F4ED;
    --text-2: #DEDCD1;
    --muted: #B0AEA5;
    --faint: #73726C;
    --line: rgba(250, 249, 245, 0.1);
    --line-strong: rgba(250, 249, 245, 0.2);
    --ink: #F5F4ED;
    --on-ink: #1F1E1D;
    --attention: #EBA488;
    --attention-soft: rgba(217, 119, 87, 0.18);
    --ok: #9DC08B;
    --danger: #F2B8B5;
    --diff-add: rgba(157, 192, 139, 0.14);
    --diff-add-strong: rgba(157, 192, 139, 0.34);
    --diff-add-ink: #9DC08B;
    --diff-del: rgba(242, 184, 181, 0.12);
    --diff-del-strong: rgba(242, 184, 181, 0.32);
    --diff-del-ink: #F2B8B5;
  }
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body {
  background: var(--bg);
  color: var(--text);
  font: 15px/1.5 var(--sans);
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
}
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; }
h1, h2, h3 { margin: 0; }
.muted { color: var(--muted); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* `hidden` 要赢过组件自己的 display(口令那一行是 flex)。 */
[hidden] { display: none !important; }

.icon { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
/* 三个点是三段零长的线,圆头画成圆点:线宽就是点的直径。 */
.icon.icon-more { width: 22px; height: 22px; stroke-width: 3; }

/* ---------- 按钮与输入 ---------- */

.button {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  min-height: 36px; padding: 0 14px; border: 1px solid var(--line-strong); border-radius: 8px;
  background: var(--surface); color: var(--text); font-weight: 500; cursor: pointer; white-space: nowrap;
}
.button:disabled { opacity: 0.5; cursor: default; }
.button.primary { background: var(--ink); border-color: var(--ink); color: var(--on-ink); }
.button.primary.danger { background: var(--danger); border-color: var(--danger); color: var(--on-ink); }
.button.ghost { background: transparent; border-color: transparent; color: var(--text); }
.button.small { min-height: 32px; padding: 0 11px; font-size: 13px; }
.button .icon { width: 16px; height: 16px; }
.icon-button {
  display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px;
  border: 0; border-radius: 8px; background: transparent; color: var(--text); cursor: pointer;
}
.icon-button.small { width: 28px; height: 28px; }
.icon-button.small .icon { width: 15px; height: 15px; }
.input, .textarea {
  width: 100%; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface);
  color: var(--text); font: inherit; padding: 9px 12px; outline: none;
}
.input:focus, .textarea:focus { border-color: var(--text-2); box-shadow: 0 0 0 3px var(--hover); }
.tag {
  display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border-radius: 10px;
  background: var(--attention-soft); color: var(--attention); font-size: 12px; font-weight: 600; white-space: nowrap;
}

/* 悬停只给有鼠标的设备:触屏上 :hover 在点过之后一直留着,像按钮卡住了。触屏用按下时的样子。 */
@media (hover: hover) {
  .button:hover { background: var(--hover); }
  .button.primary:hover { opacity: 0.88; background: var(--ink); }
  .icon-button:hover, .tree-toggle:hover { background: var(--hover); }
  .search-link:hover, .nav-link:hover, .tree-link:hover, .file-row:hover, .folder-row:hover, .revision-row:hover, .hit:hover, .about-link:hover { background: var(--hover); }
  .sheet-item:hover, .picker-item:hover { background: var(--hover); }
  .copy-button:hover { background: var(--hover); }
  .crumb:hover, .back:hover { color: var(--text); }
}
.button:active, .icon-button:active, .sheet-item:active, .nav-link:active, .tree-link:active, .search-link:active, .file-main:active, .folder-row:active { opacity: 0.6; }

/* ---------- 启动、空状态、提示 ---------- */

.boot, .state { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 40vh; padding: 32px 24px; text-align: center; }
.boot { min-height: 100dvh; }
.state p { max-width: 440px; margin: 0; }
.spinner { width: 22px; height: 22px; border: 2.5px solid var(--line); border-top-color: var(--text-2); border-radius: 50%; animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.notice { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 18px; padding: 10px 14px; border-radius: 10px; background: var(--surface-2); color: var(--text-2); font: 14px/1.5 var(--sans); }
.form-error { margin: 12px 0 0; color: var(--danger); }
.toasts { position: fixed; left: 50%; bottom: calc(24px + env(safe-area-inset-bottom)); transform: translateX(-50%); display: flex; flex-direction: column; gap: 8px; z-index: 50; width: min(92vw, 420px); pointer-events: none; }
.toast { padding: 11px 16px; border-radius: 10px; background: var(--ink); color: var(--on-ink); font-size: 14px; text-align: center; box-shadow: 0 8px 24px rgba(31, 30, 29, 0.18); }
/* 带「撤销」的那种:字在左,按钮在右,能点(外层 .toasts 不接点击)。 */
.toast.with-action { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 6px 6px 6px 16px; text-align: left; pointer-events: auto; }
.toast-action { flex: none; min-height: 34px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; color: var(--on-ink); font: inherit; font-weight: 600; cursor: pointer; }
.toast-action:active { opacity: 0.6; }

/* ---------- 登录 ---------- */

.login { min-height: 100dvh; display: grid; place-items: center; padding: calc(24px + env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom)); }
.login-card { width: min(100%, 380px); text-align: center; }
.login-card h1 { font: 500 30px/1.2 var(--serif); margin: 14px 0 6px; }
.login-mark { border-radius: 14px; }
.login-form { display: flex; flex-direction: column; gap: 10px; margin-top: 28px; text-align: left; }
.login-form label { font-size: 13px; color: var(--muted); }
.login-form .button { margin-top: 6px; min-height: 44px; }
.input.code { letter-spacing: 0.3em; font-size: 20px; text-align: center; }
/* Apple:Apple 的规定是黑底白字(深色下白底黑字),标志和字同色,不用墨色。「上次使用」的底取字色的淡一层。 */
.button.apple { display: flex; width: 100%; min-height: 44px; margin-top: 28px; background: #000; border-color: #000; color: #fff; font-size: 15px; text-decoration: none; }
.button.apple .apple-logo { width: 17px; height: 17px; margin-top: -2px; fill: currentColor; stroke: none; }
.last-used { margin-left: 4px; padding: 1px 7px; border-radius: 10px; background: color-mix(in srgb, currentColor 22%, transparent); font-size: 11px; font-weight: 600; }
.login-or { display: flex; align-items: center; gap: 12px; margin: 16px 0 0; color: var(--muted); font-size: 12px; }
.login-or::before, .login-or::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.login-or + .login-form { margin-top: 12px; }
.login-same { margin: 14px 0 0; font-size: 12px; line-height: 1.5; }
/* 继续即表示同意用户协议和隐私政策:两个名字是链接,在站内读。 */
.login-legal { margin: 14px 0 0; font-size: 12px; line-height: 1.5; }
.login-legal a { color: var(--text-2); text-decoration: underline; text-underline-offset: 2px; text-decoration-color: var(--line-strong); }
@media (prefers-color-scheme: dark) {
  .button.apple { background: #fff; border-color: #fff; color: #000; }
}
@media (hover: hover) {
  .button.apple:hover { background: #000; opacity: 0.85; }
}
@media (hover: hover) and (prefers-color-scheme: dark) {
  .button.apple:hover { background: #fff; }
}

/* ---------- 开始用:没登录时的介绍,登录后的上手清单 ---------- */

/* 没登录的首页:一栏,上面是它是什么、三步、隐私,下面是登录。宽屏上一屏放得下。 */
.login.with-intro { place-items: start center; padding-top: calc(28px + env(safe-area-inset-top)); }
.welcome { width: min(100%, 620px); display: flex; flex-direction: column; gap: 18px; }
.intro-head { display: flex; align-items: center; gap: 12px; }
.intro-head h1 { font: 500 32px/1.2 var(--serif); }
.intro-head .login-mark { border-radius: 11px; }
.intro-what { margin: 12px 0 0; font: 18px/1.6 var(--serif); }
.intro-what code, .intro-privacy code { font-family: var(--mono); font-size: 0.86em; font-weight: 600; padding: 1px 5px; border-radius: 5px; background: var(--surface-2); }
.intro-needs { margin: 6px 0 0; font-size: 13px; color: var(--muted); }
.intro-steps { display: block; margin: 16px 4px 8px; }
.intro-privacy { display: flex; gap: 10px; margin: 12px 4px 0; font-size: 13px; line-height: 1.6; color: var(--text-2); }
.intro-privacy > .icon { width: 16px; height: 16px; margin-top: 2px; color: var(--muted); }
.login-box { padding: 16px 18px 18px; border-radius: var(--radius); background: var(--surface); border: 1px solid var(--line); }
.login-title { font: 500 19px/1.3 var(--serif); }
.login-hint { margin: 4px 0 0; font-size: 13px; }
.login-box .login-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 10px; margin-top: 12px; }
.login-box .login-form .button { margin-top: 0; min-height: 40px; }
.login-box .button.apple { margin-top: 14px; }
.login-box .login-or { margin-top: 14px; }
.login-box .login-or + .login-hint { margin-top: 8px; }

/* 三步:一个圈(做完是勾),标题和一句提示,下面一行命令带复制。做完的只剩标题。 */
.steps { list-style: none; margin: 0; padding: 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.step { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 7px 12px; padding: 11px 14px; }
.step + .step { border-top: 1px solid var(--line); }
.step-mark { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; border: 1.5px solid var(--line-strong); color: var(--text-2); font-size: 12px; font-weight: 600; }
.step.current .step-mark { background: var(--ink); border-color: var(--ink); color: var(--on-ink); }
.step.done .step-mark { border-color: transparent; background: var(--surface-2); color: var(--ok); }
.step.done .step-mark .icon { width: 14px; height: 14px; stroke-width: 2.4; }
.step-text { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 10px; min-width: 0; padding-top: 1px; }
.step-title { font-weight: 600; }
.step.done .step-title { color: var(--muted); font-weight: 500; }
.step-hint { font-size: 13px; color: var(--muted); }
.command-line { grid-column: 2; display: flex; align-items: center; gap: 8px; min-height: 38px; padding: 3px 3px 3px 12px; border-radius: 8px; background: var(--surface-2); }
.command-line code { flex: 1; min-width: 0; font: 13px/1.5 var(--mono); overflow-wrap: anywhere; user-select: all; -webkit-user-select: all; }
.copy-button { flex: none; display: inline-flex; align-items: center; gap: 5px; height: 32px; padding: 0 10px; border: 0; border-radius: 6px; background: var(--surface); box-shadow: 0 0 0 1px var(--line); color: var(--text); font-size: 13px; font-weight: 500; cursor: pointer; }
.copy-button .icon { width: 15px; height: 15px; }
.copy-button:active { opacity: 0.6; }

/* 登录后:最近那一列的最上面(手机上在首页侧栏的顶上,宽屏上侧栏里不重复)。 */
.setup { max-width: 760px; margin-bottom: 16px; }
.setup-title { margin: 4px 4px 0; font: 500 20px/1.3 var(--serif); }
.setup-hint { margin: 2px 4px 10px; font-size: 13px; }
@media (min-width: 900px) {
  .sidebar .setup { display: none; }
}

/* ---------- 外框 ---------- */

.app { display: grid; grid-template-columns: var(--sidebar) minmax(0, 1fr); min-height: 100dvh; }
.sidebar {
  position: sticky; top: 0; height: 100dvh; display: flex; flex-direction: column; gap: 2px;
  padding: calc(14px + env(safe-area-inset-top)) 10px calc(12px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left));
  border-right: 1px solid var(--line); background: var(--side); overflow-y: auto;
}
.sidebar-head { display: flex; align-items: center; padding: 2px 8px 12px; }
.brand { display: flex; align-items: center; gap: 10px; font: 500 20px/1 var(--serif); }
.brand img { border-radius: 6px; }
.search-link {
  display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 0 10px; margin-bottom: 10px;
  border-radius: 8px; border: 1px solid var(--line); background: var(--surface); color: var(--muted); font-size: 14px;
}
.search-link .icon { width: 16px; height: 16px; }
.nav-list { display: flex; flex-direction: column; gap: 1px; }
.nav-link, .tree-link {
  display: flex; align-items: center; gap: 9px; min-height: 32px; padding: 0 10px; border-radius: 8px; color: var(--text-2); font-size: 14px;
}
.nav-link .icon, .tree-link .icon { width: 17px; height: 17px; color: var(--muted); }
.nav-link.current, .tree-row.current .tree-link { background: var(--selected); color: var(--text); font-weight: 600; }
.nav-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-count { font-size: 12px; color: var(--muted); font-weight: 400; }
.nav-badge { font-size: 12px; font-weight: 600; color: var(--attention); }
.folders { flex: 1; margin-top: 14px; }
.section-head { display: flex; align-items: center; justify-content: space-between; padding: 0 4px 4px 10px; }
.section-label { font-size: 12px; font-weight: 600; color: var(--muted); }
.tree { display: flex; flex-direction: column; gap: 1px; }
.tree-row { display: flex; align-items: center; padding-left: calc(var(--depth) * 14px); }
.tree-row .tree-link { flex: 1; min-width: 0; padding-left: 4px; }
.tree-toggle, .tree-toggle-spacer { flex: none; width: 22px; height: 28px; }
.tree-toggle { display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 6px; background: transparent; color: var(--muted); cursor: pointer; padding: 0; }
.tree-toggle .icon { width: 14px; height: 14px; }
/* 宽屏的树不写数字:数字在文件夹页里。 */
.tree .nav-count { display: none; }
.drop-over { background: var(--selected) !important; box-shadow: inset 0 0 0 1.5px var(--text-2); }
.nav-empty { margin: 0; padding: 2px 10px 8px; font-size: 13px; line-height: 1.5; }
.sidebar-foot { display: flex; flex-direction: column; gap: 1px; padding-top: 10px; }
/* 侧栏最下面一行是邮箱,点它进设置(退出登录在设置 › 你里)。 */
.nav-link.account { margin-top: 6px; color: var(--muted); }
.nav-link.account .account-email { font-size: 13px; }
.main { min-width: 0; }

/* ---------- 页面 ---------- */

.page { max-width: 1100px; margin: 0 auto; padding: 0 40px 56px; }
.page.reading { max-width: 1040px; }
.page-head {
  position: sticky; top: 0; z-index: 5; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 12px;
  padding: calc(22px + env(safe-area-inset-top)) 0 14px; background: color-mix(in srgb, var(--bg) 90%, transparent);
  backdrop-filter: saturate(160%) blur(14px); -webkit-backdrop-filter: saturate(160%) blur(14px);
}
/* 宽屏上没有返回(在侧栏里):两栏,标题能多长就多长,长了截断,不压到右边的按钮。手机上三栏,见下。 */
.back, .back-spacer { display: none; }
.page-title { min-width: 0; }
.page-title h1 { font: 500 28px/1.25 var(--serif); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.page-subtitle { margin: 3px 0 0; font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 2px; font-size: 13px; color: var(--muted); }
.crumb { color: var(--muted); }
.crumb-sep { color: var(--faint); }
.page-actions { display: flex; align-items: center; justify-content: flex-end; gap: 6px; padding-bottom: 2px; }
.page-body { padding-top: 6px; }
.more { display: flex; margin: 16px auto 0; }

/* ---------- 一列文件 ---------- */

.list { display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.list + .list, .bulk + .list, .folders-list + .state { margin-top: 14px; }
.group-label { padding: 10px 14px 4px 42px; font-size: 12px; font-weight: 600; color: var(--muted); background: var(--bg); border-bottom: 1px solid var(--line); }
.group:first-child .group-label { border-top: 0; }
.group + .group .group-label { border-top: 1px solid var(--line); }
/*
 * 一行文件:名称、(跨文件夹的列表里)在哪、时间。类型看图标,来源在纸顶和历史里,都不另占一列。勾选框平时
 * 不占地方:悬停或键盘聚焦时出现在图标的位置,选中了一份之后整列都显示(.selecting)。手机上见下面。
 */
.file-row {
  position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 112px; align-items: center; gap: 12px;
  min-height: 46px; padding: 0 14px; border-bottom: 1px solid var(--line);
}
.files:has(.col-place) .file-row { grid-template-columns: minmax(0, 1fr) minmax(0, 0.5fr) 112px; }
.file-row:last-child, .group .file-row:last-child { border-bottom: 0; }
.file-row:has(.trash-tail) { grid-template-columns: minmax(0, 1fr) minmax(0, 0.5fr) 112px auto; }
.file-row.selected { background: var(--selected); }
.check { position: absolute; left: 14px; top: 0; bottom: 0; z-index: 1; display: flex; align-items: center; justify-content: center; width: 18px; cursor: pointer; opacity: 0; }
.check input { width: 16px; height: 16px; margin: 0; accent-color: var(--ink); cursor: pointer; }
.file-row:is(:hover, :focus-within) .check, .selecting .check { opacity: 1; }
.file-row:is(:hover, :focus-within):has(.check) .file-icon, .selecting .file-icon { visibility: hidden; }
.file-main { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 10px 0; }
.file-icon { display: inline-flex; flex: none; color: var(--muted); }
.file-main .icon { color: var(--muted); }
.file-text { display: flex; flex-direction: column; min-width: 0; }
/* 只有字的标题是块,太长了以省略号收尾(弹性盒里的字不出省略号);带标签的(搜索、历史)是一行弹性盒,字在第一格里收尾。 */
.file-title { display: block; min-width: 0; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.file-title:has(> span) { display: flex; align-items: center; gap: 8px; }
.file-title > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.file-sub { font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 宽屏上这几样在各自的列里,不在标题下面重复。 */
.files .file-sub { display: none; }
.col { font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.col-when { font-variant-numeric: tabular-nums; text-align: right; }
.trash-tail { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.folder-row { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 0 14px; border-bottom: 1px solid var(--line); }
.folder-row:last-child { border-bottom: 0; }
.folder-row .icon { color: var(--muted); }
.folder-row .file-title { flex: 1; }
.folder-row .icon:last-child { width: 15px; height: 15px; color: var(--faint); }

.bulk {
  position: sticky; top: 92px; z-index: 4; display: flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 8px 0 14px;
  border-radius: var(--radius); background: var(--ink); color: var(--on-ink);
}
.bulk-count { font-weight: 600; margin-right: 10px; }
.bulk-action { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 10px; border: 0; border-radius: 7px; background: transparent; color: inherit; font-size: 13px; cursor: pointer; }
.bulk-action .icon { width: 15px; height: 15px; }
.bulk-action:hover { background: rgba(127, 127, 127, 0.2); }
.bulk-hint { flex: 1; text-align: right; font-size: 12px; opacity: 0.6; margin-right: 6px; }
.bulk-clear { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: 0; border-radius: 7px; background: transparent; color: inherit; cursor: pointer; }

/* 收件箱:一行文件,下面(宽屏在右边)是 Agent 的建议。 */
/* 建议那一栏定宽:每一行各是一个网格,宽度不定的话前面几列就对不齐。 */
.inbox-item { display: grid; grid-template-columns: minmax(0, 1fr) 400px; align-items: center; border-bottom: 1px solid var(--line); }
.inbox-item:last-child { border-bottom: 0; }
.inbox-item .file-row { border-bottom: 0; grid-template-columns: minmax(0, 1fr) 104px; }
.suggestion { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 6px 14px; font-size: 13px; min-width: 0; }
.suggestion-text { display: flex; flex-direction: column; gap: 1px; flex: 1; min-width: 0; }
.suggestion-path { display: inline-flex; align-items: center; gap: 6px; min-width: 0; color: var(--text-2); overflow: hidden; white-space: nowrap; }
.suggestion-path > span:not(.tag) { overflow: hidden; text-overflow: ellipsis; }
/* 理由和文件夹名对齐(箭头 15px + 间距 6px);宽屏一行,手机两行。 */
.suggestion-reason { padding-left: 21px; font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.suggestion.none { justify-content: space-between; }
.suggestion-path .icon { width: 15px; height: 15px; color: var(--muted); }

.revision-row, .hit { display: flex; align-items: center; gap: 12px; padding: 11px 14px; border-bottom: 1px solid var(--line); }
.revision-row:last-child, .hit:last-child { border-bottom: 0; }
.revision-number { width: 34px; font-weight: 600; color: var(--text-2); }
.hit .icon { color: var(--muted); }
.snippet { font-size: 14px; color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; }

/* ---------- 整理建议 ---------- */

.tidy-card {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px 14px; margin-bottom: 14px; padding: 14px 16px;
  border-radius: var(--radius); background: var(--surface); border: 1px solid var(--line); color: var(--text);
}
.tidy-card-icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 17px; background: var(--surface-2); color: var(--text-2); flex: none; }
.tidy-card-text { display: flex; flex-direction: column; flex: 1 1 260px; min-width: 0; font-size: 14px; }
.tidy-card-title { font-weight: 600; }
.tidy-card-counts { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border-radius: 12px; background: var(--surface-2); color: var(--text-2); font-size: 12px; }
.tidy-card-go { display: inline-flex; align-items: center; gap: 2px; font-weight: 500; font-size: 14px; }
.tidy-card-go .icon { width: 16px; height: 16px; }

.page.tidy { max-width: 920px; }
.tidy-summary { margin: 0 0 4px; font: 500 17px/1.5 var(--serif); }
.tidy-note { margin: 0 0 16px; font-size: 14px; }
.tidy-section { margin-bottom: 16px; border-radius: var(--radius); background: var(--surface); border: 1px solid var(--line); overflow: hidden; }
.tidy-section.confirm { border-color: color-mix(in srgb, var(--attention) 40%, transparent); }
.tidy-section-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.tidy-section-head h2 { font-size: 15px; font-weight: 600; }
.tidy-section-head .muted { font-size: 13px; flex: 1 1 300px; }
.tidy-row { display: flex; align-items: flex-start; gap: 12px; padding: 11px 16px; border-bottom: 1px solid var(--line); cursor: pointer; }
.tidy-row:last-child { border-bottom: 0; }
.tidy-row.off .tidy-text { opacity: 0.55; }
.tidy-check { width: 16px; height: 16px; margin: 3px 0 0; accent-color: var(--ink); flex: none; cursor: pointer; }
.tidy-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.tidy-line { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; }
.tidy-line .icon { width: 15px; height: 15px; color: var(--muted); }
.tidy-reason { font-size: 13px; color: var(--muted); }
.tidy-status { flex: none; font-size: 12px; font-weight: 600; white-space: nowrap; padding-top: 2px; }
.tidy-status.applied, .tidy-status.undone { color: var(--ok); }
.tidy-status.skipped, .tidy-status.kept { color: var(--attention); }
.tidy-banner { justify-content: space-between; }
.tidy-bar {
  position: sticky; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 4; display: flex; align-items: center; gap: 12px;
  margin-top: 8px; padding: 10px 10px 10px 16px; border-radius: var(--radius); background: var(--ink); color: var(--on-ink);
  box-shadow: 0 10px 30px rgba(31, 30, 29, 0.2);
}
.tidy-bar-hint { flex: 1; font-size: 12px; opacity: 0.65; }
.tidy-apply { background: var(--on-ink); border-color: var(--on-ink); color: var(--ink); font-weight: 600; }

/* ---------- 读:一张纸 ---------- */

/*
 * 读的时候是一张白纸:衬线正文、舒展的行距,不给区块加框、不贴标签。渲染库的变量(--md-*)在这里
 * 收小一号 —— 它的默认值是给聊天气泡里的长回答定的。
 *
 * 纸最宽 960px;文字一行最长 --measure(17px 的字一行 40 个汉字左右),在纸上居中。表格、代码块、图
 * 可以比一行字宽(接口文档的四列表格要 780px 上下才不用横滑),但左边和正文对齐、只往右伸,最宽到纸的
 * 内边,再宽就横着滑:往下读的时候左边不跳。--inset 是正文那一栏离纸左边的距离(纸比 --measure 宽时
 * 才有),百分比按用到它的那个块所在的正文算。
 */
.paper {
  --measure: 680px;
  margin-top: 4px; padding: 44px 56px 52px; border-radius: 4px; background: var(--surface);
  box-shadow: 0 1px 2px rgba(31, 30, 29, 0.06), 0 12px 32px rgba(31, 30, 29, 0.05);
}
.paper > :not(.note-body), .md-body > :not(.table-container, .code-block-wrapper, .md-diagram) { max-width: var(--measure); margin-inline: auto; }
.md-body { --inset: max(0px, calc((100% - var(--measure, 100%)) / 2)); }
.md-body > :is(.table-container, .code-block-wrapper, .md-diagram) { margin-left: var(--inset); margin-right: 0; max-width: calc(100% - var(--inset)); }
.paper-meta { margin: 0 0 22px; font-size: 13px; color: var(--muted); }
/* 纸上的标题只在手机上显示(那里顶栏放不下长标题);宽屏的标题在顶上。 */
.paper-title { display: none; }
.paper-title, .preview-title, .revision-title, .shared-title, .gate h1, .login-card h1 { text-wrap: balance; }
/* 模板:开头的说明是两枚标签,下面一行说怎么用,再下面是骨架。 */
.template-facts { display: flex; flex-wrap: wrap; gap: 6px; margin: -10px 0 10px; }
.template-facts .chip { gap: 5px; }
.template-facts .icon { width: 14px; height: 14px; }
.template-use { margin: 0 0 22px; font-size: 13px; }
.template-use code { font-size: 12.5px; }
/* 模板页下面的内置模板:一行一份,能展开看全文、复制来改。 */
.builtin .section-label { display: block; margin: 28px 4px 4px; }
.builtin-about { margin: 0 4px 10px; font-size: 13px; }
.builtin-row { border-bottom: 1px solid var(--line); }
.builtin-row:last-child { border-bottom: 0; }
.builtin-head { display: flex; align-items: center; gap: 12px; padding: 12px 16px; }
.builtin-head > .icon { flex: none; width: 18px; height: 18px; color: var(--text-2); }
.builtin-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.builtin-text .muted { font-size: 13px; }
.builtin-text code { font: 600 12.5px/1.5 var(--mono); color: var(--text-2); }
.builtin-actions { display: flex; gap: 6px; flex: none; }
.builtin-body { padding: 4px 16px 18px; border-top: 1px solid var(--line); background: var(--surface-2); }
.builtin-body .template-use { margin: 12px 0 4px; }
.builtin-body .md-body { font-size: 15px; }
.lang-select { max-width: 280px; }
.revision-title { font: 500 22px/1.3 var(--serif); margin: 0 0 14px; }
/* 版本页上「这一版 / 和上一版比」。 */
.revision-modes { max-width: 360px; margin: 0 0 12px; }
/*
 * 两版比一比(版本页、收件人页):一行一格,左边一列是加减号(不只靠颜色分),删掉的那一行里改了的字
 * 再划掉。没改的几行收成一条虚线,点开再看。字是 Markdown 原文,保留缩进,长行折行。
 */
.diff-summary { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 0 0 12px; font-size: 13px; font-weight: 500; }
.diff-count.add { color: var(--diff-add-ink); }
.diff-count.del { color: var(--diff-del-ink); }
.diff-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; margin: 0 0 14px; font-size: 14px; }
.diff-title del, .diff-title ins { padding: 1px 6px; border-radius: 4px; text-decoration: none; overflow-wrap: anywhere; }
.diff-title del { background: var(--diff-del); }
.diff-title ins { background: var(--diff-add); }
.diff-lines, .diff-hidden { display: flex; flex-direction: column; gap: 2px; }
.diff-line { display: grid; grid-template-columns: 1.2em minmax(0, 1fr); gap: 4px; margin: 0; padding: 3px 8px 3px 2px; border-radius: 4px; font-size: 15px; line-height: 1.65; color: var(--text-2); text-decoration: none; }
.diff-line.add { background: var(--diff-add); color: var(--text); }
.diff-line.del { background: var(--diff-del); color: var(--text); }
.diff-sign { text-align: center; font-weight: 600; user-select: none; -webkit-user-select: none; }
.diff-line.add .diff-sign { color: var(--diff-add-ink); }
.diff-line.del .diff-sign { color: var(--diff-del-ink); }
.diff-text { min-width: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.diff-word { border-radius: 3px; }
.add .diff-word { background: var(--diff-add-strong); }
.del .diff-word { background: var(--diff-del-strong); text-decoration: line-through; text-decoration-color: var(--diff-del-ink); }
.diff-fold { display: block; width: 100%; margin: 4px 0; padding: 7px 0; border: 0; border-block: 1px dashed var(--line-strong); background: transparent; color: var(--muted); font-size: 13px; cursor: pointer; }
.diff-fold:hover { color: var(--text-2); }
.diff-problem { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 20px 0; }
.diff-problem p { margin: 0; }
.note-body { display: flex; flex-direction: column; }
/*
 * 纸上的正文(Nota 阅读与外观规范 §3)。渲染库的冷色默认值(灰底代码、系统蓝勾选框、编辑器配色、带竖线的表格)
 * 一律换成这张暖纸上的:颜色都取自上面的色板,不另起色相。渲染库读的变量(--md-*、--hljs-*、--chat-*、
 * --code-*)在这里给,只管 .md-body 里面。
 *
 * 行高看内容语言(js/markdown.js 的 contentLanguage 写在 lang 上):西文 1.65,中日韩 1.8,标题 1.35。
 */
.md-body {
  --md-h1-size: 1.35em;
  --md-h2-size: 1.16em;
  --md-h3-size: 1.04em;
  --md-h4-size: 1em;
  --md-heading-weight: 600;
  --md-heading-line-height: 1.35;
  --md-body-line-height: 1.65;
  --md-paragraph-margin: 0.7em;
  --md-list-item-margin: 0.2em;
  --md-code-radius: 8px;
  --md-text-wrap: pretty;
  --md-blockquote-border: var(--line-strong);
  --chat-text-color: var(--text);
  --chat-secondary-text-color: var(--muted);
  --chat-link-color: var(--text);
  --chat-code-color: var(--text);
  --chat-inline-code-bg: var(--surface-2);
  --chat-fill: var(--surface-2);
  --chat-table-border: var(--line);
  --chat-success: var(--ok);
  --md-error-color: var(--danger);
  --code-surface: #F5F4ED;
  --code-border: rgba(31, 30, 29, 0.08);
  --code-header-button-bg-hover: var(--hover);
  --hljs-bg: #F5F4ED;
  --hljs-color: #1F1E1D;
  --hljs-keyword: #9C4421;
  --hljs-name: #9C4421;
  --hljs-string: #4D7A3A;
  --hljs-attr: #6E4A7E;
  --hljs-title: #8A5A00;
  --hljs-built-in: #8A5A00;
  --hljs-comment: #73726C;
  --hljs-bullet: #73726C;
  --hljs-subst: #1F1E1D;
  --hljs-section: #1F1E1D;
  --hljs-strong-color: #1F1E1D;
  --hljs-emphasis-color: #1F1E1D;
  --hljs-addition-color: #4D7A3A;
  --hljs-addition-bg: rgba(77, 122, 58, 0.12);
  --hljs-deletion-color: #B3261E;
  --hljs-deletion-bg: rgba(179, 38, 30, 0.10);
  --check-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23FAF9F5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  font: 17px/1.65 var(--serif); color: var(--text); overflow-wrap: anywhere;
}
@media (prefers-color-scheme: dark) {
  .md-body {
    --code-surface: #262624;
    --code-border: rgba(250, 249, 245, 0.08);
    --hljs-bg: #262624;
    --hljs-color: #F5F4ED;
    --hljs-keyword: #EBA488;
    --hljs-name: #EBA488;
    --hljs-string: #A9C79A;
    --hljs-attr: #CDB0D6;
    --hljs-title: #E3C07F;
    --hljs-built-in: #E3C07F;
    --hljs-comment: #9C9A92;
    --hljs-bullet: #B0AEA5;
    --hljs-subst: #F5F4ED;
    --hljs-section: #F5F4ED;
    --hljs-strong-color: #F5F4ED;
    --hljs-emphasis-color: #F5F4ED;
    --hljs-addition-color: #A9C79A;
    --hljs-addition-bg: rgba(157, 192, 139, 0.14);
    --hljs-deletion-color: #F2B8B5;
    --hljs-deletion-bg: rgba(242, 184, 181, 0.12);
    --check-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%231F1E1D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  }
}
/*
 * 中日韩为主:行高 1.8;中西文之间缺的空隙交给浏览器补(text-autospace,iOS 26.5 的 Safari 支持、默认关)。
 * 段落不用 pretty:WebKit 拿它排整段中文,每一行都提前折,右边空出一条;不留单字成行靠 js/markdown.js 的
 * .md-keep(最后两个字不折开)。
 */
.md-body:is(:lang(zh), :lang(ja), :lang(ko)) { --md-body-line-height: 1.8; --md-text-wrap: wrap; line-height: 1.8; text-autospace: normal; }
.md-body .md-keep { white-space: nowrap; }
.md-body > :first-child { margin-top: 0; }
.md-body > :last-child { margin-bottom: 0; }
.md-body :is(h1, h2, h3, h4, h5, h6) { margin: 1.5em 0 0.45em; font-family: var(--serif); text-wrap: balance; }
.md-body :is(h1, h2, h3, h4) + :is(ul, ol, p) { margin-top: 0.2em; }
.md-body > :is(h1, h2, h3, h4):first-child { margin-top: 0.2em; }
.md-body .hljs-comment { font-style: italic; }
/* 代码:暖色的底,一道很淡的边;行内代码小一号,放得下一行时不从中间折开(整段挪到下一行)。 */
.md-body .code-block-wrapper { border-width: 1px; }
.md-body pre code { font-family: var(--mono); }
.md-body pre { font-size: 13.5px; line-height: 1.55; }
.md-body code:not(pre code) { display: inline-block; max-width: 100%; padding: 0 0.35em; border-radius: 4px; font-family: var(--mono); font-size: 0.85em; line-height: 1.5; background: var(--surface-2); color: var(--text); text-indent: 0; }
/* 引用:没有底色,左边一道细线,字是读得清的次一级颜色,不斜。 */
.md-body blockquote { margin: 1.1em 0; padding: 0 0 0 1em; border-left: 2px solid var(--line-strong); border-radius: 0; background: none; color: var(--text-2); font-style: normal; }
.md-body blockquote p { margin: 0.4em 0; color: inherit; }
/*
 * 表格:宽度按内容,只有横线;表头加粗、下面一道深一点的线。左边和正文对齐,至少和正文一样宽,最宽到纸的内边
 * (见 .paper 那一段的 --inset);再宽就横着滑,还有内容的那一侧渐隐(js/markdown.js 写 data-more)。
 */
.md-body .table-container { width: fit-content; min-width: min(100% - var(--inset), var(--measure, 100%)); margin-block: 1.2em; }
.md-body .table-container[data-more="right"] { -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 40px), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 40px), transparent); }
.md-body .table-container[data-more="left"] { -webkit-mask-image: linear-gradient(to left, #000 calc(100% - 40px), transparent); mask-image: linear-gradient(to left, #000 calc(100% - 40px), transparent); }
.md-body .table-container[data-more="left right"] { -webkit-mask-image: linear-gradient(to right, transparent, #000 40px, #000 calc(100% - 40px), transparent); mask-image: linear-gradient(to right, transparent, #000 40px, #000 calc(100% - 40px), transparent); }
.md-body table { width: auto; border: 0; border-radius: 0; background: transparent; }
.md-body :is(table, th, td) { font-family: var(--sans); font-size: 14px; }
.md-body :is(th, td) { padding: 8px 14px; border-right: 0; border-bottom: 1px solid var(--line); line-height: 1.5; font-variant-numeric: tabular-nums; vertical-align: top; }
.md-body :is(th, td):first-child { padding-left: 0; }
.md-body :is(th, td):last-child { padding-right: 0; }
.md-body th { font-weight: 600; border-bottom: 1.5px solid var(--line-strong); background: none; }
.md-body hr { margin: 1.8em 0; border-top-color: var(--line); }
.md-body a { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-strong); }
/* 正文里的附件:图片不超过纸宽;别的(PDF、表格……)是一个可以下载的条目,回形针、名字、大小。 */
.md-body img { max-width: 100%; height: auto; }
.md-body a.md-attachment { display: inline-flex; align-items: center; gap: 8px; max-width: 100%; padding: 6px 12px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-2); text-decoration: none; }
.md-attachment .icon { width: 16px; height: 16px; color: var(--muted); }
.md-attachment-size { color: var(--muted); font-size: 0.85em; white-space: nowrap; }
/* 「网页」:沙箱里跑的那一页。纸是它的框,高度给够,底下一行在新标签页里打开。 */
/* PDF 附件:一页一页画在纸上,每页一张白纸、细边;超出的页数去新标签页里看。 */
.pdf-view { margin: 12px 0 20px; }
.pdf-pages { display: flex; flex-direction: column; gap: 12px; }
.pdf-page { display: block; width: 100%; height: auto; background: #fff; border: 1px solid var(--line); border-radius: 4px; }
.pdf-view[data-state="loading"] .pdf-pages:empty { min-height: 240px; border-radius: var(--radius); background: var(--surface-2); }
.pdf-more, .pdf-failed { margin: 10px 0 0; font-size: 13px; }
.pdf-more a, .pdf-failed a { color: var(--muted); text-decoration: underline; text-underline-offset: 3px; }
.page-frame { display: block; width: 100%; height: 75vh; min-height: 420px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.page-frame-open { margin: 8px 0 0; font-size: 13px; }
.page-frame-open a { color: var(--muted); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-strong); }
/* 只有一行斜体的段落是一条说明(「更新于 … · Claude Code」):小一号、淡一些。 */
.md-body p:has(> em:only-child) { font: 13px/1.5 var(--sans); color: var(--muted); margin-top: 0.3em; }
.md-body p:has(> em:only-child) em { font-style: normal; color: inherit; }
/* 列表的缩进(渲染库拿它当 padding-left):序号和圆点挂在缩进里,放不下的部分被 .md-body 的横向裁切
 * 切掉。有序列表按这份正文最大序号的位数留(js/markdown.js 数出 --ol-digits):一位数字宽 1ch,0.8em 是
 * 后面的点和空隙;只到 9 的列表和无序列表一样宽。 */
.md-body ul { --md-list-indent: 1.35em; }
.md-body ol { --md-list-indent: calc(var(--ol-digits, 1) * 1ch + 0.8em); }
/*
 * 勾选框在左,折行的字和第一行的字对齐。框是自己画的:墨色的底、纸色的勾,不是系统蓝。勾上的那一项字淡下去。
 * 渲染库把框包在 <label> 里(`li > label > input`)。
 */
.md-body .task-list-item { margin-left: calc(-1 * var(--md-list-indent)); padding-left: 1.5em; text-indent: -1.5em; }
.md-body .task-list-item > :is(ul, ol, p, div) { text-indent: 0; }
.md-body .task-list-item input[type="checkbox"] {
  -webkit-appearance: none; appearance: none; box-sizing: border-box; display: inline-block; width: 0.95em; height: 0.95em; margin: 0 0.55em 0 0; vertical-align: -0.12em;
  border: 1.5px solid var(--muted); border-radius: 4px; background: transparent center / 100% no-repeat; opacity: 1; cursor: default;
}
.md-body .task-list-item input[type="checkbox"]:checked { border-color: var(--ink); background-color: var(--ink); background-image: var(--check-mark); }
.md-body .task-list-item:has(> label > input[type="checkbox"]:checked, > input[type="checkbox"]:checked) { color: var(--muted); }
/*
 * Mermaid 图(渲染库画,它从 .md-diagram-image 上读颜色和字体):纸上的颜色——框是 --surface-2、框线 --faint、
 * 连线 --muted、子图和注释 --bg——标签用界面的无衬线字。图不超过它自己的宽度,左边和正文对齐;太宽时渲染库
 * 让它在自己的盒子里横滑,也替它摘掉 Mermaid 12 时序图那道 SVG 阴影。画不出来时代码块上面一行说明。
 */
.md-body .md-diagram { margin-block: 1.5em; }
.md-body .md-diagram-image {
  --md-diagram-font-family: var(--sans);
  --md-diagram-font-size: 15px;
  --chat-text-color: var(--text);
  --chat-fill: var(--surface-2);
  --chat-table-border: var(--faint);
  --chat-secondary-text-color: var(--muted);
  --code-surface: var(--bg);
}
.md-body .md-diagram-image svg { margin: 0; }
.md-body .md-diagram-error { margin: 0 0 0.4em; font: 13px/1.5 var(--sans); color: var(--muted); }

/*
 * 阅读字体「清晰」(设置 › 外观,js/appearance.js 在 <html> 上写 data-font="clear"):标题和纸上的标题用 Source Serif 4
 * 配思源宋体(汉字字形看内容语言),正文西文为主用 Source Serif 4,中日韩为主用系统无衬线。字体在 fonts/clear.css
 * (scripts/build.ts),选了才取。代码、表格、界面不变。
 */
:root {
  --clear-latin: "Nota Source Serif";
  --clear-cjk-serif: "Nota Serif SC";
  --clear-cjk-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", system-ui, sans-serif;
}
[lang="zh-Hant"] {
  --clear-cjk-serif: "Nota Serif TC";
  --clear-cjk-sans: -apple-system, BlinkMacSystemFont, "PingFang TC", "Noto Sans CJK TC", "Source Han Sans TC", "Microsoft JhengHei", system-ui, sans-serif;
}
[lang="ja"] {
  --clear-cjk-serif: "Nota Serif JP";
  --clear-cjk-sans: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans CJK JP", "Source Han Sans JP", "Yu Gothic", Meiryo, system-ui, sans-serif;
}
[lang="ko"] {
  --clear-cjk-serif: "Nota Serif KR";
  --clear-cjk-sans: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans CJK KR", "Source Han Sans KR", "Malgun Gothic", system-ui, sans-serif;
}
[lang="zh-Hans"] {
  --clear-cjk-serif: "Nota Serif SC";
  --clear-cjk-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", system-ui, sans-serif;
}
:root[data-font="clear"] .md-body { font-family: var(--clear-latin), var(--clear-cjk-serif), var(--serif); }
:root[data-font="clear"] .md-body:is(:lang(zh), :lang(ja), :lang(ko)) { font-family: var(--clear-cjk-sans); }
:root[data-font="clear"] :is(.md-body :is(h1, h2, h3, h4, h5, h6), .paper-title, .preview-title, .revision-title, .shared-title, .gate h1, .app[data-page="artifact"] .page-title h1) {
  font-family: var(--clear-latin), var(--clear-cjk-serif), var(--serif);
}
.md-plain { white-space: pre-wrap; font: inherit; margin: 0; }

/* ---------- 设置 ---------- */

/*
 * 设置:一栏最宽 640px。五组(你、外观、语言、这台电脑上、关于),/nota 的命令说明跟在「这台电脑上」下面,默认折起。
 */
.page.settings-page { max-width: calc(640px + 80px); }
.settings .section-label { display: block; margin: 26px 4px 8px; }
.settings .section-label:first-child { margin-top: 6px; }
.how { padding: 16px 18px; gap: 14px; }
.how p { margin: 0; font-size: 14px; }
.how .field-hint { margin-top: 6px; font-size: 13px; }
.commands { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
/* 设置 › 装到电脑上:两种系统各一行,上面一个小标题。 */
.install-os { margin: 6px 0 -4px; font-size: 13px; }
.commands li { display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.commands code { font-family: var(--mono); font-size: 13px; font-weight: 600; color: var(--text); }
.commands.soon code { color: var(--muted); }
.soon-title { margin: 6px 0 -4px; }
.account-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 14px; border-top: 1px solid var(--line); }
.account-text { display: flex; flex-direction: column; min-width: 0; }
.account-text .field-label { margin: 0 0 2px; }
.account-text .account-email { font-size: 14px; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.delete-row .link-button { font-size: 14px; }
/* 关于:用户协议、隐私政策,一行一个,点进去在站内读。 */
.about-link { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 46px; padding: 0 14px 0 18px; color: var(--text); font-size: 14px; text-decoration: none; }
.about-link + .about-link { border-top: 1px solid var(--line); }
.about-link .icon { width: 14px; height: 14px; color: var(--faint); }
.choices { margin: 0; padding: 0; border: 0; min-width: 0; }
.choices + .choices { padding-top: 14px; border-top: 1px solid var(--line); }
/* legend 浮起来:不然它压在 fieldset 的上边线上,分隔线从字的右边才开始。 */
.choices legend { float: left; width: 100%; padding: 0; }
.choices legend + * { clear: both; }
.icon-choices { display: flex; gap: 12px; }
.icon-choice { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 12px 18px; border-radius: 12px; border: 1px solid var(--line); cursor: pointer; font-size: 13px; }
.icon-choice img { border-radius: 11px; }
.icon-choice input, .font-choice input { position: absolute; opacity: 0; pointer-events: none; }
.icon-choice.current, .font-choice.current { border-color: var(--text-2); box-shadow: inset 0 0 0 1px var(--text-2); }
.icon-choice.current { font-weight: 600; }
.icon-choice:has(input:focus-visible), .font-choice:has(input:focus-visible) { outline: 2px solid var(--text-2); outline-offset: 2px; }
/* 阅读字体的两张卡:各用自己的字体画一行样字。 */
.font-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.font-choice { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px 14px; border-radius: 12px; border: 1px solid var(--line); cursor: pointer; }
.font-sample { font-size: 30px; line-height: 1.25; color: var(--text); }
.font-sample.classic { font-family: var(--serif); }
.font-sample.clear { font-family: var(--clear-latin), var(--clear-cjk-serif), var(--serif); }
.font-name { margin-top: 4px; font-size: 14px; font-weight: 600; }
.font-note { font-size: 12.5px; line-height: 1.5; color: var(--muted); }
/* 最下面折起的一组:/nota 的命令说明和即将推出。 */
.settings-more { margin-top: 26px; }
.settings-more > summary { display: flex; align-items: center; gap: 4px; margin: 0 0 8px; cursor: pointer; list-style: none; }
.settings-more > summary::-webkit-details-marker { display: none; }
.settings-more > summary .icon { width: 14px; height: 14px; }
.settings-more[open] > summary .icon { transform: rotate(90deg); }

/* ---------- 编辑 ---------- */

.editor-page { display: flex; flex-direction: column; min-height: 100dvh; padding-bottom: 16px; }
.editor-head { grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; }
.editor-head > a { justify-self: start; }
/* 顶栏中间是「编辑 / 预览」(宽屏还有「并排」),标题只给读屏。 */
.editor-head .segmented { width: min(100%, 240px); margin: 0 auto; }
.draft-notice { flex: none; justify-content: space-between; margin: 0 0 10px; padding: 6px 6px 6px 14px; }
.editor-main { flex: 1; display: flex; min-height: 0; }
.editor-fields { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.editor-page[data-view="preview"] .editor-fields { display: none; }
/* 预览和阅读页同一张纸;标题写在纸上(顶栏中间是切换)。 */
.editor-preview { flex: 1; min-width: 0; }
.preview-title { margin: 0 0 22px; font: 500 30px/1.25 var(--serif); overflow-wrap: anywhere; }
/*
 * 并排:两栏各要 400px 以上才写得开、看得清(宽屏的侧栏占 280px),窄了就没有这一项,选着它也只剩编辑框。
 * 并排时整页正好一屏,编辑框和预览各自滚动。
 */
@media (max-width: 1279px) {
  .segment.wide-only { display: none; }
  .editor-page[data-view="split"] .editor-preview { display: none; }
}
@media (min-width: 1280px) {
  .editor-head .segmented { width: 360px; }
  .editor-page[data-view="split"] { max-width: 1800px; height: 100dvh; min-height: 0; }
  .editor-page[data-view="split"] .editor-main { gap: 24px; }
  .editor-page[data-view="split"] .editor-fields, .editor-page[data-view="split"] .editor-preview { flex: 1 1 0; }
  .editor-page[data-view="split"] .body-input { min-height: 0; resize: none; }
  .editor-page[data-view="split"] .editor-preview { margin-top: 0; padding: 32px 40px 40px; overflow-y: auto; overscroll-behavior: contain; }
}
.editor-new { display: flex; align-items: center; gap: 12px; font-size: 13px; }
.type-select { max-width: 200px; }
.title-input { font: 500 22px/1.3 var(--serif); }
.body-input { flex: 1; min-height: 60vh; resize: vertical; font: 15px/1.65 var(--mono); }
.editor-error { margin: 0 0 10px; }
/* 附件:编辑框下面一行(「附件」、正在传几个);粘贴、拖进编辑框也行。 */
.editor-tools { display: flex; align-items: center; gap: 10px; min-height: 32px; font-size: 13px; }
.editor-uploading { display: inline-flex; align-items: center; gap: 8px; }
.editor-uploading .spinner { width: 14px; height: 14px; border-width: 2px; }
@media (pointer: coarse) { .editor-attach-hint { display: none; } }
.conflict { margin: 0 0 14px; padding: 14px 16px; border-radius: var(--radius); border: 1px solid var(--line-strong); background: var(--attention-soft); }
.conflict h2 { font-size: 16px; }
.conflict p { margin: 6px 0 12px; }
.conflict-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.conflict-side h3 { font-size: 13px; color: var(--muted); margin-bottom: 6px; }
.conflict-text { margin: 0; max-height: 280px; overflow: auto; padding: 10px 12px; border-radius: 8px; background: var(--surface); border: 1px solid var(--line); white-space: pre-wrap; font: 13px/1.5 var(--mono); }
.conflict-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }

/* ---------- 搜索 ---------- */

.search-box { position: relative; margin-bottom: 14px; }
.search-box .icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--muted); }
.search-input { padding-left: 40px; min-height: 44px; }
.search-input::-webkit-search-cancel-button { cursor: pointer; }

/* ---------- 对话框 ---------- */

dialog {
  border: 0; padding: 0; border-radius: 14px; background: var(--surface); color: var(--text);
  width: min(92vw, 420px); box-shadow: 0 24px 60px rgba(31, 30, 29, 0.24);
}
dialog::backdrop { background: rgba(31, 30, 29, 0.32); }
/* 打开时对话框自己拿着焦点(手机上不让键盘先弹出来),它本身不是一个控件,不画焦点框。 */
dialog:focus { outline: none; }
.dialog-form { display: flex; flex-direction: column; gap: 14px; padding: 20px; }
.dialog-form h2, .picker-title { font: 500 19px/1.3 var(--serif); }
.dialog-actions { display: flex; justify-content: flex-end; gap: 8px; }
.sheet { display: flex; flex-direction: column; padding: 8px; }
.sheet-title { margin: 6px 12px 8px; font-size: 13px; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sheet-item { min-height: 46px; border: 0; border-radius: 9px; background: transparent; color: var(--text); font-size: 16px; cursor: pointer; }
.sheet-item.danger { color: var(--danger); }
.sheet-item.cancel { margin-top: 4px; font-weight: 600; background: var(--surface-2); }
.sheet-item.current { font-weight: 600; }
.sheet-item.current::after { content: " ✓"; }
.picker { display: flex; flex-direction: column; gap: 12px; padding: 18px; max-height: min(80dvh, 640px); }
.picker-list { display: flex; flex-direction: column; overflow-y: auto; min-height: 120px; border: 1px solid var(--line); border-radius: 10px; padding: 4px; }
.picker-item { display: flex; align-items: center; gap: 9px; min-height: 38px; padding: 0 10px 0 calc(10px + var(--depth, 0) * 16px); border: 0; border-radius: 7px; background: transparent; color: var(--text-2); text-align: left; cursor: pointer; font-size: 14px; }
.picker-item .icon { width: 16px; height: 16px; color: var(--muted); }
.picker-item.current { background: var(--selected); color: var(--text); font-weight: 600; }
.picker-empty { margin: 12px; font-size: 13px; }

/* ---------- 分享(主人这一侧) ---------- */

/*
 * 这份文件的分享链接(以后还有反馈、PDF、版本)。屏幕放得下一张够宽的纸(900px 上下)再加这一栏时,
 * 它在纸的右边;放不下就在纸的下面,不把纸挤窄 —— 窄了,表格和代码就得横滑。
 */
.reading-aside { margin-top: 28px; padding: 0 4px; }
@media (min-width: 1600px) {
  .page.reading.with-aside { max-width: 1372px; }
  .with-aside .reading-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 32px; align-items: start; }
  .reading-aside { position: sticky; top: 96px; margin-top: 0; padding: 6px 0 0; }
}
.side-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.side-head h2 { margin: 0; font: 600 13px/1.4 var(--sans); color: var(--muted); }
.side-empty { margin: 4px 0 0; font-size: 13px; line-height: 1.6; }
.link-button { padding: 0; border: 0; background: transparent; color: var(--text); font: inherit; font-size: 13px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-strong); }
.link-button.strong { font-weight: 500; }
.link-button.danger { color: var(--attention); text-decoration: none; }
.share-row { display: flex; gap: 10px; padding: 10px 0; }
.share-row + .share-row { border-top: 1px solid var(--line); }
.share-row > .icon { flex: none; width: 18px; height: 18px; margin-top: 2px; color: var(--muted); }
.share-row.expired { opacity: 0.62; }
.share-text { flex: 1; min-width: 0; }
.share-name { font-weight: 600; overflow-wrap: anywhere; }
.share-scope { font-size: 13px; color: var(--text-2); }
.share-status { font-size: 13px; color: var(--muted); }
.share-alert { color: var(--attention); font-weight: 600; }
.share-actions { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 4px; }

/* ---------- 方案 ---------- */

.plan .plan-pitch { margin: 8px 0 0; font-size: 13px; line-height: 1.55; }
.plan-buttons { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }

/* ---------- 反馈 ---------- */

/* 文件页上(在分享的上面)、「反馈」页、收件人页:同一种一条。引的那一段是一条细竖线加淡色字。 */
.feedback-section { margin-bottom: 26px; }
/* Nota X 在分享的下面,和上面那一节隔开(和反馈、分享之间一样宽)。 */
.publish-section { margin-top: 26px; }
.feedback-list { display: flex; flex-direction: column; }
.feedback-item { padding: 10px 0; }
.feedback-item + .feedback-item { border-top: 1px solid var(--line); }
.feedback-item.handled { opacity: 0.72; }
.feedback-quote { margin: 0 0 6px; padding: 0 0 0 10px; border-left: 2px solid var(--line-strong); color: var(--muted); font-size: 13px; line-height: 1.55; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.feedback-body { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.55; }
.feedback-meta { margin: 4px 0 0; font-size: 12px; }
.feedback-actions { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin-top: 4px; }
.feedback-status { font-size: 12px; font-weight: 600; color: var(--text-2); }
.feedback-done { margin-top: 6px; }
.feedback-done > summary { cursor: pointer; font-size: 13px; padding: 4px 0; }
.feedback-list.wide { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 2px 16px; }
.feedback-file { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 6px; color: var(--text); font-weight: 600; text-decoration: none; }
.feedback-file .icon { width: 16px; height: 16px; color: var(--muted); }
.feedback-file:hover span { text-decoration: underline; text-underline-offset: 3px; }
.feedback-hint { margin: 12px 4px 0; font-size: 13px; }
.check-row { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.check-row .field-label { margin: 0; }

/* 收件人页:纸下面一节,和纸同宽。 */
.shared-feedback { margin: 28px auto 0; max-width: 46em; }
.shared-feedback > h2 { margin: 0 0 6px; font: 600 15px/1.4 var(--sans); }
.feedback-form { display: flex; flex-direction: column; gap: 10px; margin-top: 14px; padding: 14px 16px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.feedback-text { min-height: 84px; resize: vertical; }
.feedback-where, .feedback-picking { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; margin: 0; font-size: 13px; }
/* 「点一段」时人往上翻到正文里去点:说明浮在屏幕底部,一直看得到,旁边就是取消。 */
.feedback-picking {
  position: fixed; left: 50%; bottom: calc(18px + env(safe-area-inset-bottom)); z-index: 30; transform: translateX(-50%);
  width: max-content; max-width: calc(100vw - 32px); padding: 10px 18px; border-radius: 999px;
  background: var(--text); color: var(--bg); font-size: 14px; font-weight: 600; box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
}
.feedback-picking .link-button { color: inherit; text-decoration-color: currentColor; font-size: 14px; }
.feedback-quote-chip { display: flex; align-items: flex-start; gap: 8px; }
.feedback-quote-chip .feedback-quote { flex: 1; margin: 0; }
.feedback-send { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.feedback-signin { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-top: 14px; }
.feedback-signin p { margin: 0; font-size: 13px; }
/* 「点一段」:纸上的段落可点,指到的那一段淡淡地标出来。 */
.paper.picking .note-body :is(p, li, h1, h2, h3, h4, h5, h6, blockquote, pre, table, figure) { cursor: pointer; border-radius: 4px; transition: background-color 0.12s; }
.paper.picking .note-body :is(p, li, h1, h2, h3, h4, h5, h6, blockquote, pre, table, figure):hover { background: var(--attention-soft); }
.shared-downloads { display: flex; justify-content: center; flex-wrap: wrap; gap: 4px 16px; }
.shared-foot .link-button { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--muted); }
.shared-foot .link-button .icon { width: 14px; height: 14px; }

dialog.wide { width: min(92vw, 540px); max-height: min(92dvh, 900px); overflow-y: auto; }
.share-form { gap: 18px; padding: 20px 24px; }
.share-form-sub { margin: 2px 0 0; font-size: 13px; }
.field { display: block; min-width: 0; margin: 0; padding: 0; border: 0; }
.field-label { display: block; margin: 0 0 6px; padding: 0; font-size: 13px; font-weight: 600; }
.field-hint { margin: 4px 0 0; font-size: 12px; color: var(--muted); line-height: 1.5; }
/* 分享表单里收起来的「更多设置」:收着的时候写着现在选的是什么。 */
.share-more > summary { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; cursor: pointer; list-style: none; }
.share-more > summary::-webkit-details-marker { display: none; }
.share-more > summary .field-label { margin: 0; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-strong); }
.share-more[open] > summary { margin-bottom: 14px; }
.share-more[open] .share-more-now { display: none; }
.share-more-now { font-size: 13px; }
.share-more > .field + .field { margin-top: 16px; }
.copy-box { width: 100%; font: 14px/1.5 var(--mono); }
/* 在手机上看上手的三步:它们在电脑上做。 */
.on-computer { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 0 0 10px; padding: 10px 12px; border-radius: 10px; background: var(--surface-2); font-size: 14px; }
.on-computer p { margin: 0; flex: 1 1 200px; }
.share-options { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.share-option { display: flex; gap: 10px; padding: 12px 14px; cursor: pointer; }
.share-option + .share-option { border-top: 1px solid var(--line); }
.share-option:has(input:checked) { background: var(--hover); }
.share-option input { flex: none; width: 17px; height: 17px; margin: 2px 0 0; accent-color: var(--ink); }
.share-option-text { display: flex; flex: 1; min-width: 0; flex-direction: column; font-size: 13px; }
.share-option-label { font-size: 14px; font-weight: 600; }
.share-option-label .small { font-size: 12px; font-weight: 500; }
.passcode-row { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.passcode-copy { display: inline-flex; align-items: center; gap: 12px; }
.passcode { font: 600 15px/1.6 var(--mono); letter-spacing: 0.14em; padding: 1px 10px; border-radius: 6px; background: var(--surface); border: 1px solid var(--line); }
.share-emails-box { margin-top: 8px; }
.share-emails { min-height: 64px; resize: vertical; }
.segmented { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 3px; padding: 3px; border-radius: 9px; background: var(--surface-2); }
.segment { position: relative; }
.segment input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.segment span { display: block; height: 30px; border-radius: 7px; font-size: 13px; line-height: 30px; text-align: center; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 0 6px; }
.segment input:checked + span { background: var(--surface); color: var(--text); font-weight: 600; box-shadow: 0 1px 2px rgba(31, 30, 29, 0.12); }
.segment input:focus-visible + span { outline: 2px solid var(--text-2); outline-offset: 1px; }
.share-done { gap: 16px; padding: 20px 24px; }
.share-facts { display: grid; grid-template-columns: 4.5em minmax(0, 1fr); align-items: center; gap: 10px 12px; margin: 0; }
.share-facts dt { font-size: 13px; color: var(--muted); }
.share-facts dd { margin: 0; min-width: 0; }
.share-url { display: block; padding: 8px 10px; border-radius: 8px; background: var(--surface-2); font: 13px/1.5 var(--mono); overflow-wrap: anywhere; user-select: all; -webkit-user-select: all; }
.login-cancel { margin-top: 6px; }
.name-form { display: flex; flex-direction: column; }
.name-row { display: flex; gap: 8px; }
.name-row .input { flex: 1; min-width: 0; }

/* ---------- 收件人页(`/s/{token}`) ---------- */

.shared { min-height: 100dvh; background: var(--bg); }
/* 收件人页像一份递过来的文件:顶栏安静(没有分隔线),谁分享的、标题、第几版写在纸的最上面,只读和到期日在页脚。 */
.shared-top { display: flex; align-items: center; gap: 8px; height: 54px; padding: env(safe-area-inset-top) 24px 0; color: var(--muted); }
.shared-top img { border-radius: 6px; }
.shared-brand { font: 16px/1 var(--serif); }
.shared-home { display: flex; align-items: center; gap: 8px; color: inherit; text-decoration: none; }
.shared-page { max-width: 1040px; margin: 0 auto; padding: 30px 40px 56px; }
.shared-page .paper { margin-top: 0; }
.shared-head { margin-bottom: 26px; padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.shared-head p { margin: 0; }
.shared-by { font-size: 13px; color: var(--muted); }
.shared-title { margin: 6px 0 8px; font: 500 30px/1.25 var(--serif); overflow-wrap: anywhere; }
.shared-meta { font-size: 13px; color: var(--muted); }
/* 「version 3, updated …」开头的字母大写(这一句原来接在「只读 · 」后面)。 */
.shared-meta::first-letter { text-transform: uppercase; }
.shared-update { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 20px; padding: 10px 14px; border-radius: 10px; background: var(--surface-2); }
.shared-update > .icon { width: 18px; height: 18px; color: var(--text-2); }
.shared-update-text { display: flex; flex: 1; min-width: 0; flex-direction: column; font-size: 14px; }
.shared-update-text .muted { font-size: 13px; }
.shared-changes { flex-basis: 100%; margin: 4px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; }
.shared-changes li { display: grid; grid-template-columns: 2.4em minmax(0, 1fr) auto; gap: 8px; font-size: 14px; }
/* 页脚:一行谁做的(「Nota」是一个不显眼的链接,点过去是首页),一行 Nota 是什么。不抢正文。 */
.shared-foot { margin: 22px auto 0; max-width: 34em; font-size: 12px; line-height: 1.6; text-align: center; }
.shared-foot p { margin: 0; text-wrap: balance; }
.shared-nota { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-strong); }
.shared-nota:hover { color: var(--text-2); text-decoration-color: currentColor; }
/* 渲染库还没到:标题已经在了,正文的位置先用几条骨架线占着。 */
.paper-pending { padding: 4px 0 24px; }
.skeleton-line { display: block; width: var(--w, 100%); height: 0.7em; margin: 0.9em 0; border-radius: 4px; background: var(--surface-2); }
.gate { display: flex; flex-direction: column; align-items: center; gap: 6px; max-width: 420px; margin: 0 auto; padding: 96px 24px calc(32px + env(safe-area-inset-bottom)); text-align: center; }
.gate p { margin: 0; }
.gate h1 { margin: 0; font: 500 26px/1.3 var(--serif); }
.gate-mark { display: flex; align-items: center; justify-content: center; width: 60px; height: 60px; margin-bottom: 10px; border-radius: 50%; background: var(--surface-2); color: var(--text-2); }
.gate-mark .icon { width: 26px; height: 26px; }
.gate-form { display: flex; flex-direction: column; gap: 12px; width: 100%; margin-top: 22px; }
.gate-code { height: 52px; font-size: 22px; letter-spacing: 0.3em; text-align: center; }
.gate-code::placeholder { font-size: 16px; letter-spacing: normal; }
.gate-form .button { min-height: 50px; font-size: 16px; }
.gate > .button { margin-top: 18px; min-width: 200px; min-height: 46px; }
.gate .form-error { margin-top: 10px; }
.gate-hint { margin-top: 16px !important; font-size: 13px; line-height: 1.6; }
.gate-foot { margin-top: 40px !important; font-size: 12px; }

/* ---------- 骨架、焦点、动效 ---------- */

/* 一列文件还没到:几行骨架。前 300ms 不出来(快的时候不闪一下)。 */
.skeleton { animation: appear 1ms 300ms both; }
/* 顶栏还没画:骨架落在列表本来的位置上(标题下面)。 */
.page > .skeleton:first-child { margin-top: calc(98px + env(safe-area-inset-top)); }
.skeleton-row { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 0 14px; border-bottom: 1px solid var(--line); }
.skeleton-row:last-child { border-bottom: 0; }
.skeleton-row span { display: block; border-radius: 4px; background: var(--surface-2); }
.skeleton-row span:first-child { flex: none; width: 18px; height: 18px; }
.skeleton-row span:last-child { width: var(--w, 50%); height: 10px; border-radius: 5px; }
@keyframes appear { from { opacity: 0; } to { opacity: 1; } }

/* 键盘聚焦一律是同一个框;鼠标点的不画。输入框有自己的(.input:focus)。 */
:focus-visible { outline: 2px solid var(--text-2); outline-offset: 2px; }

/* 动效克制:对话框淡入、轻轻放大,手机的底部面板从下面滑上来,提示淡入上浮,移走的行淡出;页面切换不动。
 * 系统里关了动效(prefers-reduced-motion)就一样都没有。 */
@media (prefers-reduced-motion: no-preference) {
  dialog[open] { animation: dialog-in 200ms ease-out; }
  dialog[open]::backdrop { animation: fade-in 200ms ease-out; }
  .toast { animation: toast-in 160ms ease-out; }
  .leaving { opacity: 0; transition: opacity 150ms ease-out; }
  .settings-more > summary .icon { transition: transform 160ms ease-out; }
}
@media (prefers-reduced-motion: reduce) {
  .settings-more > summary .icon { transition: none; }
}
@keyframes dialog-in { from { opacity: 0; transform: scale(0.98); } }
@keyframes sheet-in { from { transform: translateY(100%); } }
@keyframes fade-in { from { opacity: 0; } }
@keyframes toast-in { from { opacity: 0; transform: translateY(6px); } }

/* ---------- 手机 ---------- */

@media (max-width: 899px) {
  .app { display: block; }
  .app:not([data-page="home"]) .sidebar { display: none; }
  .app[data-page="home"] .main { display: none; }
  /* 首页:和系统的「文件」一样,几组圆角的列表;树只列顶层,往里点进文件夹页。 */
  .sidebar { position: static; height: auto; min-height: 100dvh; border-right: 0; background: var(--bg); padding: calc(12px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom)); gap: 0; }
  .sidebar-head { padding: 4px 2px 14px; }
  .brand { font-size: 30px; }
  .brand img { width: 32px; height: 32px; border-radius: 8px; }
  .search-link { min-height: 40px; background: var(--surface-2); border-color: transparent; font-size: 16px; margin-bottom: 14px; }
  .nav-list, .tree, .sidebar-foot { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; gap: 0; padding: 0; }
  .nav-link, .tree-link { min-height: 48px; border-radius: 0; padding: 0 14px; font-size: 16px; border-bottom: 1px solid var(--line); color: var(--text); }
  .nav-link .icon, .tree-link .icon { width: 19px; height: 19px; }
  .nav-list > :last-child, .tree > :last-child .tree-link, .sidebar-foot > a:last-of-type { border-bottom: 0; }
  .nav-link.current, .tree-row.current .tree-link { background: transparent; font-weight: 400; }
  .folders { flex: none; margin-top: 20px; }
  .tree-row .tree-link { padding-left: 14px; }
  .section-head { padding: 0 4px 8px; }
  .section-label { font: 500 20px/1.2 var(--serif); color: var(--text); }
  .tree-row:not([data-depth="0"]) { display: none; }
  .tree-row { padding-left: 0; }
  .tree-toggle, .tree-toggle-spacer { display: none; }
  .tree .nav-count { display: inline; font-size: 15px; }
  .sidebar-foot { margin-top: 20px; padding: 0; }
  .nav-link.account { margin-top: 0; }
  .nav-link.account .account-email { font-size: 16px; }
  .page { padding: 0 16px calc(32px + env(safe-area-inset-bottom)); }
  .page-head { grid-template-columns: auto minmax(0, 1fr) auto; margin: 0 -16px; padding: calc(6px + env(safe-area-inset-top)) 8px 8px; align-items: center; gap: 4px; }
  .back { display: inline-flex; align-items: center; gap: 2px; height: 40px; max-width: 120px; color: var(--text-2); font-size: 16px; }
  .back .icon { width: 24px; height: 24px; }
  .back-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .crumbs { display: none; }
  .page-title h1 { font: 600 17px/1.3 var(--sans); text-align: center; }
  .page-subtitle { display: none; }
  /* 手机的标题栏和 iOS 一样:动作都是图标,不带底色和边框。 */
  .button .label { display: none; }
  .page-actions .button:has(.icon) { width: 38px; min-height: 38px; padding: 0; border-color: transparent; background: transparent; color: var(--text); }
  .page-actions .button.primary:has(.icon) { color: var(--text); }
  .page-actions .button .icon { width: 21px; height: 21px; }
  .page-actions { min-width: 40px; padding-bottom: 0; }
  /* 一行文件:标题下面一行小字,不分列。 */
  .file-row, .files:has(.col-place) .file-row, .inbox-item .file-row { grid-template-columns: minmax(0, 1fr); padding: 0 14px; }
  /* 触屏没有悬停:勾选框一直在前面占一格。 */
  .file-row:has(.check) { grid-template-columns: 28px minmax(0, 1fr); }
  .check { position: static; width: auto; height: 100%; opacity: 1; }
  .file-row .file-icon { visibility: visible !important; }
  .file-row:has(.trash-tail) { grid-template-columns: minmax(0, 1fr) auto; }
  .col { display: none; }
  .files .file-sub { display: block; }
  .file-main { padding: 11px 0; }
  .group-label { padding-left: 14px; }
  .inbox-item { grid-template-columns: minmax(0, 1fr); }
  .suggestion { padding: 0 14px 12px 52px; flex-wrap: wrap; }
  .suggestion-text { flex-basis: 100%; }
  .suggestion-reason { font-size: 13px; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
  .page-actions .button.keep-label { width: auto; padding: 0 12px; margin-right: 4px; }
  .page-actions .button.keep-label.primary { background: var(--ink); border-color: var(--ink); color: var(--on-ink); }
  .button.keep-label .label { display: inline; }
  .page-actions .button.keep-label .icon { width: 16px; height: 16px; }
  .bulk { position: fixed; left: 12px; right: 12px; top: auto; bottom: calc(12px + env(safe-area-inset-bottom)); z-index: 20; flex-wrap: wrap; box-shadow: 0 10px 30px rgba(31, 30, 29, 0.25); }
  .bulk-hint { display: none; }
  .page > .skeleton:first-child { margin-top: calc(60px + env(safe-area-inset-top)); }
  .bulk-clear { margin-left: auto; }
  /* 读的时候整屏是一张白纸,标题栏也是。 */
  .paper { margin: 0 -16px; padding: 14px 20px 32px; border-radius: 0; box-shadow: none; }
  body:has(.app[data-page="artifact"]), body:has(.app[data-page="revision"]) { background: var(--surface); }
  .app[data-page="artifact"] .page-head, .app[data-page="revision"] .page-head { background: color-mix(in srgb, var(--surface) 90%, transparent); }
  .md-body { font-size: 17px; }
  .diff-line { font-size: 16px; }
  .revision-modes { max-width: none; }
  .conflict-columns { grid-template-columns: 1fr; }
  /* 编辑页贴着看得见的那块(键盘以上),工具栏不被推走。 */
  .editor-page { position: fixed; left: 0; right: 0; top: var(--vv-top); height: var(--vv-height); min-height: 0; padding: 0 12px; overflow: hidden; }
  .editor-page .page-head { margin: 0 -12px; padding-left: 12px; padding-right: 12px; flex: none; }
  .editor-fields { min-height: 0; padding-bottom: 8px; }
  .body-input { min-height: 0; resize: none; }
  .conflict { flex: none; max-height: 45%; overflow: auto; }
  .editor-head .segmented { width: min(100%, 200px); }
  .draft-notice { margin: 2px 0 8px; }
  /* 预览:顶栏下面整屏一张白纸,自己滚动,和读一份文件一样。 */
  body:has(.editor-page[data-view="preview"]), .editor-page[data-view="preview"] { background: var(--surface); }
  .editor-page[data-view="preview"] .page-head { background: color-mix(in srgb, var(--surface) 90%, transparent); }
  .editor-preview { margin: 0 -12px; padding: 10px 20px calc(32px + env(safe-area-inset-bottom)); overflow-y: auto; overscroll-behavior: contain; }
  .preview-title { margin: 4px 0 18px; font: 600 26px/1.3 var(--serif); }
  dialog.as-sheet { width: 100%; max-width: none; margin: auto 0 0; border-radius: 16px 16px 0 0; padding-bottom: env(safe-area-inset-bottom); }
}
@media (max-width: 899px) and (prefers-reduced-motion: no-preference) {
  dialog.as-sheet[open] { animation: sheet-in 220ms ease-out; }
}

@media (pointer: coarse) {
  .input, .textarea, .search-input { font-size: 16px; }
  .body-input { font-size: 16px; }
}

/* 手机上的分享和收件人页:链接列在纸的下面;收件人页整屏是一张白纸,和读自己的文件一样。 */
@media (max-width: 899px) {
  .reading-aside { margin-top: 24px; }
  /* 读一份文件:顶栏只留返回和图标,完整的标题写在纸上,能折行。 */
  .app[data-page="artifact"] .page-head .page-title { visibility: hidden; }
  .paper-title { display: block; margin: 4px 0 6px; font: 600 26px/1.3 var(--serif); overflow-wrap: anywhere; }
  .paper-title + .paper-meta { margin-bottom: 18px; }
  /* 首页上最近的几份,在「收件箱 / 模板」上面;有了它,下面就不再列「最近」那一行。 */
  .home-recent { margin: 0 0 20px; }
  .home-recent .section-head { padding: 0 4px 8px; }
  .home-recent .link-button { font-size: 15px; }
  .home-recent .list { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
  .sidebar:has(.home-recent) .nav-link[href="/recent"] { display: none; }
  /* 分享表单:「创建链接」一直在下面看得到,不用先滑到底。 */
  .share-form .dialog-actions { position: sticky; bottom: 0; margin: 0 -18px; padding: 12px 18px; background: var(--surface); border-top: 1px solid var(--line); }
  .shared-top { height: 48px; padding: env(safe-area-inset-top) 16px 0; border-bottom: 0; }
  .shared-page { padding: 0 16px calc(32px + env(safe-area-inset-bottom)); }
  .shared-head { margin-bottom: 20px; padding-bottom: 14px; }
  .shared-title { font-size: 25px; }
  body:has(.shared .paper) { background: var(--surface); }
  body:has(.shared .paper) .shared { background: var(--surface); }
  .shared-update { margin: 2px 0 14px; }
  .gate { padding-top: 72px; }
  .share-form, .share-done { padding: 18px 18px calc(18px + env(safe-area-inset-bottom)); }
  /* 没登录的首页和上手清单:命令占满一行(圈下面那一格也用上),长的安装命令少折一行。 */
  .login.with-intro { padding: calc(24px + env(safe-area-inset-top)) 16px calc(28px + env(safe-area-inset-bottom)); }
  .welcome { gap: 18px; }
  .intro-what { font-size: 17px; }
  .step { padding: 12px; }
  .command-line { grid-column: 1 / -1; }
  /* 复制只剩图标(读屏照样读「复制 …」),把宽度让给命令。 */
  .copy-button { width: 36px; padding: 0; justify-content: center; }
  .copy-button span { display: none; }
  .copy-button .icon { width: 17px; height: 17px; }
  .intro-steps { margin-left: 2px; }
  .sidebar .setup { margin: 0 0 20px; }
  .sidebar .setup-title { margin: 0 2px; }
}

@media (max-width: 520px) {
  .font-choices { grid-template-columns: minmax(0, 1fr); }
  .login-box .login-form { grid-template-columns: minmax(0, 1fr); }
  .login-box .login-form .button { min-height: 44px; }
  /* 德语、法语的按钮字长:两个按钮放到名字下面一行。 */
  .builtin-head { flex-wrap: wrap; }
  .builtin-actions { width: 100%; padding-left: 30px; }
}

/*
 * 用户协议、隐私政策(/terms、/privacy):一份读得清的文书,不是纸上的一篇文章。界面的无衬线字、15px、两端对齐,正常断行
 * (`pretty` 在 Safari 里把整段每一行都提前折,手机上右边参差不齐),小节标题是半粗的无衬线,行内代码不加底色、
 * 和正文一样折行;一行不超过 640px。不跟阅读字体(「清晰」也一样),所以写在最后、选择器比它重。
 * App 里同一组数(MarkdownStyle.legal)。
 */
:root .shared.legal .paper { --measure: 640px; }
:root .shared.legal .paper .md-body {
  --md-h1-size: 1.25em;
  --md-h2-size: 1.12em;
  --md-h3-size: 1em;
  --md-heading-line-height: 1.4;
  --md-body-line-height: 1.6;
  --md-paragraph-margin: 0.75em;
  --md-list-item-margin: 0.35em;
  --md-text-wrap: wrap;
  font: 15px/1.6 var(--sans);
}
:root .shared.legal .paper .md-body:is(:lang(zh), :lang(ja), :lang(ko)) { --md-body-line-height: 1.75; line-height: 1.75; }
:root .shared.legal .paper .md-body :is(h1, h2, h3, h4, h5, h6) { font-family: var(--sans); }
:root .shared.legal .paper .md-body code:not(pre code) { display: inline; padding: 0; background: none; font-size: 0.92em; }
/* 两端对齐:右边齐整,像一页印好的文书。西文按 lang 断词(不把词间距拉大),中日韩靠字间距。 */
:root .shared.legal .paper .md-body :is(p, li) { text-align: justify; -webkit-hyphens: auto; hyphens: auto; }

/* Nota X:顶栏「发布」旁边的说明(views.js 的 publishAbout)。 */
.publish-points { display: grid; gap: 10px; margin: 0; padding-left: 1.2em; color: var(--text-2); line-height: 1.6; }

/*
 * Nota X(notax.macdeer.com)的文章页、作者页、首页:构建时接在渲染库和 app.css 的样式表后面,成为 /x/nota-x.css
 * (scripts/build.ts)。文章页的骨架和收件人页(`/s/`)同一套 —— .shared、.paper、.shared-foot;这里是 Nota X 自己的:
 * 每一页的顶栏、举报、首页和作者页的一整版(开头一屏、按类型看、精选、卡片、三步)、提示页。
 */

.notax .shared-by a { color: inherit; text-decoration: none; }
.notax .shared-by a:hover { text-decoration: underline; text-underline-offset: 3px; }

.notax-more { max-width: var(--measure); margin: 28px auto 0; font: 14px/1.5 var(--sans); }
.notax-more a { color: var(--text-2); }

.notax-report, .notax-thanks { max-width: var(--measure); margin: 20px auto 0; font: 13px/1.5 var(--sans); color: var(--muted); }
.notax-report summary { cursor: pointer; width: fit-content; }
.notax-report form { display: grid; gap: 12px; margin-top: 12px; padding: 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); color: var(--text); }
.notax-report fieldset { display: grid; gap: 6px; margin: 0; padding: 0; border: 0; }
.notax-report legend { margin-bottom: 6px; font-weight: 600; }
.notax-reason { display: flex; gap: 8px; align-items: center; }
.notax-detail { display: grid; gap: 6px; }
.notax-detail textarea { width: 100%; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--bg); color: var(--text); font: inherit; resize: vertical; }
.notax-report button { justify-self: start; }

.notax-notice h1 { margin-bottom: 0.4em; }
.notax-links a { color: inherit; }

/* ---------- 顶栏(每一页) ---------- */
.notax .i { width: 16px; height: 16px; flex: none; }
.nx-top { display: flex; align-items: center; justify-content: space-between; max-width: 1180px; height: 64px; margin: 0 auto; padding: env(safe-area-inset-top) 40px 0; }
.nx-brand { display: flex; align-items: center; gap: 10px; color: var(--text); text-decoration: none; font: 600 18px/1 var(--serif); }
.nx-brand img { border-radius: 6px; }
.nx-top nav { display: flex; align-items: center; gap: 22px; font: 14px/1 var(--sans); }
.nx-top nav a { color: var(--text-2); text-decoration: none; }
.nx-top nav .button { display: inline-flex; gap: 6px; align-items: center; color: var(--text); }

/* ---------- 首页、作者页(一整版) ---------- */
main.nx { max-width: 1180px; margin: 0 auto; padding: 0 40px 48px; }
.nx-hero { position: relative; display: grid; grid-template-columns: 1.25fr 1fr; gap: 24px; align-items: center; margin-top: 12px; padding: 56px 56px 48px; overflow: hidden; border: 1px solid var(--line); border-radius: 20px;
  background: linear-gradient(135deg, var(--surface) 0%, color-mix(in srgb, var(--surface) 82%, #7FA8FF) 100%); }
.nx-hero::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0.55;
  background-image: linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px); background-size: 56px 56px;
  -webkit-mask-image: linear-gradient(90deg, transparent 35%, #000 70%); mask-image: linear-gradient(90deg, transparent 35%, #000 70%); }
.nx-hero .copy { position: relative; }
.nx-hero .eyebrow { margin: 0 0 14px; font: 600 13px/1 var(--sans); letter-spacing: 0.04em; color: var(--muted); }
.nx-hero h1 { margin: 0; font: 500 46px/1.22 var(--serif); letter-spacing: -0.01em; text-wrap: balance; }
.nx-hero .lead { max-width: 34em; margin: 18px 0 0; font: 17px/1.7 var(--sans); color: var(--text-2); }
.nx-hero .cta { display: flex; flex-wrap: wrap; gap: 12px; margin: 28px 0 0; }
.nx-hero .cta .button { display: inline-flex; gap: 8px; align-items: center; text-decoration: none; }
.illus { position: relative; justify-self: end; width: 100%; max-width: 420px; }
.illus .sheet { fill: var(--surface); stroke: var(--line-strong); stroke-width: 1.2; }
.illus .fold { fill: none; stroke: var(--line-strong); stroke-width: 1.2; }
.illus .bar { fill: var(--line-strong); }
.illus .rows rect { fill: var(--line); }
.illus .dot { fill: #F5C342; }
.illus .globe path { fill: none; stroke: #fff; stroke-width: 0.8; }

.nx-chips { display: flex; gap: 8px; margin: 28px 0 0; overflow-x: auto; scrollbar-width: none; }
.nx-chips::-webkit-scrollbar { display: none; }
.chip { display: inline-flex; flex: none; gap: 6px; align-items: center; padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; color: var(--text-2); text-decoration: none; font: 14px/1 var(--sans); white-space: nowrap; }
.chip.on { border-color: var(--ink); background: var(--ink); color: var(--on-ink); }

.nx-section { margin-top: 44px; scroll-margin-top: 16px; }
.nx-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.nx-head :is(h1, h2) { margin: 0; font: 600 22px/1.3 var(--serif); }
.nx-author .nx-head h1 { font-size: 32px; }
.nx-head span { font: 13px/1 var(--sans); color: var(--muted); }
.nx-empty { margin: 0; font: 15px/1.6 var(--sans); }
.nx-featured { display: grid; grid-template-columns: 1.35fr 1fr; gap: 16px; }
.nx-featured.solo { grid-template-columns: 1fr; }
.nx-featured .stack { display: grid; gap: 16px; }
.nx-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.notax-older { margin: 20px 0 0; font: 14px/1.5 var(--sans); }
.notax-older a { display: inline-flex; gap: 4px; align-items: center; color: var(--text-2); }

.card { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 22px 22px 20px; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); color: var(--text); text-decoration: none; transition: border-color 0.15s, transform 0.15s; }
.card:hover { border-color: var(--line-strong); transform: translateY(-1px); }
.card strong { font: 600 19px/1.4 var(--serif); text-wrap: pretty; }
.card .sum { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 3; -webkit-box-orient: vertical; font: 14.5px/1.65 var(--sans); color: var(--text-2); }
.card.big { padding: 32px 32px 28px; background: linear-gradient(160deg, var(--surface) 55%, color-mix(in srgb, var(--surface) 86%, #F5C342)); }
.card.big strong { font-size: 30px; line-height: 1.3; }
.card.big .sum { -webkit-line-clamp: 4; font-size: 16px; }
.badge { display: inline-flex; align-self: flex-start; gap: 6px; align-items: center; font: 600 12.5px/1 var(--sans); color: var(--muted); }
.lang { position: absolute; top: 20px; right: 20px; padding: 4px 8px; border-radius: 6px; background: var(--surface-2); font: 12px/1 var(--sans); color: var(--muted); }
.card.big .lang { top: 30px; right: 30px; }
/* 没有小标题的大卡:右下角垫一个淡淡的大号类型图标,在文字底下。 */
.card.big > :not(.mark) { position: relative; z-index: 1; }
.card.big .lang { position: absolute; }
.card.big .mark { position: absolute; z-index: 0; right: 24px; bottom: 18px; color: var(--line); pointer-events: none; }
.card.big .mark .i { width: 96px; height: 96px; stroke-width: 0.9; }
.outline { display: grid; margin: 14px 0 0; padding: 0; border-top: 1px solid var(--line); list-style: none; counter-reset: o; }
.outline li { display: flex; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--line); font: 14px/1.4 var(--sans); color: var(--text-2); counter-increment: o; }
.outline li::before { content: counter(o, decimal-leading-zero); font: 600 12px/1.6 var(--mono); color: var(--muted); }
.by { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: auto; padding-top: 6px; font: 13px/1.4 var(--sans); color: var(--muted); }
.card.big .by { padding-top: 18px; }
.by b { font-weight: 600; color: var(--text-2); }
.av { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: linear-gradient(135deg, #2F7CF6, #7B5CFF); color: #fff; font: 600 12px/1 var(--sans); }

.nx-how { margin-top: 48px; padding: 32px 36px; border: 1px solid var(--line); border-radius: 20px; background: var(--surface); scroll-margin-top: 16px; }
.nx-how ol { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin: 0; padding: 0; list-style: none; }
.nx-how li { display: grid; align-content: start; gap: 8px; }
.nx-how li .i { width: 26px; height: 26px; color: var(--text); }
.nx-how .n { font: 600 12px/1 var(--sans); color: var(--muted); }
.nx-how li strong { font: 600 17px/1.3 var(--serif); }
.nx-how li > span:last-child { font: 14px/1.6 var(--sans); color: var(--text-2); }
.nx-how p { display: flex; gap: 14px; align-items: center; margin: 28px 0 0; font: 13px/1.4 var(--sans); }
.nx-how .button { text-decoration: none; }
main.nx .shared-foot { margin-top: 40px; }

@media (max-width: 900px) {
  .nx-grid { grid-template-columns: repeat(2, 1fr); }
  .nx-featured { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .nx-top { height: 56px; padding: env(safe-area-inset-top) 16px 0; }
  .nx-top nav a:not(.button) { display: none; }
  main.nx { padding: 0 16px 32px; }
  .nx-hero { grid-template-columns: 1fr; padding: 32px 22px 24px; border-radius: 16px; }
  .nx-hero h1 { font-size: 31px; }
  .nx-hero .lead { font-size: 15.5px; }
  .illus { justify-self: center; max-width: 260px; margin-top: 4px; }
  .nx-grid, .nx-how ol { grid-template-columns: 1fr; }
  .card.big strong { font-size: 24px; }
  .nx-how { padding: 24px 20px; }
  .nx-how p { flex-direction: column; align-items: flex-start; }
}
