/* NAI 生成器：页面基础样式、弹窗、官方通知（Toastify）与 Opus 用量。
 * 生图界面本身的样式在 assets/nai-official/official.css 与 css/nai-official-bridge.css。 */
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:#13152c;color:#fff}
body{display:flex;flex-direction:column;overflow:hidden;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-size:14px}
#view-nai-image{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.hidden{display:none!important}
/* 1.2.1: 桌面端去除图片悬浮图标 */
@media (min-width:900px){#view-nai-image .nai-image-hover-overlay{display:none!important}}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#2c2f4d;border-radius:6px;border:2px solid #13152c}
::-webkit-scrollbar-thumb:hover{background:#3b3f63}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 官方通知（react-toastify，NovelAI 主题） ---------- */
.nai-toasts{position:fixed;right:0;top:0;width:100%;z-index:1000;white-space:pre-wrap;pointer-events:none;
  --toastify-toast-width:350px;--toastify-color-light:#22253F;--toastify-text-color-light:#FFFFFF;
  --toastify-color-progress-error:#FF7878;--toastify-icon-color-error:#FF7878;
  --toastify-color-progress-warning:#F5C26B;--toastify-icon-color-warning:#F5C26B;
  --toastify-color-progress-info:#F5F3C2;--toastify-icon-color-info:#F5F3C2;
  --toastify-color-progress-success:#9BE29B;--toastify-icon-color-success:#9BE29B;
  --toastify-toast-offset:16px;--toastify-toast-top:16px;--toastify-toast-right:16px;--toastify-toast-padding:14px;
  --toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;
  --toastify-toast-shadow:0px 4px 12px rgba(0,0,0,0.1);--toastify-z-index:9999;--toastify-color-progress-bgo:0.2;
  --toastify-font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif}
.Toastify__toast-container{position:absolute;z-index:var(--toastify-z-index);transform:translate3d(0,0,var(--toastify-z-index));width:fit-content;box-sizing:border-box;color:#fff;display:flex;flex-direction:column}
.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right);align-items:end}
.Toastify__toast{--y:0px;position:relative;touch-action:none;width:var(--toastify-toast-width);min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:var(--toastify-toast-padding);box-shadow:var(--toastify-toast-shadow);max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);font-size:16px;line-height:1.4;z-index:0;display:flex;flex:1 auto;align-items:center;word-break:break-word;border-radius:2px;pointer-events:auto;cursor:pointer;animation-fill-mode:both;animation-duration:.75s}
.Toastify__toast--error,.Toastify__toast--warning,.Toastify__toast--info,.Toastify__toast--success{padding-left:8px}
.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}
/* Errors (HTTP 403, network, failed operations): red text and border. Warnings keep the default colours. */
.Toastify__toast--error.Toastify__toast-theme--light{color:var(--toastify-color-progress-error);box-shadow:inset 0 0 0 1px var(--toastify-color-progress-error),var(--toastify-toast-shadow)}
.Toastify__toast--error .Toastify__close-button{color:var(--toastify-color-progress-error)}
.Toastify__toast-icon{margin-inline-end:10px;width:22px;flex-shrink:0;display:flex}
.Toastify__toast-icon svg{width:100%;height:100%}
.Toastify__toast--error .Toastify__toast-icon{color:var(--toastify-icon-color-error)}
.Toastify__toast--warning .Toastify__toast-icon{color:var(--toastify-icon-color-warning)}
.Toastify__toast--info .Toastify__toast-icon{color:var(--toastify-icon-color-info)}
.Toastify__toast--success .Toastify__toast-icon{color:var(--toastify-icon-color-success)}
.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}
.Toastify__zoom-enter{animation-name:Toastify__zoomIn}
.Toastify__close-button{position:absolute;top:6px;right:6px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;transition:.3s ease;z-index:1;color:#fff;opacity:.3}
.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}
.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}
.Toastify__progress-bar--wrp{position:absolute;overflow:hidden;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius)}
.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:2px;z-index:1;opacity:.7;transform-origin:left}
.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}
.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}
.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}
.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}
.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}
.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}
.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}
.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight;animation-duration:.5s}
@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}100%{transform:scaleX(0)}}
@keyframes Toastify__zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}
@keyframes Toastify__bounceInRight{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}
@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}

