/* 藏鲸：取自蓝青色书形 Logo 的工作台配色。 */
body,
.app,
.main { background: #f7fbff; }
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible { outline: 3px solid #79d7ed; outline-offset: 2px; }

.rail {
  background: #09284b;
  border-right-color: #16466d;
}
.rail-logo {
  height: 78px;
  margin-bottom: 6px;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.rail-logo .rail-mark { width: 51px; height: 51px; }
.rail-logo span { color: #eff9ff; font-size: 16px; font-weight: 800; letter-spacing: .12em; line-height: 1.1; }
.rail-nav button,
.rail-bottom button { color: #a7bfd6; }
.nav-icon { width: 24px; height: 24px; display: block; }
.rail-nav button:hover,
.rail-bottom button:hover { background: #16446e; color: #fff; }
.rail-nav button.active,
.rail-bottom button.active { background: #1469cf; color: #fff; }
.rail-nav button.active:before,
.rail-bottom button.active:before { content: ""; position: absolute; left: -10px; top: 10px; bottom: 10px; width: 3px; border-radius: 3px; background: #52d6ef; }
.rail-bottom { width: 100%; display: grid; justify-items: center; padding-top: 10px; border-top: 1px solid #315578; }

.sidebar { background: #f3f8fe; }
.side-brand small { color: #7d91a9; }
.project-select { border-color: #d8e5f3; }
.project-select:hover { border-color: #a9c9ea; }
.side-section { color: #7d91a8; }
.side-item { color: #536b83; }
.side-item:hover { background: #e9f3fd; }
.side-item.active { background: #e1f0ff; color: var(--pine-dark); }
.side-item .dot { background: #9ac5e7; }
.side-item.active .dot { background: #17b9db; }
.side-item .count { color: #8397ac; }
.side-note { background: #e7f1fb; color: #59738d; }
.topbar { background: #fff; }
.breadcrumb { color: #71869a; }

.page-head { position: relative; padding-left: 15px; }
.page-head:before {
  content: "";
  position: absolute;
  top: 3px;
  bottom: 3px;
  left: 0;
  width: 3px;
  border-radius: 3px;
  background: #16bddf;
}
.eyebrow { color: #1176bd; }
.page-head h1 { color: #16314f; }
.stat,
.panel { background: #fff; border-color: var(--line); }
.stat:after { border-color: #e6f2fc; }
.stat:nth-child(3) .stat-value { color: #a6661e; }
.stat:nth-child(4) .stat-value { color: var(--red); }
.table-head { background: #f3f8fe; color: #6d8299; }
.table-row { border-bottom-color: #eaf1f8; }
.table-row:hover { background: #f2f9ff; }
.table-cell { color: #647c92; }
.file-icon { background: #e6f3ff; color: #1469b9; }
.file-icon.orange { background: #fff2df; color: #ae691d; }
.search { background: #fbfdff; }
.filters { background: #edf5fc; }
.filters button.active { color: var(--pine-dark); }
.item-row.active,
.folder.active,
.review-item.active { background: #e6f3ff; }
.item-row:hover,
.folder:hover,
.review-item:hover { background: #f1f8ff; }

.primary,
.dropzone label {
  background: var(--pine);
  border-color: var(--pine);
  color: #fff;
  box-shadow: 0 6px 14px rgba(20, 105, 207, .17);
}
.primary:hover,
.dropzone label:hover { background: var(--pine-dark); border-color: var(--pine-dark); }
.ghost:hover,
.small-button:hover { background: #eef7ff; border-color: #b7d2ec; }
.soft { border-color: #bfddf3; }
.soft:hover { background: #dcefff; }
.badge { background: #e9f0f7; color: #5b7086; }
.badge.review { background: #fff3e2; color: #915812; }
.badge.done { background: #e2f2ff; color: #095ca7; }
.badge.queued { background: #edf3f8; color: #60758a; }
.source-box { background: #f7fbff; border-color: #dae9f7; color: #526b83; }
.folder { color: #526b83; }
.folder small { color: #8297aa; }
.object-card.active { border-color: #8ec5eb; }
.offer-card { background: #f0f8ff; border-color: #c5e1f7; }
.term { border-color: #d8e8f6; }
.reference-card { border-color: #c1d9ed; background: #f8fcff; }
.evidence { background: #eef7ff; border-left-color: #22b9dc; color: #3e5d78; }
.spu-field.special { background: #fff5e8; border-left-color: #dc9c45; }
.spu-thumb { background: #edf5fb; }
.promotion-node code { color: #71869a; }
.promotion-branch { border-left-color: #cde3f3; }
.edit-form label { color: #536c84; }
.edit-form input,
.edit-form textarea,
.edit-form select,
.promotion-review-form input,
.benchmark-form input { border-color: #cedfed; }
.edit-form input:focus,
.edit-form textarea:focus,
.edit-form select:focus { border-color: #4ba7dc; box-shadow: 0 0 0 3px #e0f4ff; }
.modal-backdrop { background: rgba(8, 31, 57, .5); }
.modal { box-shadow: 0 25px 90px rgba(9, 39, 76, .22); }
.modal-tabs button.active { color: var(--pine-dark); border-color: #a8d1ee; background: #e7f3ff; }
.dropzone { border-color: #9dcaea; background: #f5fbff; }
.upload-progress { border-color: #c5e1f3; background: #f2faff; }
.toast { background: #103e6b; box-shadow: 0 14px 35px rgba(8, 39, 76, .23); }
.preview-card { background: #d9ecfa; color: #244565; }
.preview-card:before { background: #70cfee; }
.preview-card:after { border-color: #3a9cdd; }
.auth-screen { background: #e7f2fc; }
.auth-card { background: #09284b; color: #fff; border-color: #16466d; box-shadow: 0 20px 60px rgba(9, 40, 75, .2); }
.auth-card img { width: 92px; height: 92px; padding: 0; background: transparent; border: 0; border-radius: 0; }
.auth-card h1 { color: #fff; }
.auth-card p,
.auth-card .edit-form label { color: #c4ddf2; }

@media (max-width: 850px) {
  .mobile-section-nav button.active { color: var(--pine-dark); background: var(--pine-soft); border-color: #a9d2ef; }
}
/* 三入口：顶部项目切换、原件、推广对象。 */
.top-context{display:flex;align-items:center;gap:8px;min-width:0;color:#607891;font-size:12px}
.top-project{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.top-project select{max-width:210px;min-width:90px;border:0;border-radius:6px;background:transparent;color:#183c63;font-weight:700;padding:6px 18px 6px 2px;cursor:pointer;text-overflow:ellipsis}
.top-project select:hover{background:#eaf5ff}
.top-context-suffix{color:#8297ab;white-space:nowrap}
.side-add{width:calc(100% - 12px);margin:11px 6px 0;border:1px dashed #a9cde8;border-radius:7px;padding:9px 11px;background:#f8fcff;color:#2268a8;text-align:left;font-size:12px;font-weight:700}
.side-add:hover{background:#e7f4ff}
.side-rename{border:0;background:transparent;color:#6786a2;font-size:11px;text-align:left;padding:8px 19px}
.side-rename:hover{color:#0c5aa7}
.api-docs-links{display:flex;gap:9px;flex-wrap:wrap;padding:18px 23px 8px}
.api-docs-links .small-button{text-decoration:none}
.api-docs-note{padding:0 23px 19px;margin:0}
.modal-body>.api-docs-links{padding:14px 0 0}
.token-form{padding:17px 0 10px}
.token-list{max-height:220px;overflow-y:auto;border:1px solid var(--line);border-radius:8px}
.token-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border-top:1px solid var(--line)}
.token-row:first-child{border-top:0}
.token-row strong{display:block;font-size:12px}
.token-row small{display:block;color:var(--muted);margin-top:4px;font-size:10px}
.new-token{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-top:13px;padding:13px;background:#e9f6ff;border:1px solid #a9d9f3;border-radius:9px}
.new-token strong{width:100%;font-size:12px;color:#125d9a}
.new-token input{flex:1 1 270px;min-width:0;padding:8px 9px;border:1px solid #bfdaec;border-radius:6px;font-family:monospace;font-size:12px}
.new-token small{color:#527a98;font-size:10px;line-height:1.5}
.mobile-filter{display:none}
.files-panel{max-width:1100px}
.files-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:15px 20px;border-bottom:1px solid var(--line)}
.files-toolbar .search{flex:1 1 210px}
.status-tabs{display:flex;align-items:center;gap:2px;flex-wrap:wrap;background:#edf5fc;border-radius:8px;padding:3px}
.status-tabs button{border:0;border-radius:6px;background:transparent;color:#60788f;padding:7px 10px;font-size:11px;white-space:nowrap}
.status-tabs button.active{background:#fff;color:#095ca7;box-shadow:0 1px 5px rgba(16,69,117,.12);font-weight:700}
.file-row{border-bottom:1px solid #eaf1f8}
.file-row:last-child{border-bottom:0}
.file-row-main{display:flex;align-items:center;gap:12px;padding:14px 20px}
.archive-pick{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:11px;white-space:nowrap;cursor:pointer}
.archive-pick input{accent-color:#0878c8}
.archive-action{white-space:nowrap;padding:6px 8px;font-size:11px}
.archive-ref,.archive-result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}
.archive-ref span{overflow-wrap:anywhere}.archive-result{display:grid}.archive-result.failed{color:#a23a3a}.archive-result-list{padding:0 28px 22px}
.retry-collection{margin:18px 0}.retry-collection p{margin:7px 0 14px;color:var(--muted);font-size:12px}
.file-row-main .file-icon{flex:none}
.file-entry{flex:1;min-width:0;display:grid;gap:5px}
.file-entry .file-name{width:100%;min-width:0}
.file-entry>small{color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.static-name{display:block;cursor:default}
.download-icon{width:35px;height:35px;flex:none;display:grid;place-items:center;border:1px solid #d8e7f4;border-radius:8px;background:#fff;color:#276d9f;padding:7px}
.download-icon:hover{background:#e9f6ff;border-color:#9fcbea;color:#075aa2}
.download-icon svg{width:19px;height:19px}
.file-icon.folder{width:38px;height:42px;min-width:38px;display:grid;place-items:center;padding:0;border-radius:8px;background:#dceeff;color:#1764ad;font-size:25px;font-family:system-ui;line-height:1}
.file-icon.link{background:#e5f1ff;color:#1469cf;font-family:system-ui;font-size:22px}
.file-icon.file-type-icon{display:grid;place-items:center;flex:none;width:38px;height:42px;min-width:38px;padding:0;border-radius:0;background:transparent;color:inherit;font-size:inherit}
.file-type-icon svg{display:block;width:33px;height:33px;overflow:visible}
.file-name{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);text-align:left;padding:0}
.file-name:hover strong{color:var(--pine)}
.file-name strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.file-name small{display:block;color:var(--muted);margin-top:5px;font-size:11px}
.zip-toggle{flex:none;border:1px solid #c7def0;background:#f4faff;border-radius:7px;color:#215f96;padding:7px 9px;font-size:11px}
.zip-toggle:hover{background:#e2f2ff}
.archive-tabs{display:flex;gap:3px;padding:12px 19px 0;border-bottom:1px solid var(--line)}
.archive-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:8px 12px 12px;color:#6a8299;font-size:12px;font-weight:650}
.archive-tabs button.active{color:#075ca8;border-bottom-color:#16bddf}
.archive-tabs button span{display:inline-block;margin-left:4px;padding:2px 6px;border-radius:9px;background:#eef5fb;color:#6c849b;font-size:10px}
.archive-badge{flex:none;font-size:10px;font-weight:700;padding:5px 8px;border-radius:12px;white-space:nowrap}
.archive-badge.archived{color:#0b689e;background:#e6f6ff}
.archive-badge.unarchived{color:#7b8797;background:#f0f3f7}
.zip-tree{margin:0 19px 16px 70px;padding:7px 13px;background:#f6faff;border:1px solid #dfecf7;border-radius:9px}
.zip-folder{margin:2px 0}
.zip-folder-row{display:flex;align-items:flex-start;gap:8px}
.zip-folder-row>.zip-folder{flex:1;min-width:0}
.zip-folder-row>.download-icon{flex:none;width:29px;height:29px;padding:5px;margin-top:1px}
.zip-folder summary{cursor:pointer;padding:5px 3px;color:#315b7e;font-size:12px;font-weight:700}
.zip-folder-summary{display:flex;align-items:center;gap:8px;list-style:none}
.zip-folder-summary::-webkit-details-marker{display:none}
.zip-folder-summary::marker{content:""}
.zip-folder-summary .file-icon.file-type-icon{width:26px;height:27px;min-width:26px}
.zip-folder-summary .file-type-icon svg{width:24px;height:24px}
.zip-folder-name{min-width:0;overflow-wrap:anywhere}
.zip-chevron{flex:none;color:#537d9d;font-size:14px;line-height:1;transition:transform .16s ease}
.zip-folder[open]>.zip-folder-summary .zip-chevron{transform:rotate(90deg)}
.zip-nested{margin-left:16px;padding-left:12px;border-left:1px solid #c8dfef}
.zip-file{width:100%;border:0;background:transparent;display:flex;align-items:center;gap:9px;text-align:left;color:#334f69;padding:7px 4px;font-size:12px}
.zip-file:hover{background:#eaf4fd}
.zip-file .file-name{flex:1;min-width:0}
.zip-file .download-icon{width:29px;height:29px;padding:5px}
.zip-file .archive-badge{margin-left:auto}
.zip-file .file-icon.file-type-icon{width:26px;height:27px;min-width:26px}
.zip-file .file-type-icon svg{width:24px;height:24px}
.zip-file span:nth-child(2){flex:1;overflow-wrap:anywhere}
.zip-file small{color:#7c91a5;white-space:nowrap}
.zip-loading{margin:0 20px 14px 70px;color:var(--muted);font-size:11px}
.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:15px;padding:20px}
.image-card{min-width:0;border:1px solid #dfebf5;border-radius:11px;background:#fff;overflow:hidden}
.image-card:hover{border-color:#9dcced;box-shadow:0 7px 22px rgba(16,80,140,.1)}
.image-card-open{width:100%;border:0;background:transparent;text-align:left;padding:10px;color:var(--ink)}
.image-card-open strong{display:block;margin-top:9px;font-size:11px;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.image-card-name{display:flex;align-items:center;min-width:0;gap:5px;margin-top:9px}
.image-card-name .file-icon.file-type-icon{width:19px;height:19px;min-width:19px}
.image-card-name .file-type-icon svg{width:18px;height:18px}
.image-card-name strong{min-width:0;margin-top:0}
.image-preview{height:148px;display:grid;place-items:center;border-radius:7px;background:#edf5fc;color:#8ba9c2;font-size:11px;overflow:hidden}
.image-preview img{width:100%;height:100%;object-fit:contain}
.image-card-foot{display:flex;align-items:center;justify-content:space-between;padding:0 10px 10px}
.image-card-foot .download-icon{width:30px;height:30px;padding:5px}
.image-card[hidden]{display:none}
.preview-overlay{position:fixed;inset:0;z-index:1000;padding:30px;background:rgba(5,20,40,.86);display:grid;place-items:center}
.preview-window{width:min(1200px,100%);height:min(900px,100%);display:flex;flex-direction:column;border:1px solid #325878;border-radius:14px;background:#0c2340;box-shadow:0 25px 80px rgba(0,0,0,.4);overflow:hidden}
.preview-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 18px;color:#f3f9ff;border-bottom:1px solid #31506e}
.preview-heading strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:70vw}
.preview-heading small{display:block;color:#9bb9d2;margin-top:4px;font-size:11px}
.preview-actions{display:flex;gap:9px;align-items:center}
.preview-actions .download-icon{background:#163d64;border-color:#42698c;color:#d7efff}
.viewer-close{width:35px;height:35px;border:0;border-radius:7px;background:#163d64;color:#e8f7ff;font-size:24px;line-height:1}
.viewer-close:hover,.viewer-step:hover{background:#246092}
.preview-stage{display:flex;align-items:center;justify-content:center;gap:12px;flex:1;min-height:0;padding:18px}
.viewer-media{position:relative;flex:1;min-width:0;min-height:0;height:100%;display:grid;place-items:center;overflow:hidden}
.viewer-media img,.viewer-media video{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}
.viewer-media video{width:100%;height:100%}
.viewer-loading{position:absolute;color:#c7dced;font-size:13px;text-align:center;pointer-events:none}
.viewer-step{width:42px;height:56px;flex:none;border:0;border-radius:8px;background:#163d64;color:#eff9ff;font-size:36px;line-height:1}
.viewer-step:disabled{opacity:.25;cursor:default}
@media(max-width:650px){.image-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:10px}.image-preview{height:120px}.preview-overlay{padding:8px}.preview-stage{gap:2px;padding:5px}.viewer-step{width:29px;height:46px;font-size:27px}.preview-heading{padding:9px}.preview-heading strong{max-width:55vw}}
.inline-link{border:0;padding:0;background:transparent;color:var(--pine);font-weight:700}
.inline-link:hover{text-decoration:underline}
.related-object{width:100%;display:block;text-align:left;background:#f6fbff;border:1px solid #dbeaf6;border-radius:7px;padding:11px 13px;margin-bottom:8px;color:#1d466a}
.related-object:hover{background:#eaf5ff}
.detail-page>.small-button:last-child{margin-top:18px}
.record-count{color:#52718b;font-size:12px;font-weight:700;margin:0 0 13px}
.object-record{max-width:1100px;margin-bottom:18px}
.object-hero{display:grid;grid-template-columns:170px minmax(0,1fr);gap:23px;padding:22px 26px;border-bottom:1px solid var(--line)}
.object-cover{width:170px;height:170px;border-radius:10px;background:linear-gradient(145deg,#edfaff,#ddecfa);display:grid;place-items:center;color:#5d93bd;font-size:12px;font-weight:700;overflow:hidden}
.object-cover img,.variant-cover img,.record-thumb img{width:100%;height:100%;object-fit:contain}
.object-kicker{color:#1376ba;font-size:10px;font-weight:800;letter-spacing:.08em}
.object-intro h2{margin:7px 0 9px;font-size:22px;line-height:1.35}
.object-intro p{color:#5e7389;font-size:12px;line-height:1.7;margin:12px 0 0}
.object-meta{display:flex;gap:11px;flex-wrap:wrap;align-items:center}
.object-meta label{display:inline-flex;gap:5px;align-items:center;color:#72879b;font-size:11px}
.object-meta select{max-width:145px;padding:5px 7px;color:#1b5c96;background:#f5fbff;border:1px solid #c8dfef;border-radius:6px;font-size:11px}
.object-content{padding:19px 26px 24px}
.object-content .spu-field,.variant-record .spu-field{max-width:850px;border-top:1px solid #edf3f8;padding-top:10px}
.object-content .spu-field:first-child{border-top:0}
.object-content .spu-field.special,.variant-record .spu-field.special{border-top:0}
.record-empty{color:var(--muted);font-size:12px}
.record-gallery{display:flex;flex-wrap:wrap;gap:9px;margin:16px 0}
.record-thumb{width:90px;height:90px;border-radius:8px;background:#f0f7fd;display:grid;place-items:center;color:#7d9db5;overflow:hidden;font-size:11px}
.record-sources{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.record-sources h3{font-size:12px;margin:0 0 10px}
.record-sources h3 small{color:#7890a5;font-weight:500}
.source-reference{display:grid;gap:4px;width:100%;padding:10px 12px;margin:7px 0;border:1px solid #dceaf6;border-radius:7px;background:#f8fbff;text-align:left}
.source-reference:hover{background:#ebf6ff;border-color:#b3d6ee}
.source-reference strong{color:#24577f;font-size:11px}
.source-reference small{color:#7b8ea1;overflow-wrap:anywhere}
.source-reference span{color:#4a657d;font-size:11px;line-height:1.55}
.variant-group{border-top:1px solid var(--line);padding:0 26px 20px}
.variant-group>summary{padding:16px 0;color:#1b5485;font-size:12px;font-weight:800;cursor:pointer}
.variant-record{padding:16px 0;border-top:1px solid #e7eff6}
.variant-heading{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.variant-heading h3{font-size:14px;margin:4px 0 7px}
.variant-cover{width:64px;height:64px;flex:none;border-radius:7px;background:#edf6fe;color:#72a0c4;display:grid;place-items:center;overflow:hidden;font-size:10px}
.variant-record .record-sources{margin-top:11px}
.promotion-review-form{border-top:1px solid #e6eef6;padding-top:14px}
@media(max-width:650px){
.top-context{gap:3px}.top-project select{max-width:115px}.top-context-suffix{font-size:10px}
.file-row-main{flex-wrap:wrap;padding:12px;gap:8px}.file-name{flex-basis:calc(100% - 48px)}.zip-toggle{margin-left:42px}.zip-tree{margin:0 9px 11px 43px}
.object-hero{grid-template-columns:100px minmax(0,1fr);gap:13px;padding:15px}.object-cover{width:100px;height:100px}.object-intro h2{font-size:17px}.object-content{padding:14px 16px}.variant-group{padding:0 16px 16px}
}
@media(max-width:850px){
.mobile-filter{display:flex;gap:6px;overflow-x:auto;margin:0 0 14px;padding-bottom:3px;scrollbar-width:thin}
.mobile-filter button{flex:none;background:#fff;border:1px solid #cfe2f2;border-radius:7px;color:#55748f;font-size:11px;padding:7px 10px}
.mobile-filter button.active{background:#e1f0ff;border-color:#8ac0e8;color:#0d62ab;font-weight:700}
}
