:root{color-scheme:light;--paper:#f5f3ef;--ink:#252623;--muted:#82847d;--line:#dedfd7;--red:#526b73;--green:#69765c;--white:#fff;--radius:14px;--ctl:40px;--focus-line:#ecece4;font-family:Inter,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}[hidden]{display:none!important}button,input,textarea{font:inherit}button,a,input,textarea,select{outline:none}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:inherit;text-decoration:none}button{border:0}p{line-height:1.7}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:600;letter-spacing:-.04em}h2{font-size:24px}input,textarea{width:100%;min-height:var(--ctl);border:1px solid var(--line);background:#fff;border-radius:8px;padding:13px 15px;color:var(--ink)}input[type=checkbox],input[type=radio]{width:auto;min-height:0}input:focus,textarea:focus{border-color:var(--focus-line)}input::placeholder,textarea::placeholder{color:#a1a49b}button{transition:background .15s,color .15s,transform .15s}.primary{background:var(--red);color:#fff;border-radius:8px;height:var(--ctl);padding:0 21px;display:flex;align-items:center;justify-content:center;gap:24px;font-weight:600;font-size:14px}.primary:hover{background:#3d555d}.primary span{font-size:20px}.quiet-button{background:transparent;border:1px solid var(--line);height:var(--ctl);padding:0 15px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#686b63;font-size:13px}.quiet-button:hover{background:#e9e8e1}.text-button{padding:0;background:transparent;color:var(--red);font-weight:600}.muted{color:var(--muted);font-size:14px}.eyebrow{font-size:11px;letter-spacing:.18em;color:var(--muted);font-weight:600;margin-bottom:15px}.brand{display:flex;align-items:center;gap:12px;font-size:23px;font-weight:700;letter-spacing:.08em}.brand-symbol{display:grid;place-items:center;background:var(--red);color:#fff;width:40px;height:40px;font-size:23px;border-radius:8px;font-family:serif}.brand small{font-size:8px;letter-spacing:.18em;font-weight:500;color:var(--muted);display:block;margin-top:3px}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-intro{background:#e8e8df;padding:36px 40px;display:flex;flex-direction:column;min-height:100vh;position:relative;overflow:hidden}.auth-intro:after{content:"";width:430px;height:430px;border:1px solid #b7b9ac;border-radius:50%;background:#d5d7ca18;position:absolute;right:-240px;top:25%;pointer-events:none}.intro-copy{margin:auto 0;z-index:1;padding:28px 0}.intro-copy h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(30px,3.6vw,52px);line-height:1.3;font-weight:500;letter-spacing:.04em}.intro-copy h1 span{color:var(--red)}.intro-copy>p:last-child{font-size:15px;line-height:2;color:#707468}.intro-footer{font-size:11px;color:#777c6d;display:flex;justify-content:space-between}.auth-panel{display:grid;align-content:start;justify-items:center;padding:48px 40px}/* 表单从顶部向下排布,水平仍居中 */.auth-form{width:100%;max-width:350px}.auth-form h2{font-size:28px;margin-bottom:8px}.auth-form>p.muted{margin-bottom:20px}.auth-form label{display:block;font-size:13px;margin:16px 0 8px}.auth-form .primary{width:100%;margin-top:10px}.form-error{color:#a33a2c;font-size:13px;margin:10px 0 0;min-height:20px}.form-error:empty{min-height:0;margin:0}.auth-switch{text-align:center;font-size:13px;color:var(--muted);margin-top:23px}.auth-footnote{font-size:11px;color:#999c94;text-align:center;margin-top:30px}.studio{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.sidebar{background:#ecece4;border-right:1px solid var(--line);padding:26px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.nav-group{display:flex;flex-direction:column;gap:6px}.nav-group-label{font-size:10px;letter-spacing:.12em;color:#999c92;margin:12px 14px 3px}.nav-group:first-child .nav-group-label{margin-top:2px}.nav-item{background:#dedfd2;border:1px solid transparent;border-radius:8px;padding:10px 13px;display:flex;align-items:center;gap:12px;font-size:13px;font-weight:600}.nav-item>span:first-child{color:var(--green);font-size:18px}.nav-dot{width:5px;height:5px;background:var(--red);border-radius:50%;margin-left:auto}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:16px}.profile{display:flex;align-items:center;gap:10px;margin-bottom:0;min-width:0}.profile strong{font-size:13px;display:block;max-width:130px;overflow:hidden;text-overflow:ellipsis}.profile small{font-size:10px;color:var(--muted);display:block;margin-top:5px}.avatar{display:grid;place-items:center;width:35px;height:35px;border-radius:50%;background:#d7d9ca;color:#626953;font-size:14px;text-transform:uppercase}.sidebar-bottom>.quiet-button{border:0;padding:6px 0;color:var(--muted)}.main{padding:0 30px;max-width:1650px;width:100%;margin:0 auto}/* 仅水平居中,内容从顶部向下排布 */.topbar{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#96998f}.topbar strong{font-weight:500;color:#666b60}.service-status{display:flex;align-items:center;gap:7px}.service-status:before{content:"";width:6px;height:6px;background:#b9aa74;border-radius:50%}.service-status.online:before{background:#7a946a}.page-heading{padding:20px 0 12px;display:flex;align-items:center;gap:20px;justify-content:space-between}.page-heading h1{font-size:26px;margin-bottom:0}.page-heading p{margin-bottom:0}.page-heading .eyebrow{margin-bottom:11px;font-size:9px}.preset-badge{padding:8px 12px;border:1px solid var(--line);border-radius:20px;font-size:10px;white-space:nowrap;color:#777c6e}.composer{border:1px solid #d9dcd1;border-radius:var(--radius);background:#fff;padding:16px 20px}.composer-top{display:flex;justify-content:space-between;font-size:12px}.composer-top span{font-size:10px;color:#a5a89e}.composer textarea{border:0;resize:vertical;min-height:80px;max-height:400px;padding:17px 0;line-height:1.9;font-size:15px;background:transparent}.composer textarea:focus{outline:none}.composer:focus-within{border-color:var(--focus-line)}.composer-bottom{display:flex;justify-content:space-between;align-items:center;gap:14px;padding-top:12px;border-top:1px solid #efefea}.composer-bottom p{margin:0;font-size:11px;color:#92988a}.small-dot{width:5px;height:5px;display:inline-block;background:var(--green);border-radius:50%;margin-right:6px}.composer .primary{min-width:142px;padding:10px 19px}.gallery-section{margin-top:20px}.gallery-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:15px}.gallery-heading h2{font-size:20px;margin-bottom:7px}.gallery-heading h2 span{font-size:10px;vertical-align:middle;background:#e4e6dc;padding:4px 8px;border-radius:12px;letter-spacing:0;margin-left:9px;color:#7b816e}.gallery-heading p{font-size:11px;margin:0}.danger-text{color:#ac5d4f}.gallery{columns:3;column-gap:16px}[data-masonry].masonry{columns:auto;display:block;position:relative}[data-masonry].masonry>:not(.empty):not(.empty-state){position:absolute;margin:0}.card{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;min-width:0;break-inside:avoid;margin:0 0 16px}.card-image{width:100%;padding:0;display:block;background:#e8e9e1;position:relative;overflow:hidden}.card-image img{width:100%;height:auto;display:block}.card-body{padding:15px}.card-prompt{font-size:12px;line-height:1.65;color:#52594d;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0 0 12px;min-height:39px;overflow-wrap:anywhere}.card-meta{display:flex;align-items:center;justify-content:space-between;color:#969d8c;font-size:10px}.card-delete{background:none;color:#9a887c;padding:4px}.card-status{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:25px;text-align:center;aspect-ratio:2/3;background:linear-gradient(140deg,#edeee6,#f8f7f2)}.card-status h3{font-size:17px;margin:21px 0 10px}.card-status p{font-size:12px;color:#959a8c;max-width:220px;word-break:break-word}.spinner{width:28px;height:28px;border:2px solid #d9ddcf;border-top-color:var(--green);border-radius:50%;animation:spin 1.2s linear infinite}.pending-symbol{font-size:27px;color:#a3ab97}.failed-symbol{font-size:24px;color:#bc6b58}.empty-state{min-height:170px;border:1px dashed #cfd4c4;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:30px;color:var(--muted)}.empty-mark{font-size:31px;color:#a1ac93;margin-bottom:15px}.empty-state h3{font-size:16px;color:#777e6d;margin-bottom:8px}.empty-state p{font-size:12px;margin:0}.pagination{display:flex;align-items:center;justify-content:center;gap:22px;margin-top:25px;font-size:12px;color:var(--muted)}.page-footer{margin:20px 0 14px;padding-top:14px;border-top:1px solid var(--line);font-size:10px;color:#a0a595;display:flex;justify-content:space-between}.toast{position:fixed;z-index:100;top:22px;left:50%;transform:translateX(-50%);max-width:90vw;padding:13px 22px;background:#2e3829;color:#fff;border-radius:9px;font-size:13px}dialog{padding:0;border:1px solid var(--line);border-radius:16px;color:var(--ink)}dialog::backdrop{background:#17201199;backdrop-filter:blur(5px)}.detail-dialog{width:min(1050px,94vw);max-height:92vh}.detail-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr)}.detail-image-wrap{background:#dfe1d5;display:grid;place-items:center;min-height:450px}.detail-image-wrap img{max-height:90vh;max-width:100%;object-fit:contain}.detail-dialog.wide-image{width:min(1280px,96vw)}.detail-dialog.wide-image .detail-layout{grid-template-columns:minmax(0,2fr) minmax(280px,1fr)}.detail-dialog.wide-image .detail-image-wrap{min-height:0}.detail-info{padding:28px 22px;overflow:auto;max-height:90vh;background:var(--paper)}.detail-info h2{margin-bottom:6px}.detail-info>h3{font-size:12px;margin-top:24px}.detail-info .primary{margin-top:27px}.detail-info>.quiet-button{width:100%;margin-top:10px}.detail-prompt{font-size:13px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere;max-height:230px;overflow:auto}.detail-info dl{border-top:1px solid var(--line);padding-top:14px;font-size:12px}.detail-info dl div{display:flex;justify-content:space-between;margin-bottom:12px}.detail-info dt{color:var(--muted)}.detail-info dd{margin:0}.close-button{position:absolute;right:12px;top:10px;background:#fff9;border-radius:50%;width:40px;height:40px;display:grid;place-items:center;line-height:1;font-size:26px;color:#777;z-index:1}.image-tabs{margin-top:22px}.image-tabs button{flex:1}.confirm-dialog{padding:28px;width:min(400px,90vw)}.confirm-dialog h2{font-size:22px}.confirm-dialog p{font-size:14px;color:var(--muted)}.confirm-dialog>div{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}.danger-button{font-size:13px;padding:11px 17px}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:1500px){.gallery{columns:4}}@media(max-width:1050px){.studio{grid-template-columns:180px minmax(0,1fr)}.main{padding:0 26px}.sidebar{padding:28px 17px}.page-heading{align-items:flex-start}.preset-badge{display:none}.gallery{columns:2}.page-heading h1{font-size:26px}.auth-intro{padding:38px}.composer-bottom{align-items:flex-end}.composer-bottom p{max-width:200px}.detail-info{padding:30px 20px}}@media(max-width:650px){.auth-shell{grid-template-columns:1fr}.auth-intro{min-height:auto;padding:26px}.intro-copy{padding:25px 0 0}.intro-copy h1{font-size:35px}.intro-copy h1 br{display:none}.intro-copy>p:last-child,.intro-footer,.auth-intro .eyebrow{display:none}.auth-panel{padding:36px 25px}.auth-footnote{margin-top:25px}.studio{display:block}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(280px,85vw);height:100vh;z-index:70;transform:translateX(-105%);transition:transform .25s ease;flex-direction:column;align-items:stretch;padding:22px 18px;border-right:1px solid var(--line);overflow-y:auto}.sidebar .brand{font-size:19px}.brand-symbol{width:34px;height:34px;font-size:20px}body.nav-open .sidebar{transform:none}body.nav-open{overflow:hidden}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:16px}.main{padding:0 19px}.topbar{height:49px;font-size:10px;gap:10px;justify-content:flex-start}.topbar>*:last-child{margin-left:auto}.page-heading{padding:26px 0 21px}.page-heading h1{font-size:25px}.page-heading .muted{font-size:12px;line-height:1.9}.composer{padding:18px}.composer-bottom{align-items:center}.composer-bottom p{font-size:10px;max-width:145px}.composer .primary{min-width:110px;padding:11px 13px;gap:8px}.gallery-heading h2{font-size:18px}.gallery-heading .quiet-button{font-size:10px;padding:8px}.gallery-heading p{max-width:175px;font-size:10px}.gallery{column-gap:12px}.card-body{padding:11px}.card-prompt{font-size:11px}.card-meta{font-size:9px}.card-status{padding:13px}.card-status h3{font-size:14px}.card-status p{font-size:10px}.page-footer span{display:none}.detail-layout{grid-template-columns:1fr}.detail-dialog.wide-image .detail-layout{grid-template-columns:1fr}.detail-dialog{max-height:94vh}.detail-image-wrap{min-height:0}.detail-image-wrap img{max-height:58vh}.detail-info{max-height:none}.detail-info .eyebrow{display:none}.detail-info{padding:25px}.detail-info dl{font-size:12px}.detail-prompt{max-height:140px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.composer-bottom { flex-wrap:wrap; }
.composer-bottom .ai-writing { margin:0 0 0 auto; justify-content:flex-end; font-size:12px; }
.composer-bottom .ai-note { margin:0; line-height:1.4; }
@media(max-width:650px){ .composer-bottom .ai-note { display:none; } }

.video-source { border:1px dashed var(--line); border-radius:10px; padding:16px; margin:12px 0; background:var(--paper); }
.video-source>label { display:block; margin-bottom:10px; font-size:13px; }
.video-source .muted { font-size:11px; margin:8px 0; }
.custom-size { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:12px 0; }
.custom-size label { display:block; margin-bottom:8px; font-size:13px; }
.ratio-row { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.ratio-chip { background:#fff; border:1px solid var(--line); border-radius:7px; height:var(--ctl); padding:0 14px; display:inline-flex; align-items:center; justify-content:center; color:#686b63; font-size:12px; }
.ratio-chip:hover { background:#e9e8e1; }
/* 文生图/图生图配置各收进一行（窄屏flex-wrap自动回落；预览排到最后） */
#custom-panel { display:flex; align-items:flex-end; justify-content:center; gap:10px 14px; flex-wrap:wrap; }
#custom-panel .ratio-row { flex:1 1 auto; row-gap:8px; margin-bottom:0; }
#custom-panel .custom-size { flex:0 0 auto; width:auto; margin:0; gap:14px; }
#reference-panel { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:flex-start; gap:10px 14px; }/* 参考图按钮靠左与其他表单一致（2026-10-27 用户要求，智能编辑/图生图共用面板统一）；改动强度仍由 .push-right 固定行尾 */
#custom-panel .custom-size input { height:var(--ctl); }
#reference-panel>label { margin:0; flex:0 0 auto; line-height:var(--ctl); }
.file-field { height:var(--ctl); display:inline-flex; align-items:center; width:100%; min-width:0; padding:0 12px; background:#fff; border:1px solid var(--line); border-radius:8px; font-size:13px; color:#a1a49b; cursor:pointer; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }/* 统一文件选择组件（工作区参考图/个人中心头像同款）：div 重绘字段外观，原生 input 用 .file-input-hidden 隐藏；占位文字→选中后显示文件名 */
.file-field.has-file { color:var(--ink); }
.file-field:hover, .file-field:focus-visible { border-color:var(--focus-line); }
.field-group:has(.file-field:focus-visible)>label { border-color:var(--focus-line); }
.file-input-hidden { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
#reference-panel .file-field { flex:0 0 260px; width:260px; border-radius:0 8px 8px 0; }
.field-group.push-right { margin-left:auto; }/* 宽屏左右分布:组被推到行尾 */
#reference-preview-wrap { order:9; flex:1 1 100%; display:flex; align-items:center; gap:10px; }
#describe-panel { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:flex-start; gap:10px 14px; }/* 文生图内“AI看图配词”行（2026-11-02 用户“应该放到文生图中”）：同款 .file-field 控件，图片仅用于配词 */
#describe-panel .file-field { flex:0 0 300px; width:300px; }
#describe-preview-wrap { order:9; flex:1 1 100%; display:flex; align-items:center; gap:10px; }
#describe-preview { max-width:120px; max-height:140px; object-fit:contain; border-radius:8px; }
@media(max-width:1050px){ #custom-panel, #reference-panel { justify-content:flex-start; } .field-group.push-right { margin-left:0; } }
#source-preview-wrap { display:flex; align-items:center; flex-wrap:wrap; gap:12px; font-size:12px; }
#source-preview { width:120px; height:80px; object-fit:contain; background:#e4e6df; border-radius:6px; }
#detail-video { width:100%; max-height:75vh; }
.card.video-card .card-image,.card.video-card .card-status { aspect-ratio:5/3; }
.play-label { position:absolute; bottom:12px; left:12px; padding:5px 10px; border-radius:20px; background:#17282dcc; color:white; font-size:12px; }

.studio-nav { display:flex; flex-direction:column; gap:8px; }
.studio-nav .nav-item { display:flex; width:100%; border:1px solid transparent; text-align:left; cursor:pointer; }
.studio-nav .nav-item[aria-pressed="false"] { background:transparent; color:var(--muted); }
.card-meta { flex-wrap:wrap; gap:8px; }
.card-favorite { background:transparent; color:var(--red); padding:4px; font-size:12px; }

.page-heading { gap:24px; }
.heading-mode { margin-left:auto; }
@media(max-width:800px) { .page-heading {flex-wrap:wrap;} }
@media(max-width:650px) { .heading-mode {margin-left:0;} }

/* Narrow-screen drawer navigation (toggle and scrim are created by nav.js) */
.nav-toggle{display:none;width:34px;height:34px;padding:0;border-radius:8px;background:transparent;border:1px solid var(--line);color:var(--ink);font-size:16px;place-items:center;flex:0 0 auto}
.nav-scrim{position:fixed;inset:0;background:#25262366;z-index:65}
@media(max-width:650px){.nav-toggle{display:grid}}

#reference-preview {max-width:160px;max-height:180px;object-fit:contain;border-radius:8px;}

/* Authenticated administrator page */
.admin-main{max-width:1200px;margin:0 auto;padding:28px 24px}.admin-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.admin-toolbar{display:flex;gap:16px;align-items:center;margin:24px 0}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;background:var(--surface,#fff)}.admin-table th,.admin-table td{padding:16px;text-align:left;border-bottom:1px solid #e8e3da;white-space:nowrap}.admin-actions{display:flex;gap:8px}.admin-heading h1{margin:8px 0}@media(max-width:640px){.admin-main{padding:24px 14px}.admin-heading{align-items:flex-start;flex-direction:column}.admin-toolbar{flex-wrap:wrap}}

.avatar{overflow:hidden}.avatar img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit}.profile[href]{color:inherit;text-decoration:none}.profile[href]:hover{opacity:.8}

/* ============ 共享组件 · shared UI components ============ */
/* 下拉框：自绘弹层（select.js 在原生 select 上叠加按钮+列表），跨浏览器风格一致；箭头用纯CSS三角 */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.select{display:inline-flex;position:relative;min-width:120px}
.select select{position:absolute;inset:0;width:100%;height:var(--ctl);margin:0;appearance:none;-webkit-appearance:none;border:0;background:transparent;opacity:0;pointer-events:none}
.select-control{width:100%;height:var(--ctl);display:inline-flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;padding:0 30px 0 13px;font-size:12px;color:var(--ink);text-align:start;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.select::after{content:"";position:absolute;right:13px;top:50%;width:7px;height:7px;border-right:1.5px solid #686b63;border-bottom:1.5px solid #686b63;transform:translateY(-70%) rotate(45deg);pointer-events:none;transition:transform .15s}
.select.open::after{transform:translateY(-30%) rotate(225deg)}
.select-control:focus-visible{border-color:var(--focus-line)}
.select-control:disabled{opacity:.55;cursor:not-allowed}
.select.open .select-control{border-color:var(--focus-line)}
.select-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:40;min-width:100%;max-height:250px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px;margin:0;list-style:none}
.select-option{padding:9px 12px;border-radius:7px;font-size:12px;color:var(--ink);cursor:pointer;white-space:nowrap}
.select-option:hover,.select-option.active{background:#e9e8e1}
.select-option[aria-selected="true"]{background:#dedfd2;color:#535d49;font-weight:600}
/* 一体化控件组:label 作左半框、输入/下拉作右半框,共一个 40px 圆角框 */
.field-group { display:inline-flex; align-items:stretch; flex:0 0 auto; }
.field-group>label { display:inline-flex; align-items:center; height:var(--ctl); padding:0 13px; margin:0; background:#fff; border:1px solid var(--line); border-right:0; border-radius:8px 0 0 8px; color:var(--muted); font-size:12px; }
.field-group input { width:96px; height:var(--ctl); min-height:var(--ctl); border-radius:0 8px 8px 0; padding:0 10px; }
.field-group .select { width:auto; min-width:0; }
.field-group .select-control { border-radius:0 8px 8px 0; }
.field-group:has(.select.open)>label,.field-group:has(.select-control:focus-visible)>label,.field-group:has(input:focus-visible)>label { border-color:var(--focus-line); }

/* 文件选择 */
.file-field{width:100%;height:var(--ctl);line-height:calc(var(--ctl) - 2px);font-size:12px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:8px;padding:0 10px}
.file-field::file-selector-button{vertical-align:middle;margin-right:10px;height:24px;padding:0 12px;border:1px solid var(--line);border-radius:7px;background:transparent;color:#686b63;font:inherit;font-size:12px;line-height:22px;cursor:pointer}
.file-field:disabled{opacity:.55}
.file-field::file-selector-button:hover{background:#e9e8e1}

/* 复选框 */
.check{width:16px;height:16px;margin:0;flex-shrink:0;accent-color:var(--red)}

/* 分段/页签控件：选中态可由 .selected、aria-pressed 或 aria-selected 任一驱动 */
.segment{display:inline-flex;gap:4px;background:#e7e9df;border-radius:9px;padding:4px}
.segment button{height:32px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:6px;background:none;color:#878d7e;font-size:13px;font-weight:600;white-space:nowrap}
.segment button.selected,.segment button[aria-pressed="true"],.segment button[aria-selected="true"]{background:#fff;color:#535d49;border-color:#ecece4}/* 选中描边用rgb(236,236,228) */
.segment button:focus-visible{border-color:var(--focus-line)}

/* 按钮紧凑尺寸修饰符（配合 .primary / .quiet-button） */
.compact{padding:0 14px;font-size:12px}
.primary.compact{gap:12px}

/* 白卡片（.ai-config / .profile-card）内的柔和字段变体 */
.ai-config input,.ai-config textarea,.profile-card input:not([type=file]),.profile-card textarea{font-size:14px;background:#fafaf7}

/* 当前页导航高亮（原仅存在于 ai.css，上收保证各页一致） */
.studio-nav [aria-current=page]{background:#e0e1d6;color:var(--ink)}
@media(max-width:650px){.segment button{padding:8px 14px;font-size:12px}}

/* 焦点态：不用outline也不加阴影——边框或下划线指示；透明边框预留防尺寸跳动 */
input:focus-visible,textarea:focus-visible,select:focus-visible{border-color:var(--focus-line)}
.primary{border:1px solid transparent}.primary:focus-visible{border-color:var(--focus-line)}
.quiet-button:focus-visible,.ratio-chip:focus-visible{border-color:var(--focus-line)}
.nav-item:focus-visible{border-color:var(--focus-line)}
.brand{border:1px solid transparent}.brand:focus-visible{border-color:var(--focus-line)}
.profile[href]{border:1px solid transparent}.profile[href]:focus-visible{border-color:var(--focus-line)}
.close-button{border:1px solid transparent}.close-button:focus-visible{border-color:var(--focus-line)}
.card-image{border:1px solid transparent}.card-image:focus-visible{border-color:var(--focus-line)}
.square-cover{border:1px solid transparent}.square-cover:focus-visible{border-color:var(--focus-line)}
.text-button:focus-visible,.auth-switch a:focus-visible,.page-footer a:focus-visible,.square-like:focus-visible,.square-comment-delete:focus-visible,.card-favorite:focus-visible,.card-delete:focus-visible{text-decoration:underline;text-underline-offset:4px}
/* ========================================================= */
.heading-mode { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.heading-mode .mode-switch.segment { margin:0; flex:0 0 auto; }

/* 画廊卡片组件（2026-10-22，按用户要求全站统一浅色原风格）：工作区/抽卡坊作品卡共用。卡面无文字、无绿边，图片铺满，操作为图上右上圆形图标钮（收藏/分享/复制提示词/删除），排队与失败为纯动画占位；广场保持自有卡片风格不受影响。 */
.card{position:relative;box-shadow:0 14px 26px -20px rgba(60,50,30,.35);transition:transform .18s,box-shadow .18s}
.card:hover{transform:translateY(-3px);box-shadow:0 18px 34px -18px rgba(60,50,30,.42)}
.card-image img{transition:transform .3s ease}
.card-image:hover img{transform:scale(1.035)}
.card-actions{position:absolute;top:10px;right:10px;display:flex;gap:7px;z-index:2}
.card-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;padding:0;background:rgba(255,255,255,.9);border:1px solid var(--line);color:#6b7466;transition:background .15s,color .15s,border-color .15s}
.card-icon:hover{background:#fff;color:var(--red);border-color:#c9cdc0}
.card-favorite[aria-pressed="true"]{color:#b98a3e;border-color:#dcc9a0}
.card-delete{color:#9a887c}
.card-delete:hover{color:#ac5d4f;border-color:#dcbdb1}
.card-brew{position:relative;aspect-ratio:2/3;display:grid;place-items:center;background:linear-gradient(140deg,#edeee6,#f8f7f2);overflow:hidden}
.card-brew::before{content:"";position:absolute;inset:-45%;background:linear-gradient(115deg,transparent 42%,rgba(105,118,92,.1) 50%,transparent 58%);animation:brew-sweep 2.8s linear infinite}
.brew-ring{width:46px;height:46px;border-radius:50%;border:3px solid #d9ddcf;border-top-color:var(--green);animation:spin 1.1s linear infinite}
.brew-emblem{position:absolute;font-size:15px;color:#7d8871;animation:brew-twinkle 1.8s ease-in-out infinite}
.brew-fail{font-size:30px;font-weight:700;color:#bc6b58}
@keyframes brew-sweep{from{transform:translateX(-32%)}to{transform:translateX(32%)}}
@keyframes brew-twinkle{50%{opacity:.35;transform:scale(.82)}}
.play-badge{position:absolute;left:10px;bottom:10px;z-index:1;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.92);border:1px solid var(--line);color:var(--red);font-size:14px;padding:0 0 0 3px}
.card.video-card .card-image,.card.video-card .card-status,.card.video-card .card-brew{aspect-ratio:5/3}

/* 侧栏消息入口与消息中心弹窗（2026-10-22，按用户建议置于 .sidebar-bottom 头像栏上方，全站生效）：入口沿用 nav-item 观感（未读数+红点），点开 notify-dialog 走全站标准提示语言（同 confirm-dialog：白卡、22px 标题、close-button、text-button 次要操作、esc/遮罩可关）；列表行与空态复用现成组件。 */
.notify-entry{display:flex;align-items:center;gap:9px;width:100%;background:#dedfd2;border:1px solid transparent;border-radius:8px;padding:10px 13px;font-size:13px;font-weight:600;color:var(--ink);margin:0 0 12px}
.notify-entry:hover{background:#d8d9cb}.notify-entry:focus-visible{border-color:var(--focus-line)}
.notify-entry b{margin-left:auto;color:#a9544a;font-size:11px;font-weight:700}.notify-entry .nav-dot{margin-left:4px;width:6px;height:6px}
.notify-dialog{width:min(560px,92vw);max-height:88vh;padding:24px 26px;position:relative;background:#fff}
.notify-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding-right:46px}.notify-head h2{font-size:22px;letter-spacing:-.04em;margin:0}.notify-head i{font-style:normal;font-size:12px;color:var(--muted)}.notify-head .text-button{font-size:12px}.notify-head .text-button:first-of-type{margin-left:auto} /* 2026-10-23 头部加「清除记录」成第二枚 text-button：只让首个挂 margin-left:auto，两钮成组靠右不被撑开 */
.notify-list{max-height:56vh;overflow:auto;display:flex;flex-direction:column;gap:7px}
.notify-row{display:flex;align-items:center;gap:11px;text-align:left;min-width:0;width:100%;padding:10px 12px;background:#fafaf6;border:1px solid transparent;border-radius:10px;cursor:pointer;color:var(--ink)}
.notify-row:hover{border-color:var(--red);background:#fafbf7}.notify-row:focus-visible{border-color:var(--focus-line)}
.notify-row .avatar{width:30px;height:30px;flex-shrink:0;font-size:12px}.notify-body{flex:1;min-width:0}
.notify-body strong{display:block;font-size:13px;font-weight:500;line-height:1.6;overflow-wrap:anywhere}.notify-row.read strong{color:var(--muted);font-weight:400}
.notify-body small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.notify-row .nav-dot{width:6px;height:6px;flex-shrink:0}
.notify-more{margin-top:12px;width:100%}.notify-empty{min-height:130px;margin-top:4px}
@media (max-width:650px){.notify-dialog{padding:20px 16px}}
/* 弹窗图片查看器（2026-10-27，viewer.js 注入 .viewer-nav/.viewer-fs/.viewer-page）：图片区左右切换 + 全屏；工作区/收藏/抽卡坊详情弹窗与广场帖子弹窗共用，全站一致。 */
.detail-image-wrap,.square-full-image{position:relative;touch-action:pan-y;user-select:none}
.detail-image-wrap img,.square-full-image img{-webkit-user-drag:none}
.viewer-nav,.viewer-fs{position:absolute;z-index:3;display:grid;place-items:center;background:#fff9;color:#777;line-height:1;transition:background .15s}
.viewer-nav{top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%}
.viewer-nav.viewer-prev{left:12px}.viewer-nav.viewer-next{right:12px}
.viewer-fs{top:12px;left:12px;width:40px;height:40px;border-radius:10px}
.viewer-nav svg,.viewer-fs svg{display:block}
.viewer-nav:hover,.viewer-fs:hover{background:#fff}
.viewer-nav:focus-visible,.viewer-fs:focus-visible{box-shadow:0 0 0 3px #ffffffcc}
.viewer-page{position:absolute;z-index:3;bottom:12px;left:50%;transform:translateX(-50%);background:#20241bcc;color:#fff;font-size:11px;padding:4px 12px;border-radius:20px;pointer-events:none}
.detail-image-wrap.slide-next img,.square-full-image.slide-next img{animation:viewer-in-next .26s ease}
.detail-image-wrap.slide-prev img,.square-full-image.slide-prev img{animation:viewer-in-prev .26s ease}
@keyframes viewer-in-next{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes viewer-in-prev{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
/* 全屏：dialog 元素本身进原生全屏，失败回退（旧浏览器）走同类名铺满视口；两种模式下信息/评论区隐藏、图片独占。 */
.detail-dialog.is-fs,.square-dialog.is-fs{width:100vw;max-width:none;height:100vh;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;background:#141511}
.detail-dialog.is-fs::backdrop,.square-dialog.is-fs::backdrop{background:#141511}
.detail-dialog.is-fs .detail-layout,.square-dialog.is-fs .square-detail{grid-template-columns:minmax(0,1fr);height:100%}
.detail-dialog.is-fs .detail-info,.square-dialog.is-fs .square-discussion{display:none}
.detail-dialog.is-fs .detail-image-wrap,.square-dialog.is-fs .square-full-image{min-height:0;height:100%;background:#141511}
.detail-dialog.is-fs .detail-image-wrap img{max-height:100vh}
.detail-dialog.is-fs .detail-image-wrap video{max-width:100vw;max-height:100vh}
.square-dialog.is-fs .square-full-image img{max-height:100vh}
@media(max-width:650px){.viewer-nav{width:34px;height:34px}.viewer-nav.viewer-prev{left:8px}.viewer-nav.viewer-next{right:8px}.viewer-fs{top:8px;left:8px;width:34px;height:34px}}
/* 卡片悬浮操作钮（2026-10-27 用户要求）：收藏/分享/复制/删除默认隐藏，鼠标进入卡片浮现、移出隐藏；触屏无 hover 保持常显；键盘 Tab 进入（focus-within）同样显示。工作区/收藏与抽卡坊共用 .card-actions，一处规则全站一致。 */
@media(hover:hover) and (pointer:fine){.card .card-actions{opacity:0;transition:opacity .18s ease}.card:hover .card-actions,.card:focus-within .card-actions{opacity:1}}