/* ---------- Opus 用量（官方 Opus Generation Usage Limit 弹窗与用量条） ---------- */
#view-nai-image .evfiWK{mask-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjciIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAyNyAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICAgIGQ9Ik0xOC4yMDggNC45MDkwOUMxOC4yMDggNi40MDM1OCAxNy41NDI4IDcuNzQzMzYgMTYuNSA4LjY0MTI0QzE2LjM0NzUgOC43NzI1NyAxNi4yNTM1IDguODg2MTYgMTYuMjA0NyA4Ljk2Njc0QzE2LjE5NjcgOC45OCAxNi4xOTA2IDguOTkxMDYgMTYuMTg2MSA5LjAwMDAxQzE2LjE5MDYgOS4wMDg5NSAxNi4xOTY3IDkuMDIwMDEgMTYuMjA0NyA5LjAzMzI3QzE2LjI1MzUgOS4xMTM4MyAxNi4zNDc1IDkuMjI3NDEgMTYuNSA5LjM1ODcyQzE2LjY5MzUgOS41MjUzMyAxNi44NzM4IDkuNzA2OTMgMTcuMDM5MyA5LjkwMTc4QzE3LjE2OTcgMTAuMDU1NCAxNy4yODI1IDEwLjE1IDE3LjM2MjUgMTAuMTk5MUMxNy4zNzU2IDEwLjIwNzIgMTcuMzg2NiAxMC4yMTMzIDE3LjM5NTUgMTAuMjE3OUMxNy40MDQ0IDEwLjIxMzMgMTcuNDE1NCAxMC4yMDcyIDE3LjQyODUgMTAuMTk5MUMxNy41MDg2IDEwLjE1IDE3LjYyMTQgMTAuMDU1MyAxNy43NTE4IDkuOTAxNzRDMTguNjQzNCA4Ljg1MTY1IDE5Ljk3MzkgOC4xODE4MiAyMS40NTggOC4xODE4MkMyNC4xNTA0IDguMTgxODIgMjYuMzMzIDEwLjM3OTcgMjYuMzMzIDEzLjA5MDlDMjYuMzMzIDE1LjgwMjEgMjQuMTUwNCAxOCAyMS40NTggMThDMTkuOTczOSAxOCAxOC42NDM0IDE3LjMzMDIgMTcuNzUxOCAxNi4yODAxQzE3LjYyMTQgMTYuMTI2NSAxNy41MDg2IDE2LjAzMTggMTcuNDI4NSAxNS45ODI3QzE3LjQxNTQgMTUuOTc0NiAxNy40MDQ0IDE1Ljk2ODUgMTcuMzk1NSAxNS45NjRDMTcuMzg2NiAxNS45Njg1IDE3LjM3NTYgMTUuOTc0NiAxNy4zNjI1IDE1Ljk4MjdDMTcuMjgyNSAxNi4wMzE4IDE3LjE2OTcgMTYuMTI2NSAxNy4wMzkyIDE2LjI4MDFDMTYuMTQ3NiAxNy4zMzAyIDE0LjgxNzEgMTggMTMuMzMzIDE4QzExLjYzNzMgMTggMTAuMTQzOSAxNy4xMjgyIDkuMjcwNTEgMTUuODA1NUM4LjM5NzEzIDE3LjEyODIgNi45MDM2NyAxOCA1LjIwODAxIDE4QzIuNTE1NjIgMTggMC4zMzMwMDggMTUuODAyMSAwLjMzMzAwOCAxMy4wOTA5QzAuMzMzMDA4IDEwLjM3OTcgMi41MTU2MiA4LjE4MTgyIDUuMjA4MDEgOC4xODE4MkM1LjU0MSA4LjE4MTgyIDUuNzk3MiA4LjE1NzI3IDUuOTg5NjYgOC4xMDc5OEM2LjE3MzE4IDguMDYwOTkgNi4yMzM3MSA4LjAwODI1IDYuMjUwMTMgNy45OTE3TDguMjY5MjEgNS45NTg1QzguMjg1NjQgNS45NDE5NiA4LjMzODAyIDUuODgxMDEgOC4zODQ2OSA1LjY5NjIxQzguNDMzNjMgNS41MDI0IDguNDU4MDEgNS4yNDQ0MSA4LjQ1ODAxIDQuOTA5MDlDOC40NTgwMSAyLjE5Nzg3IDEwLjY0MDYgMCAxMy4zMzMgMEMxNi4wMjU0IDAgMTguMjA4IDIuMTk3ODcgMTguMjA4IDQuOTA5MDlaTTguNzM3NTYgMTEuNDQ5NUM4LjUxMTM3IDExLjk0NDMgOC40NTgwMSAxMi41MzIxIDguNDU4MDEgMTMuMDkwOUM4LjQ1ODAxIDE0Ljg5ODQgNy4wMDI5MyAxNi4zNjM2IDUuMjA4MDEgMTYuMzYzNkMzLjQxMzA4IDE2LjM2MzYgMS45NTgwMSAxNC44OTg0IDEuOTU4MDEgMTMuMDkwOUMxLjk1ODAxIDExLjI4MzQgMy40MTMwOCA5LjgxODE4IDUuMjA4MDEgOS44MTgxOEM1Ljk5NTk1IDkuODE4MTggNi44NDIwMyA5LjcwOTg0IDcuMzk5MTggOS4xNDg3OEw5LjQxODI2IDcuMTE1NTlDOS45NzU0MiA2LjU1NDU0IDEwLjA4MyA1LjcwMjU0IDEwLjA4MyA0LjkwOTA5QzEwLjA4MyAzLjEwMTYxIDExLjUzODEgMS42MzYzNiAxMy4zMzMgMS42MzYzNkMxNS4xMjc5IDEuNjM2MzYgMTYuNTgzIDMuMTAxNjEgMTYuNTgzIDQuOTA5MDlDMTYuNTgzIDUuOTA1MTUgMTYuMTQxMSA2Ljc5NzI4IDE1LjQ0NCA3LjM5NzU0QzE0Ljk2MjIgNy44MTIzNyAxNC41NTE4IDguMzYxNjggMTQuNTUxOCA5QzE0LjU1MTggOS42MzgzMiAxNC45NjIyIDEwLjE4NzYgMTUuNDQ0IDEwLjYwMjRDMTUuNTczMiAxMC43MTM3IDE1LjY5MzcgMTAuODM1IDE1LjgwNDIgMTAuOTY1MkMxNi4yMTYxIDExLjQ1MDMgMTYuNzYxNiAxMS44NjM2IDE3LjM5NTUgMTEuODYzNkMxOC4wMjk0IDExLjg2MzYgMTguNTc0OSAxMS40NTAzIDE4Ljk4NjggMTAuOTY1MkMxOS41ODI5IDEwLjI2MzIgMjAuNDY4OSA5LjgxODE4IDIxLjQ1OCA5LjgxODE4QzIzLjI1MjkgOS44MTgxOCAyNC43MDggMTEuMjgzNCAyNC43MDggMTMuMDkwOUMyNC43MDggMTQuODk4NCAyMy4yNTI5IDE2LjM2MzYgMjEuNDU4IDE2LjM2MzZDMjAuNDY4OSAxNi4zNjM2IDE5LjU4MjkgMTUuOTE4NyAxOC45ODY4IDE1LjIxNjdDMTguNTc0OSAxNC43MzE1IDE4LjAyOTQgMTQuMzE4MiAxNy4zOTU1IDE0LjMxODJDMTYuNzYxNiAxNC4zMTgyIDE2LjIxNjEgMTQuNzMxNSAxNS44MDQyIDE1LjIxNjdDMTUuMjA4MSAxNS45MTg3IDE0LjMyMjIgMTYuMzYzNiAxMy4zMzMgMTYuMzYzNkMxMS41MzgxIDE2LjM2MzYgMTAuMDgzIDE0Ljg5ODQgMTAuMDgzIDEzLjA5MDlDMTAuMDgzIDEyLjczOTYgMTAuMTM4IDEyLjQwMTMgMTAuMjM5NyAxMi4wODQxQzEwLjI0NTcgMTIuMDY1MyAxMC4yNTE5IDEyLjA0NjUgMTAuMjU4MyAxMi4wMjc5QzEwLjQ0ODggMTEuNDY5IDEwLjc4NTMgMTAuOTc4NSAxMS4yMjIgMTAuNjAyNUMxMS41NTQ4IDEwLjMxNTkgMTEuODUzNiA5Ljk2NTE2IDEyLjAwNjYgOS41NjUyM0MxMi4wNzUgOS4zODYyMiAxMi4xMTQzIDkuMTk3MzYgMTIuMTE0MyA4Ljk5OTk5VjcuOTcxNDRDMTIuMTE0MyA3Ljk1NDgxIDEyLjEwNDIgNy45Mzk4NiAxMi4wODkgNy45MzM0OUMxMi4wNzM3IDcuOTI3MTIgMTIuMDU2MSA3LjkzMDU0IDEyLjA0NDQgNy45NDIzMUw5LjEyMjc2IDEwLjg4NDRDOC45NTc5OSAxMS4wNTAzIDguODMyNTQgMTEuMjQxNyA4LjczNzU2IDExLjQ0OTVaIgogICAgICAgIGZpbGw9IiM5NzczRkYiIC8+Cjwvc3ZnPgogICAg)}
#view-nai-image .fHjMgL{font-size:1rem;-webkit-box-align:center;align-items:center;display:flex;flex-direction:column;-webkit-box-pack:center;justify-content:center;left:0px;position:fixed;top:0px;width:100%;z-index:302;height:var(--app-height,100%)}
#view-nai-image .hQHuFj{z-index:305;overflow:hidden;min-width:320px;width:auto;height:auto;max-width:max(1160px,65%);max-height:max(650px,85%);position:relative;display:flex;flex-direction:column;-webkit-box-align:center;align-items:center}
#view-nai-image .hQHuFj>*{overflow:auto}
#view-nai-image .haSKPZ{background-color:rgb(25,27,49);border:1px solid rgb(34,37,63);border-radius:3px}
#view-nai-image .kavPXI{display:flex;flex-direction:column;gap:12px;width:420px;max-width:100%;padding:20px}
#view-nai-image .kQgIUn{position:absolute;right:18px;top:20px;flex:0 0 auto;z-index:1}
#view-nai-image .kQgIUn>div{width:2rem;height:2rem}
#view-nai-image .wfEHl{font-family:Eczar;color:rgb(245,243,194)}
#view-nai-image .fROgpQ{display:flex;flex-flow:wrap;-webkit-box-align:center;align-items:center;gap:8px;padding:5px 8px;background-color:rgb(19,21,44);border-radius:4px}
#view-nai-image .fROgpQ>span{flex:1 1 auto;font-size:0.875rem}
#view-nai-image .fROgpQ strong{color:rgb(245,243,194)}
#view-nai-image .gzTfiX{mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSJub25lIiBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICA8ZyB0cmFuc2Zvcm09InJvdGF0ZSgtNDUgMzIgMzIpIj4KICAgIDxyZWN0IHg9IjkiIHk9IjI2IiB3aWR0aD0iNDYiIGhlaWdodD0iMTIiIHJ4PSIxLjUiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiLz4KICAgIDxwYXRoIGQ9Ik01NSAyOS41aDJhMSAxIDAgMCAxIDEgMXYzYTEgMSAwIDAgMS0xIDFoLTIiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiLz4KICAgIDxwYXRoIGZpbGw9IiNGRkZGRkYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyIDMyKSByb3RhdGUoOTApIiBkPSJNMS40LTExLTMgMWgzLjZMLTEuNCAxMSAzLTFILTAuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=)}
#view-nai-image .fOvXrE{flex:0 0 auto;cursor:inherit}
#view-nai-image .fOvXrE.fOvXrE{width:22px;height:22px;background-color:rgb(255,255,255)}
#view-nai-image .fKtVnd{display:flex;flex-direction:row;flex:0 0 auto;gap:8px}
#view-nai-image .exsayo{flex:0 0 auto;padding:3px 10px;font-size:0.8125rem;white-space:nowrap}
#view-nai-image .dpsEIF{display:flex;flex-direction:row;-webkit-box-pack:justify;justify-content:space-between;font-weight:600}
#view-nai-image .dpsEIF span{color:rgb(245,243,194)}
#view-nai-image .hozvWZ{position:relative;background-color:rgb(19,21,44);border-radius:3px;overflow:hidden;height:12px}
#view-nai-image .iKkbsE{margin-top:8px}
#view-nai-image .dOSWjA{position:absolute;top:0px;left:0px;height:100%;border-radius:3px;overflow:hidden;transition:width 0.5s ease-in-out}
#view-nai-image .ggomSC{position:absolute;top:0px;height:100%;background-color:rgb(245,243,194);transition:width 0.5s ease-in-out,left 0.5s ease-in-out}
#view-nai-image .zOccP{position:absolute;top:0px;height:100%;background-color:rgb(151,115,255);transition:width 0.5s ease-in-out,left 0.5s ease-in-out}
#view-nai-image .kIPsyU{font-size:0.875rem;opacity:0.8}
#view-nai-image .gteoIx{-webkit-box-align:center;align-items:center;cursor:pointer;flex-direction:row;-webkit-box-pack:start;place-content:center flex-start;display:flex;opacity:1;user-select:none}
#view-nai-image .gteoIx>span{-webkit-box-flex:1;flex-grow:1;margin-left:8px}
#view-nai-image .ffiiND{height:24px;width:28px;position:relative;border-radius:4px;background:rgb(245,243,194)}
#view-nai-image .iJyHZP{height:22px;width:26px;top:1px;left:1px;position:absolute;border-radius:3px;background:rgba(245,243,194,0.99)}
#view-nai-image .RYrPu{width:16px;height:16px;position:absolute;top:4px;left:6px;background-color:rgb(14,15,33);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBmaWxsPSJub25lIj4KPHBhdGggZD0iTTUuNjY5NDkgOS45NjIyMkwzLjY0MzczIDcuODI2NDVDMy4yODAwMSA3LjQ0Mjk4IDIuNjc2MjYgNy40Mjg4NSAyLjI5NTIyIDcuNzk0ODlDMS45MTQxOCA4LjE2MDkzIDEuOTAwMTQgOC43Njg1MyAyLjI2Mzg2IDkuMTUyTDUuNTk3NTIgMTIuNjY2N0wxMy42OTk5IDQuOTkyMjVDMTQuMDgzNSA0LjYyODkyIDE0LjEwMTggNC4wMjE0MyAxMy43NDA4IDMuNjM1MzlDMTMuMzc5NyAzLjI0OTM1IDEyLjc3NjEgMy4yMzA5NCAxMi4zOTI1IDMuNTk0MjdMNS42Njk0OSA5Ljk2MjIyWiIgZmlsbD0iIzBCMEYyNSIvPgo8L3N2Zz4K);mask-repeat:no-repeat;mask-size:contain;mask-position:center center}
#view-nai-image .jnRUGG{background-color:rgb(14,15,33);height:100%;left:0px;opacity:0.7;position:fixed;top:0px;width:100%;z-index:301;cursor:pointer}

