/* ===== CMS 版新增样式（与 style.css 中 Tailwind 编译产物配合使用） ===== */
html:not([data-js]) [data-reveal]{opacity:1;transform:none}
.skip-link{position:absolute;left:-999px;top:8px;z-index:200;background:#2fbf8f;color:#080d0b;padding:8px 14px;font-size:14px}
.skip-link:focus{left:8px}

/* 文字 / 网格补充工具类 */
.text-white\/105{color:#fff}
.tag-top{display:inline-block;background:rgba(47,191,143,.15);color:#6ee7b7;border:1px solid rgba(47,191,143,.4);padding:1px 8px;font-size:11px;letter-spacing:.2em;vertical-align:top}
@media (min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:768px){.md\:grid-cols-3x{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* 页脚二维码浮层 */
.qr-chip{position:relative}
.qr-pop{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%) translateY(6px);opacity:0;pointer-events:none;background:#fff;padding:8px;box-shadow:0 12px 32px rgba(0,0,0,.4);transition:all .25s;z-index:20;text-align:center}
.qr-pop img{width:120px;height:120px;object-fit:contain;display:block}
.qr-pop em{display:block;margin-top:4px;font-style:normal;font-size:11px;color:#333;white-space:nowrap}
.qr-chip:hover .qr-pop,.qr-chip:focus .qr-pop{opacity:1;transform:translateX(-50%) translateY(0)}
.footer-legal{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center}

/* 富文本正文 */
.rich{color:rgba(255,255,255,.7);font-size:1.05rem;line-height:2}
.rich>*+*{margin-top:1.4em}
.rich h2{font-family:"Noto Serif SC","Songti SC",serif;font-size:1.6rem;font-weight:700;color:#fff;line-height:1.5;margin-top:2em}
.rich h3{font-family:"Noto Serif SC","Songti SC",serif;font-size:1.3rem;font-weight:700;color:#fff;margin-top:1.8em}
.rich h4{font-size:1.1rem;font-weight:600;color:#fff}
.rich strong,.rich b{color:#fff;font-weight:600}
.rich a{color:#6ee7b7;text-decoration:underline;text-underline-offset:3px}
.rich img{max-width:100%;height:auto;margin:0 auto}
.rich p:has(>img:only-child){text-align:center}
.rich img+br+em,.rich figcaption{display:block;text-align:center;font-size:.8rem;color:rgba(255,255,255,.4)}
.rich blockquote{border-left:2px solid #c8a15c;padding:.4em 0 .4em 1.5em;font-family:"Noto Serif SC","Songti SC",serif;font-size:1.2rem;color:#e3c88f}
.rich ul{list-style:disc;padding-left:1.5em}.rich ol{list-style:decimal;padding-left:1.5em}
.rich li+li{margin-top:.4em}
.rich hr{border:0;border-top:1px solid rgba(255,255,255,.1)}
.rich table{width:100%;border-collapse:collapse;font-size:.92rem;display:block;overflow-x:auto}
.rich th,.rich td{border:1px solid rgba(255,255,255,.12);padding:.6em .8em;text-align:left;vertical-align:top}
.rich th{background:rgba(255,255,255,.05);color:#fff}
.rich mark{background:rgba(200,161,92,.3);color:#fff}
.rich [style*="text-align: center"]{text-align:center}

/* 附件 */
.attach{border:1px solid rgba(255,255,255,.1);margin-top:3rem}
.attach h4{padding:.9rem 1.2rem;border-bottom:1px solid rgba(255,255,255,.08);font-size:.85rem;letter-spacing:.2em;color:rgba(255,255,255,.7)}
.attach a{display:flex;align-items:center;gap:.75rem;padding:.9rem 1.2rem;color:rgba(255,255,255,.75);font-size:.92rem;transition:background .2s}
.attach a+a{border-top:1px solid rgba(255,255,255,.05)}
.attach a:hover{background:rgba(47,191,143,.08);color:#6ee7b7}
.attach small{margin-left:auto;color:rgba(255,255,255,.35);font-size:.75rem;white-space:nowrap}

/* 标签筛选 */
.chips{display:flex;flex-wrap:wrap;gap:.6rem}
.chips a{border:1px solid rgba(255,255,255,.15);padding:.45rem 1rem;font-size:.8rem;letter-spacing:.15em;color:rgba(255,255,255,.6);transition:all .2s}
.chips a:hover{border-color:#34d399;color:#6ee7b7}
.chips a.on{background:#2fbf8f;border-color:#2fbf8f;color:#080d0b}

/* 空状态 */
.empty{padding:5rem 0;text-align:center;color:rgba(255,255,255,.4);letter-spacing:.2em;font-size:.9rem}

/* 弹窗表单 */
.jt-modal{position:fixed;inset:0;z-index:120;background:rgba(4,8,6,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:1rem;overflow-y:auto}
.jt-modal-panel{position:relative;width:100%;max-width:640px;background:#0b100e;border:1px solid rgba(255,255,255,.1);padding:2.5rem;margin:auto}
@media (max-width:640px){.jt-modal-panel{padding:1.75rem 1.25rem}}
.jt-modal-close{position:absolute;right:1rem;top:1rem;color:rgba(255,255,255,.5);padding:.4rem}
.jt-modal-close:hover{color:#fff}
.jt-form label{display:block;margin-top:1rem}
.jt-form label span{display:block;font-size:.8rem;letter-spacing:.15em;color:rgba(255,255,255,.6);margin-bottom:.45rem}
.jt-form label i{color:#c8a15c;font-style:normal}
.jt-form input,.jt-form select,.jt-form textarea{width:100%;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.14);color:#fff;padding:.75rem .9rem;font-size:.95rem;outline:none;transition:border-color .2s}
.jt-form select option{background:#0b100e}
.jt-form input:focus,.jt-form select:focus,.jt-form textarea:focus{border-color:#2fbf8f}
.jt-grid{display:grid;grid-template-columns:1fr;gap:0 1rem}
@media (min-width:640px){.jt-grid{grid-template-columns:1fr 1fr}}
.jt-grid label{margin-top:1rem}
.jt-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.jt-error{margin-top:1rem;color:#f87171;font-size:.85rem}
.jt-submit{margin-top:1.5rem;width:100%;background:#2fbf8f;color:#080d0b;padding:.95rem;font-size:.9rem;font-weight:500;letter-spacing:.3em;transition:background .2s}
.jt-submit:hover{background:#c8a15c}
.jt-submit:disabled{opacity:.6;cursor:wait}
.jt-done{text-align:center;padding:2rem 0}
.jt-done-icon{display:inline-flex;width:64px;height:64px;border-radius:999px;align-items:center;justify-content:center;background:rgba(47,191,143,.15);color:#34d399}
.jt-fade-enter-active,.jt-fade-leave-active{transition:opacity .25s}
.jt-fade-enter-from,.jt-fade-leave-to{opacity:0}

/* 搜索框 */
.jt-search{display:flex;border:1px solid rgba(255,255,255,.18)}
.jt-search input{flex:1;background:transparent;color:#fff;padding:1rem 1.2rem;font-size:1rem;outline:none;min-width:0}
.jt-search button{background:#2fbf8f;color:#080d0b;padding:0 1.6rem;letter-spacing:.2em;font-size:.9rem}
.jt-search mark{background:none;color:#6ee7b7}

/* 预览提示条 */
.preview-bar{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:90;background:#c8a15c;color:#080d0b;padding:.6rem 1.2rem;font-size:.85rem;letter-spacing:.1em;box-shadow:0 10px 30px rgba(0,0,0,.4)}

/* 项目详情图集 */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}
.gallery img{width:100%;height:200px;object-fit:cover;border:1px solid rgba(255,255,255,.08)}

/* 首页项目卡（数据驱动时卡片数量不固定，高度交由 CSS） */
.proj-card{position:relative}

/* CMS 页面用到、但原静态站未编译进 style.css 的工具类 */
.gap-x-10{column-gap:2.5rem}.gap-y-4{row-gap:1rem}
.mb-12{margin-bottom:3rem}.mr-2{margin-right:.5rem}.p-4{padding:1rem}
.pb-12{padding-bottom:3rem}.pb-20{padding-bottom:5rem}.pb-8{padding-bottom:2rem}
.text-\[8rem\]{font-size:8rem}
.bg-ink-800{background-color:rgb(18 27 23)}
@media (min-width:768px){.md\:justify-between{justify-content:space-between}}
