:root {
  --art-p1:#4F46E5; --art-p2:#7C3AED;
  --art-soft:#EEF2FF;
  --art-warm:#FF7A59; --art-gold:#F59E0B;
  --art-bg:#F7F5FF;
  --radius:1rem;
}
html,body { font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif; background:var(--art-bg); color:#1F2937; }
a { text-decoration:none; }
.text-primary-grad{ background:linear-gradient(90deg,var(--art-p1),var(--art-p2)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }

.art-nav{ background:#fff; box-shadow:0 2px 12px rgba(79,70,229,.08); }
.art-nav .navbar-brand{ font-weight:700; color:var(--art-p1); }
.brand-badge{ display:inline-flex; width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--art-p1),var(--art-p2));color:#fff;align-items:center;justify-content:center;font-weight:800; }
.nav-user{ display:flex;align-items:center;gap:10px; }

.card{ border:none; border-radius:var(--radius); box-shadow:0 4px 18px rgba(79,70,229,.07); }
.btn-art{ background:linear-gradient(90deg,var(--art-p1),var(--art-p2)); color:#fff; border:none; border-radius:.6rem; font-weight:600; }
.btn-art:hover{ filter:brightness(1.1); color:#fff; }
.btn-art:disabled{ filter:grayscale(.7); }
.btn-outline-art{ border:1px solid var(--art-p1); color:var(--art-p1); border-radius:.6rem; font-weight:600; background:#fff; }
.btn-outline-art:hover{ background:var(--art-soft); }

.hero{ background:linear-gradient(120deg,#EEF2FF 0%,#FDF2F8 55%,#FFF7ED 100%); border-radius:1.4rem; }
.hero .big-title{ font-size:clamp(1.6rem,4vw,2.6rem); font-weight:800; }
.stat-chip{ background:#fff; border-radius:1rem; padding:.8rem 1rem; box-shadow:0 4px 14px rgba(79,70,229,.08); text-align:center; }
.stat-chip .num{ font-size:1.5rem;font-weight:800;color:var(--art-p1); }
.stat-chip .lbl{ color:#6B7280;font-size:.85rem; }

.form-panel{ background:#fff; border-radius:1.2rem; box-shadow:0 8px 30px rgba(79,70,229,.10); padding:1.4rem; }
.auth-card{ max-width:440px; margin:0 auto; }
.role-card{ cursor:pointer; border:2px solid #E5E7EB; border-radius:1rem; transition:.2s; }
.role-card:hover,.role-card:focus{ border-color:var(--art-p1); box-shadow:0 8px 22px rgba(79,70,229,.15); }
.role-card.selected{ border-color:var(--art-p2); background:var(--art-soft); }
.role-card .icon{ font-size:2.2rem; }

.work-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.8rem; }
.work-card{ background:#fff;border-radius:1rem;overflow:hidden;box-shadow:0 4px 14px rgba(79,70,229,.08); cursor:pointer; transition:.2s; }
.work-card:hover{ transform:translateY(-3px); box-shadow:0 10px 24px rgba(79,70,229,.16); }
.work-card .thumb{ width:100%; aspect-ratio:4/3; object-fit:cover; display:block; background:#EEF2FF; }
.work-card .cap{ padding:.5rem .6rem; }
.work-card .cap b{ font-size:.9rem; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.work-card .cap small{ color:#6B7280; }

.countdown .cd-item{ background:linear-gradient(160deg,var(--art-p1),var(--art-p2)); color:#fff; border-radius:.7rem; min-width:56px; text-align:center; padding:.3rem .2rem; }
.countdown .cd-item .v{ font-size:1.3rem; font-weight:800; }
.countdown .cd-item .u{ font-size:.7rem; opacity:.85; }

.thumb-lg{ width:100%; max-height:520px; object-fit:contain; background:#fff; border-radius:.8rem; }
.img-loading{ filter:blur(3px); }
.dropzone{ border:2px dashed #C7C9F5; border-radius:1rem; background:#FBFBFF; padding:2rem 1rem; text-align:center; transition:.2s; cursor:pointer; }
.dropzone.hover{ border-color:var(--art-p2); background:var(--art-soft); }

.badge-level{ border-radius:.5rem; font-weight:600; }
.footer-note{ color:#9CA3AF; font-size:.85rem; text-align:center; padding:1.2rem; }

.min-width-0{ min-width:0; }
.detail-table th{ font-weight:500; font-size:.85rem; }
.detail-table td{ font-size:.9rem; }

/* 图片灯箱（支持滚轮缩放 / 拖动平移 / 双击复位） */
.lightbox-mask{ position:fixed; inset:0; background:rgba(17,24,39,.9); z-index:3000; display:none; align-items:center; justify-content:center; padding:2vw; overflow:hidden; touch-action:none; }
.lightbox-mask.show{ display:flex; }
.lightbox-mask img{ max-width:94vw; max-height:88vh; border-radius:.6rem; background:#fff; box-shadow:0 12px 40px rgba(0,0,0,.4); transform-origin:center center; will-change:transform; user-select:none; -webkit-user-drag:none; }
.lightbox-mask .lb-close{ position:absolute; top:14px; right:22px; color:#fff; font-size:2.2rem; line-height:1; cursor:pointer; opacity:.9; z-index:2; }
.lightbox-mask .lb-close:hover{ opacity:.7; }
.lightbox-mask .lb-reset{ position:absolute; left:50%; bottom:22px; transform:translateX(-50%); z-index:2; color:#fff; font-size:.85rem; padding:6px 18px; border-radius:999px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.35); cursor:pointer; }
.lightbox-mask .lb-reset:hover{ background:rgba(255,255,255,.28); }
.lightbox-mask .lb-loading{ color:#fff; font-size:.9rem; }

/* 上传状态反馈 */
.dropzone .dz-chosen{ color:var(--art-p1); font-weight:600; }