#view-nai-image .kVZzrd{display:flex;flex-direction:column;gap:4px;padding:5px 8px 7px;border-radius:8px;border:1px solid rgb(34,37,63);background-color:rgb(14,15,33);font-size:0.8125rem;font-weight:600}
#view-nai-image .cjxOnb{display:flex;flex-direction:row;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between;gap:8px}
#view-nai-image .nZsYW{flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:rgb(245,243,194)}
#view-nai-image .gFARSo{flex:0 0 auto;color:rgb(245,243,194);text-decoration:underline;font-size:0.75rem}
#view-nai-image .ihaKuC{display:flex;flex-direction:row;-webkit-box-align:center;align-items:center;gap:6px}
#view-nai-image .fIDvyg{position:relative;background-color:rgb(19,21,44);border-radius:3px;overflow:hidden;height:6px}
#view-nai-image .bffHVh{flex:1 1 auto}
#view-nai-image .AzPzh{flex:0 0 auto;width:18px;height:18px;padding:0px;-webkit-box-pack:center;justify-content:center;border-radius:3px}
#view-nai-image .AzPzh.AzPzh>.sc-e2da9a21-1{flex:0 0 9px;width:9px;height:9px;background-color:rgb(245,243,194)}

#view-nai-image .nai-usage-modal .gteoIx.hgiaVo,#view-nai-image .nai-usage-modal .gteoIx{margin-top:2px}
#view-nai-image .nai-confirm-modal .kQgIUn,#view-nai-image .nai-usage-modal .kQgIUn{background:transparent;border:0;cursor:pointer}
#view-nai-image .nai-confirm-modal .kQgIUn>div,#view-nai-image .nai-usage-modal .kQgIUn>div{background-color:#fff;-webkit-mask:url("../assets/nai-official/media/cross.svg") center/1rem no-repeat;mask:url("../assets/nai-official/media/cross.svg") center/1rem no-repeat}
#view-nai-image .nai-usage-modal button.exsayo{background:#22253f;border:1px solid #2c3052;color:#fff;border-radius:3px;cursor:pointer}
#view-nai-image .nai-usage-modal button.exsayo:hover{background:#2c3052}
#view-nai-image #nai-usage-bar button.gFARSo{background:none;border:0;padding:0;cursor:pointer;font-family:inherit}
#view-nai-image #nai-usage-bar button.AzPzh{background:#22253f;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer}


/* ---------- API 设置、请求预览 ---------- */
#nai-token-modal .modal{background:#191b31;color:#fff;border-color:#454a70}
#nai-token-modal .modal h2,#nai-preview-modal .modal h2{color:#f5f3c2}
#nai-token-modal .modal p,#nai-preview-modal .modal p,#nai-token-modal .modal small{color:#bbbccc}
#nai-token-modal .token-field{display:flex;border:1px solid #444961;border-radius:4px}
#nai-token-modal .token-field input{flex:1;min-width:0;border:0;background:#111329;color:#fff;padding:9px}
#nai-token-modal .token-field button{background:#22253f;color:#fff;border:0}
#nai-token-modal .modal .nai-tag-suggest-setting{display:flex;align-items:center;gap:8px;margin:16px 0 10px;cursor:pointer}
#nai-token-modal .nai-tag-suggest-setting input{flex:0 0 16px;width:16px;height:16px;margin:0;accent-color:#f5f3c2}
#nai-token-modal .modal-action{border:0;background:#f5f3c2;color:#13152c;font-weight:bold;border-radius:4px;padding:10px 16px;width:100%;margin:4px 0 10px}
#nai-preview-modal .modal{background:#191b31;color:#fff;border-color:#454a70}
#nai-token-modal .modal label{display:block;margin:14px 0 6px}
#nai-token-modal .nai-token-input{box-sizing:border-box;width:100%;min-width:0;border:1px solid #444961;border-radius:4px;background:#111329;color:#fff;padding:9px}
#nai-token-modal .nai-setting-row{display:flex;gap:6px}
#nai-token-modal .nai-setting-row .nai-token-input{flex:1}
#nai-token-modal .nai-setting-reset{flex:0 0 auto;border:1px solid #444961;border-radius:4px;background:#22253f;color:#fff;padding:0 12px;cursor:pointer}
#nai-token-modal .nai-setting-reset:hover{background:#2c3052}
#nai-token-modal .modal small.nai-setting-hint{display:block;margin-top:5px;font-size:12px;line-height:1.45;color:#8e90a8}
#nai-token-modal .connection-state{margin-top:12px;font-size:13px;color:#bbbccc}
#nai-token-modal .connection-state.is-ok{color:#9be29b}
#nai-token-modal .connection-state.is-error{color:#ff7878}
#nai-token-modal .nai-setting-actions{display:flex;gap:8px}
#nai-token-modal .nai-setting-actions .modal-action{flex:1}
#nai-token-modal .modal-action.nai-test-api{background:#22253f;color:#fff;border:1px solid #444961}
#nai-token-modal .modal-action:disabled{opacity:.6;cursor:default}

/* NAI 弹窗位于主视图节点之外，使用全局选择器确保打开后始终覆盖页面。 */
#nai-token-modal,
#nai-preview-modal{
  position:fixed;
  inset:0;
  z-index:1000;
  display:grid;
  place-items:center;
  padding:20px;
  background:#090a18bd;
}
#nai-token-modal .modal,
#nai-preview-modal .modal{
  position:relative;
  width:min(460px,100%);
  max-height:calc(100vh - 40px);
  overflow:auto;
  background:#191b31;
  color:#fff;
  border:1px solid #454a70;
  border-radius:8px;
  padding:24px;
  box-shadow:0 22px 60px #0008;
}
#nai-token-modal .modal-close,
#nai-preview-modal .modal-close{position:absolute;right:12px;top:9px;border:0;background:transparent;color:#fff;font-size:24px}
#nai-token-modal .modal h2,
#nai-preview-modal .modal h2{font-family:Georgia,serif;color:#f5f3c2;font-size:22px;margin:0 0 10px}
#nai-token-modal .modal p,
#nai-preview-modal .modal p,
#nai-token-modal .modal small{color:#bbbccc;font-size:12px;line-height:1.5}
#nai-token-modal .modal label{display:block;margin:14px 0 6px;font-size:12px}
#nai-token-modal .nai-token-input{display:block;width:100%;box-sizing:border-box;margin-top:6px;background:#111329;color:#fff;border:1px solid #444961;border-radius:4px;padding:9px}
#nai-token-modal .modal-action{border:0;background:#f5f3c2;color:#13152c;font-weight:bold;border-radius:4px;padding:10px 16px;width:100%;margin:14px 0 10px}
#nai-token-modal .connection-state{margin:12px 0;color:#d6d5a6;font-size:11px}
#nai-preview-modal .preview-modal{width:min(760px,100%)}
#nai-preview-modal .preview-modal pre{max-height:60vh;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#0e0f21;padding:12px;border:1px solid #22253f;border-radius:4px;font-size:11px;color:#dadbe8}
#nai-token-modal .token-field{display:flex;border:1px solid #444961;border-radius:4px}
#nai-token-modal .token-field input{flex:1;min-width:0;border:0;background:#111329;color:#fff;padding:9px}
#nai-token-modal .token-field button{background:#22253f;color:#fff;border:0}


/* ---------- 数据日志（API 设置内） ---------- */
#nai-token-modal .nai-usage-log{margin-top:18px;padding-top:14px;border-top:1px solid #2c3052}
#nai-token-modal .nai-usage-log h3{margin:0 0 4px;font-size:14px;color:#f5f3c2}
#nai-token-modal .nai-usage-log .nai-setting-actions{margin-top:8px}

/* ---------- 确认弹窗（官方弹窗外框，替代原生 confirm 与 IP 确认） ---------- */
#view-nai-image .nai-confirm-modal{position:fixed;inset:0;z-index:1100}
#view-nai-image .nai-confirm-modal .kavPXI{width:400px;padding:20px 20px 18px}
#view-nai-image .nai-confirm-modal .nai-confirm-title{font-size:1.25rem;padding-right:36px;line-height:1.3}
#view-nai-image .nai-confirm-message{font-size:0.875rem;line-height:1.5;color:#fff;white-space:pre-wrap;overflow-wrap:anywhere}
#view-nai-image .nai-confirm-details{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:3px;background:rgb(14,15,33);font-size:0.8125rem}
#view-nai-image .nai-confirm-row{display:flex;gap:10px;overflow-wrap:anywhere}
#view-nai-image .nai-confirm-key{flex:0 0 104px;opacity:.6}
#view-nai-image .nai-confirm-value{font-variant-numeric:tabular-nums}
#view-nai-image .nai-confirm-note{line-height:1.45}
#view-nai-image .nai-confirm-actions{display:flex;gap:8px;margin-top:4px}
#view-nai-image .nai-confirm-actions .button{flex:1 1 0;justify-content:center;border-radius:3px;font-family:inherit;font-size:0.875rem;font-weight:700}
#view-nai-image .nai-confirm-actions .nai-confirm-ok{background:rgb(245,243,194);color:rgb(19,21,44)}
#view-nai-image .nai-confirm-actions .nai-confirm-ok:hover,#view-nai-image .nai-confirm-actions .nai-confirm-ok:focus{background:rgb(255,253,214)}
#view-nai-image .nai-confirm-actions .button:focus-visible{outline:1px solid rgba(245,243,194,.8);outline-offset:1px}
#view-nai-image .nai-confirm-modal.is-danger .nai-confirm-ok{background:rgb(255,121,121);color:rgb(19,21,44)}
#view-nai-image .nai-confirm-modal.is-danger .nai-confirm-ok:hover,#view-nai-image .nai-confirm-modal.is-danger .nai-confirm-ok:focus{background:rgb(255,145,145)}
#view-nai-image .nai-confirm-modal.is-warning .haSKPZ{border-color:rgb(241,196,15)}
#view-nai-image .nai-confirm-modal.is-warning .nai-confirm-title{color:rgb(255,210,122)}

/* ---------- ☰ 菜单账户卡片里的公网 IP ---------- */
#view-nai-image .nai-menu-ip{display:flex;align-items:center;gap:6px;margin-top:4px;padding:0;border:0;background:none;color:rgba(255,255,255,.7);font:inherit;font-size:0.8125rem;cursor:pointer;max-width:260px;text-align:left}
#view-nai-image .nai-menu-ip:hover{color:#fff}
#view-nai-image .nai-menu-ip span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
#view-nai-image .nai-menu-ip-dot{flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.35)}
#view-nai-image .nai-menu-ip.is-ok .nai-menu-ip-dot{background:#9be29b}
#view-nai-image .nai-menu-ip.is-error{color:#ff7878}
#view-nai-image .nai-menu-ip.is-error .nai-menu-ip-dot{background:#ff7878}
#view-nai-image .nai-menu-ip.is-checking .nai-menu-ip-dot{animation:naiIpPulse 1s ease-in-out infinite}
@keyframes naiIpPulse{50%{opacity:.3}}

/* ---------- 角色 ➕ 菜单（Female / Male / Other，官方 sc-97ee6d40） ---------- */
#view-nai-image .jEjVGv{display:flex;flex-direction:column;background-color:rgb(19,21,44);border:1px solid rgb(34,37,63);border-radius:8px}
#view-nai-image .bTBYbz{display:flex;align-items:center;gap:4px;font-size:1.125rem;padding:4px 10px;background-color:rgb(25,27,49);color:inherit;border:0;font-family:inherit;font-weight:600;cursor:pointer;text-align:left}
#view-nai-image .bTBYbz:hover,#view-nai-image .bTBYbz:focus-visible{background-color:rgb(34,37,63);color:rgb(255,255,255)}
#view-nai-image .kxlOPr > div:first-child > svg{flex:0 0 auto}

/* ---------- 弹窗动画（官方：淡入 0.15s ease-in-out；淡出 0.1s ease-out 由脚本完成） ---------- */
@keyframes nai-modal-in{from{opacity:0}to{opacity:1}}
#nai-token-modal:not(.hidden),#nai-preview-modal:not(.hidden),#view-nai-image #nai-image-import-modal:not(.hidden),
#view-nai-image .nai-usage-modal,#view-nai-image .nai-confirm-modal{animation:nai-modal-in .15s ease-in-out}

/* ---------- 角色位置编辑器（官方 sc-3d2a6251，取自官方页面副本） ---------- */
#view-nai-image .nai-position-editor{position:absolute;inset:0;z-index:150;background:rgb(19,21,44)}
#view-nai-image .nai-position-editor[hidden]{display:none}
#view-nai-image .nai-position-warning{margin-top:-2px}
#view-nai-image .gJiVF{color:rgb(255,120,120)!important}
#view-nai-image #nai-position-editor .dfhAGk,#view-nai-image #nai-position-editor .jPZVzs{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:5px;height:44px;min-width:44px;padding:0 12px;border-radius:3px;font-size:0.875rem;font-weight:600;font-family:inherit;cursor:pointer}
#view-nai-image #nai-position-editor .dfhAGk{background-color:rgb(255,255,255);color:rgb(19,21,44);border:1px solid rgb(255,255,255)}
#view-nai-image #nai-position-editor .jPZVzs{background-color:rgb(25,27,49);color:rgb(255,255,255);border:1px solid rgb(34,37,63)}
#view-nai-image #nai-position-editor .dfhAGk svg,#view-nai-image #nai-position-editor .jPZVzs svg{width:16px;height:16px;flex:0 0 auto}
#view-nai-image .dKIzmG{flex:0 0 auto;font-size:0.75rem;opacity:0.7}
#view-nai-image .hUOMwd{position:relative;background-color:rgb(14,15,33);border:1px solid rgba(34,37,63,0.5);border-radius:3px;box-sizing:border-box;flex:0 0 auto}
#view-nai-image .nai-position-backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;border-radius:3px;pointer-events:none;user-select:none}
#view-nai-image .nai-position-backdrop[hidden]{display:none}
#view-nai-image .iRRXVC{position:absolute;inset:0px;z-index:2;border-radius:3px;background-color:rgba(14,15,33,0.5);display:flex}
#view-nai-image .bPIQXh{width:100%;height:100%;position:relative;display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr 1fr 1fr;gap:4px;padding:4px;box-sizing:border-box}
#view-nai-image #nai-position-editor .eRUjtX,#view-nai-image #nai-position-editor .gAAQIc,#view-nai-image #nai-position-editor .goTVga,#view-nai-image #nai-position-editor .nai-cell-overloaded{display:flex;align-items:center;justify-content:center;border-radius:3px;min-width:0;min-height:0;cursor:pointer}
#view-nai-image #nai-position-editor .eRUjtX{color:rgba(255,255,255,0.6);background-color:transparent;border:1px solid rgb(34,37,63)}
#view-nai-image #nai-position-editor .eRUjtX:hover{background-color:rgba(255,255,255,0.2)}
#view-nai-image #nai-position-editor .nai-cell-overloaded{color:rgb(255,120,120);background-color:transparent;border:1px solid rgb(34,37,63)}
#view-nai-image #nai-position-editor .nai-cell-overloaded:hover{background-color:rgba(255,255,255,0.2)}
#view-nai-image #nai-position-editor .gAAQIc{color:rgba(255,255,255,0.6);background-color:rgba(255,255,255,0.3);border:1px solid rgb(255,255,255)}
#view-nai-image #nai-position-editor .goTVga{color:rgb(255,120,120);background-color:rgba(255,255,255,0.3);border:1px solid rgb(255,255,255)}
#view-nai-image #nai-position-editor .gAAQIc:hover,#view-nai-image #nai-position-editor .goTVga:hover{background-color:rgba(255,255,255,0.5)}
#view-nai-image .jkwnOu,#view-nai-image .dFthTc,#view-nai-image .dEmxMU,#view-nai-image .nai-badge-warning{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;pointer-events:none;font-size:0.875rem;box-sizing:border-box}
#view-nai-image .jkwnOu{background-color:rgb(19,21,44);color:rgb(255,255,255);border:1px solid rgb(34,37,63)}
#view-nai-image .dFthTc{background-color:rgb(255,255,255);color:rgb(19,21,44);border:1px solid rgb(255,255,255)}
#view-nai-image .dEmxMU{background-color:rgb(255,255,255);color:rgb(19,21,44);border:1px solid rgb(255,120,120)}
#view-nai-image .nai-badge-warning{background-color:rgb(19,21,44);color:rgb(255,120,120);border:1px solid rgb(255,120,120)}
#view-nai-image .faYqLg{width:100%;height:100%;position:relative;cursor:crosshair;touch-action:none}
#view-nai-image .ejzEjq{position:absolute;transform:translate(-50%,-50%)}
#view-nai-image .nai-position-guides{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}
#view-nai-image .nai-position-guides line{stroke:rgba(255,255,255,0.6);stroke-width:1;vector-effect:non-scaling-stroke;shape-rendering:crispEdges}
#view-nai-image .nai-position-editor .nTNBg{background:rgb(25,27,49);border-radius:4px;border:1px solid rgb(34,37,63);display:flex;flex-direction:row;align-items:center;height:44px}
#view-nai-image .nai-position-editor .jGrXXk{background:none;border:0;border-radius:3px;display:flex;align-items:center;justify-content:center;gap:6px;height:100%;aspect-ratio:1/1;padding:0;color:#fff;cursor:pointer}
#view-nai-image .nai-position-editor .jGrXXk:hover{background:rgb(34,37,63)}
#view-nai-image .nai-position-editor .jGrXXk.is-selected{background:rgb(37,40,65)}
#view-nai-image .nai-position-editor .LQMCk{border-radius:4px;justify-content:center;background-color:rgb(245,243,194);color:rgb(14,15,33);font-weight:600;font-family:inherit;border:1px solid transparent;cursor:pointer}
#view-nai-image .nai-position-editor .LQMCk:hover{background:rgb(255,255,255)}
#view-nai-image .nai-grid-popover{position:absolute;left:0;bottom:calc(100% + 8px);z-index:300;display:flex;flex-direction:column;gap:6px;padding:6px;width:280px;box-sizing:border-box;background:rgb(25,27,49);border:1px solid rgb(34,37,63);border-radius:3px}
#view-nai-image .nai-grid-option{display:flex;align-items:center;gap:8px;padding:6px 8px;border:0;border-radius:3px;background:none;color:#fff;font:inherit;font-size:0.875rem;cursor:pointer;text-align:left}
#view-nai-image .nai-grid-option:hover{background:rgb(34,37,63)}
#view-nai-image .nai-grid-radio{width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,0.6);box-sizing:border-box;flex:0 0 auto}
#view-nai-image .nai-grid-option.is-active .nai-grid-radio{border:4px solid rgb(245,243,194)}
#view-nai-image .nai-grid-stepper{display:flex;flex-direction:row;align-items:center;gap:2px;height:44px;padding:2px 6px;box-sizing:border-box;background:rgb(19,21,44);border:1px solid rgb(34,37,63);border-radius:3px}
#view-nai-image .nai-grid-step{width:24px;height:100%;border:0;border-radius:3px;background:none;color:#fff;font-size:1rem;cursor:pointer}
#view-nai-image .nai-grid-step:hover:not(:disabled){background:rgba(255,255,255,0.15)}
#view-nai-image .nai-grid-step:disabled{opacity:.35;cursor:default}
#view-nai-image .nai-grid-number{min-width:16px;text-align:center;font-variant-numeric:tabular-nums;font-size:0.875rem}
#view-nai-image .nai-grid-times{padding:0 4px;font-size:0.875rem;color:rgba(255,255,255,0.6)}

/* ---------- 流式生成预览（官方：中间图 + 5px 背景模糊，最终图替换） ---------- */
#view-nai-image .nai-generating-frame{position:relative;overflow:hidden}
/* Canvas: every tile's rings in one layer under all tiles (see renderCanvas). */
#view-nai-image .nai-deco-layer,#view-nai-image .nai-tile-layer{position:absolute;left:0;top:0;width:0;height:0}
#view-nai-image .nai-history-generating{background-size:cover;background-position:center;background-color:#22253F}
#view-nai-image .nai-stream-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;z-index:1}
#view-nai-image .image-grid-streaming-image-blur{position:absolute;inset:0;z-index:2;pointer-events:none;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}

/* ---------- V3：Auto / SMEA / DYN / Decrisp ---------- */
#view-nai-image .nai-smea-row{display:flex;flex-direction:row;gap:14px;margin-top:8px}
#view-nai-image .nai-smea-row .nai-v3-check{display:flex;align-items:center;gap:6px;cursor:pointer}
#view-nai-image .nai-smea-row .nai-v3-check.hidden{display:none}
#view-nai-image .nai-smea-row .nai-v3-check:has(input:disabled){cursor:default}
#view-nai-image #nai-ai-settings-panel .jdNYkc{align-items:flex-start}

/* Model dropdown options (official model-mode-row): ModelTitle uses the headings font. */
#view-nai-image .nai-model-title { font-family: Eczar, serif; font-size: 0.875rem; font-weight: 700; }
#view-nai-image .nai-model-description { font-size: 0.875rem; }

/* A saved image's save button stays dimmed (the official page dims unavailable toolbar buttons the same
 * way), so it is visible at a glance that this image is already in the save folder. */
#view-nai-image [data-action="save"].nai-saved{opacity:.35}
#view-nai-image [data-action="save"].nai-saved .gnaXro{opacity:1}

/* ---------- 1.2.11: shimmer progress bar ---------- */
/* Direction: left-to-right (bright band enters from left, exits right). */
@keyframes nai-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
#view-nai-image #nai-progress.nai-progress-shimmer .cnmAlp{opacity:1!important}
#view-nai-image #nai-progress.nai-progress-shimmer #nai-progress-fill{width:100%!important;transition:none!important;background:linear-gradient(90deg,transparent 25%,rgba(245,213,107,.55) 50%,transparent 75%);background-size:200% 100%;animation:nai-shimmer 1.2s linear infinite}

/* ---------- 1.2.11: Delete dropdown + Clear All, generating frame hide before preview ---------- */
#view-nai-image .nai-batch-bar .nai-batch-delete-wrap{position:relative;display:inline-flex}
#view-nai-image .nai-batch-bar #nai-history-batch-delete{border-radius:6px 0 0 6px!important}
#view-nai-image .nai-batch-bar #nai-history-batch-delete-expand{padding:5px 7px;border-left:1px solid rgba(255,100,100,.25);border-radius:0 6px 6px 0!important;line-height:1;font-size:11px;margin-left:0}
#view-nai-image .nai-batch-bar .nai-batch-delete-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:130px;background:#1c1f3a;border:1px solid #4a2030;border-radius:8px;padding:4px;z-index:200;display:none;box-shadow:0 4px 16px rgba(0,0,0,.5)}
#view-nai-image .nai-batch-bar .nai-batch-delete-menu.open{display:block}
#view-nai-image .nai-batch-bar .nai-batch-delete-menu button{display:flex;align-items:center;gap:6px;width:100%;text-align:left;padding:7px 12px;border-radius:6px;border:none;background:transparent;color:#e8a0a0;font-size:12px;cursor:pointer;white-space:nowrap}
#view-nai-image .nai-batch-bar .nai-batch-delete-menu button:hover{background:#3a2030}
/* Hide the generating frame border/bg until a stream preview image has arrived */
#view-nai-image .nai-generating-frame:not(.nai-has-preview){border:none!important;background:transparent!important;box-shadow:none!important}
#view-nai-image .nai-position-mask{position:absolute;inset:0;background:#7c68e0;opacity:.7;border-radius:3px;pointer-events:none;-webkit-mask-size:100% 100%;mask-size:100% 100%;mask-mode:luminance}
#view-nai-image .nai-position-mask[hidden]{display:none}
