/* ============================================================
   万象 Studio · 设计层（polish.css · v5.0.0）
   加载顺序最后，负责全部视觉增量：字体、星晷时钟、秒针光环、
   跟手极光、卡片追光、工具栏、项目卡、交付台、模态与动效。
   不做功能改动；类名与 polish.js 的 SPOTLIGHT 列表保持同步。
   ============================================================ */

/* 秒针扫角（JS 每 120ms 写入，角度制） */
@property --sweep { syntax: "<angle>"; initial-value: 0deg; inherits: true; }

:root {
  --nebula: #72e6ff;
  --pulsar: #a989ff;
  --sprite: #63f1c3;
  --ember: #ffc86b;
  --font-display: "Bahnschrift", "Microsoft YaHei", system-ui, sans-serif;
  --font-mono: "Cascadia Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;
  --sx: 50%;
  --sy: 50%;
}
body { font-family: var(--font-display); }
button, input, select, textarea { font-family: inherit; }

/* ---------- 跟手极光（环境光，衬在内容之下、网格之上） ---------- */
.cursor-aurora {
  position: fixed;
  z-index: 0;
  left: 0;
  top: 0;
  width: 560px;
  height: 560px;
  pointer-events: none;
  background:
    radial-gradient(circle, rgba(114, 230, 255, .11), rgba(169, 137, 255, .07) 40%, transparent 68%);
  filter: blur(6px);
  will-change: transform;
}
main { position: relative; z-index: 1; }
.inbox, .modal, .toast { position: fixed; }

/* ---------- 通用卡片追光（spotlight，使用 --sx/--sy，避开 about 页的 --mx/--my） ---------- */
.project, .stats article, .launch-grid > a, .service-grid a, .acrylic-card,
.delivery-tools button, .export-cards button, .api-connection,
.community-strip, .studio-cover-generator, .side-account, .side-clock, .header-clock {
  position: relative;
}
.project::after, .stats article::after, .launch-grid > a::after, .service-grid a::after,
.acrylic-card::after, .delivery-tools button::after, .export-cards button::after,
.api-connection::after, .community-strip::after, .studio-cover-generator::after,
.side-account::after, .side-clock::after, .header-clock::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  transition: opacity .35s ease;
  background: radial-gradient(260px circle at var(--sx) var(--sy),
    rgba(114, 230, 255, .11), rgba(169, 137, 255, .05) 45%, transparent 68%);
}
@media (hover: hover) {
  .project:hover::after, .stats article:hover::after, .launch-grid > a:hover::after,
  .service-grid a:hover::after, .acrylic-card:hover::after, .delivery-tools button:hover::after,
  .export-cards button:hover::after, .api-connection:hover::after, .community-strip:hover::after,
  .studio-cover-generator:hover::after, .side-account:hover::after, .side-clock:hover::after,
  .header-clock:hover::after { opacity: 1; }
}

/* ---------- 字体骨架 ---------- */
.brand b { font-family: var(--font-display); font-weight: 600; letter-spacing: .01em; }
header h1 { font-family: var(--font-display); font-weight: 600; }
.kicker { display: inline-flex; align-items: center; gap: 7px; }
.kicker::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--nebula);
  box-shadow: 0 0 10px var(--nebula);
}

/* ---------- 侧栏：总控台气质 ---------- */
.side {
  border-right: 1px solid rgba(150, 200, 255, .10);
  background: linear-gradient(178deg, rgba(10, 15, 30, .94), rgba(8, 10, 22, .88));
  box-shadow: 30px 0 90px rgba(0, 0, 0, .30);
}
.brand > i { animation: brand-breathe 5.5s ease-in-out infinite; }
@keyframes brand-breathe {
  50% { transform: scale(1.07); box-shadow: 0 0 36px rgba(114, 230, 255, .55); }
}
.brand small::after { content: " · HUB"; color: var(--nebula); }

.side nav a { transition: transform .22s ease, color .2s, background .2s, border-color .2s; }
@media (hover: hover) {
  .side nav a:hover { transform: translateX(4px); }
}
.side nav a.active {
  background: linear-gradient(90deg, rgba(114, 230, 255, .14), rgba(169, 137, 255, .06));
  border-color: rgba(114, 230, 255, .28);
}
.side nav a.active::before {
  content: "";
  position: absolute;
  left: -19px;
  top: 50%;
  width: 3px;
  height: 62%;
  border-radius: 0 3px 3px 0;
  transform: translateY(-50%);
  background: linear-gradient(180deg, var(--nebula), var(--pulsar));
  box-shadow: 0 0 12px rgba(114, 230, 255, .6);
}
.side nav a span { transition: transform .22s ease; }
.side nav a:hover span { transform: scale(1.08); }

/* ---------- 星晷时钟（侧栏）：秒针光环 + 光点 + 农历/干支 + 今日进度 ---------- */
.side-clock {
  display: grid;
  gap: 10px;
  margin-top: 18px;
  padding: 17px 16px 15px;
  overflow: hidden;
  border: 1px solid rgba(140, 200, 255, .20);
  border-radius: 18px;
  background:
    linear-gradient(150deg, rgba(40, 80, 134, .30), rgba(40, 26, 78, .26) 55%, rgba(10, 16, 32, .55));
  box-shadow: inset 0 1px rgba(255, 255, 255, .10), 0 16px 38px rgba(0, 0, 0, .30);
}
/* 秒针光环：36px 圆环，位于右上角 */
.side-clock::before {
  content: "";
  position: absolute;
  top: 14px;
  right: 14px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: conic-gradient(from -90deg,
    var(--nebula) var(--sweep), rgba(140, 190, 255, .14) 0);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.4px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.4px));
}
/* 扫秒光点：rotate 后沿切向平移，恰好落在光环上 */
.side-clock i.sweep-dot {
  position: absolute;
  top: 30px;
  right: 30px;
  width: 4px;
  height: 4px;
  margin: -2px;
  border-radius: 50%;
  background: #dff7ff;
  box-shadow: 0 0 9px var(--nebula), 0 0 3px #fff;
  transform: rotate(var(--sweep)) translateY(-16px);
  pointer-events: none;
}
.side-clock-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 17px;
  padding-right: 40px;
}
.side-clock-zone {
  color: #6e86a8 !important;
  font: 700 8px/1 var(--font-mono) !important;
  letter-spacing: .22em;
}
.side-clock-time {
  display: flex;
  align-items: baseline;
  gap: 2px;
  margin-top: -2px;
}
.side-clock-hh, .side-clock-mm {
  font: 600 32px/1 var(--font-mono);
  font-variant-numeric: tabular-nums;
  letter-spacing: -.02em;
  background: linear-gradient(120deg, #ffffff 25%, #a9e9ff 80%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: drop-shadow(0 0 14px rgba(114, 230, 255, .18));
}
.clock-colon {
  font-style: normal;
  color: rgba(169, 233, 255, .75);
  animation: colon-blink 1s steps(1) infinite;
}
@keyframes colon-blink { 50% { opacity: .3; } }
/* 秒 chip：Vue 每秒用 :key 重挂载，CSS tick 动画随重挂载重放 */
.side-clock-ss {
  margin-left: 4px;
  padding: 3px 6px;
  border: 1px solid rgba(114, 230, 255, .22);
  border-radius: 7px;
  color: #7ce9ff;
  font: 600 12px/1 var(--font-mono);
  font-variant-numeric: tabular-nums;
  background: rgba(114, 230, 255, .08);
  animation: second-tick .28s ease-out;
}
@keyframes second-tick {
  0% { transform: translateY(-3px) scale(.9); opacity: .35; }
  100% { transform: none; opacity: 1; }
}
.side-clock-date {
  justify-self: start;
  padding: 4px 9px;
  border: 1px solid rgba(114, 230, 255, .18);
  border-radius: 999px;
  color: #a5dcf5;
  font: 600 9px/1.2 var(--font-mono);
  letter-spacing: .05em;
  background: rgba(114, 230, 255, .08);
}
.side-clock-lunar {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding-top: 8px;
  border-top: 1px dashed rgba(140, 190, 255, .14);
}
.side-clock-lunar span { color: #8fa6c8; font-size: 9px; }
.side-clock-lunar b {
  font: 600 9px/1.3 var(--font-display);
  letter-spacing: .06em;
  background: linear-gradient(120deg, #ffe2a8, #ffb36b);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
/* 今日进度条 */
.side-clock-day {
  position: relative;
  height: 3px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(140, 190, 255, .12);
}
.side-clock-day i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--nebula), var(--pulsar));
  box-shadow: 0 0 8px rgba(114, 230, 255, .6);
  transition: width .6s ease;
}
.side-clock-greet {
  margin-top: 2px !important;
  color: #c8d9ef !important;
  font-size: 10px !important;
}
.side-clock-session {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 0 !important;
}
.side-clock-session i {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--sprite);
  box-shadow: 0 0 8px var(--sprite);
  animation: live-pulse 2.2s ease-in-out infinite;
}
@keyframes live-pulse { 50% { opacity: .35; transform: scale(.8); } }

/* ---------- 顶栏时钟：等宽数字 + 今日进度基线 ---------- */
.header-clock {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 7px;
  min-width: 200px;
  padding: 13px 17px 12px;
  overflow: hidden;
  border: 1px solid rgba(140, 200, 255, .18);
  border-radius: 17px;
  text-align: right;
  background: linear-gradient(150deg, rgba(32, 52, 92, .50), rgba(14, 20, 38, .58));
  box-shadow: inset 0 1px rgba(255, 255, 255, .09), 0 14px 34px rgba(0, 0, 0, .26);
}
.header-clock > span {
  color: #93a9c8;
  font: 600 9px var(--font-mono);
  letter-spacing: .14em;
}
.header-clock-time {
  display: flex;
  align-items: baseline;
  gap: 2px;
}
.hc-hh, .hc-mm {
  font: 600 26px/1 var(--font-mono);
  font-variant-numeric: tabular-nums;
  letter-spacing: -.02em;
  color: #fff;
}
.hc-ss {
  margin-left: 4px;
  font: 600 11px/1 var(--font-mono);
  font-variant-numeric: tabular-nums;
  color: #7ce9ff;
  animation: second-tick .28s ease-out;
}
.header-clock-day {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--nebula), var(--pulsar));
  box-shadow: 0 0 8px rgba(114, 230, 255, .5);
  transition: width .6s ease;
}

/* ---------- 页头：信息层级 ---------- */
.studio-header { padding-bottom: 20px; border-bottom: 1px solid rgba(150, 200, 255, .09); }

/* ---------- 主按钮 ---------- */
.primary { box-shadow: 0 8px 26px rgba(84, 182, 255, .26); }
.primary:hover { filter: brightness(1.09); box-shadow: 0 12px 32px rgba(84, 182, 255, .36); }

/* ---------- 统计卡：四宫格 ---------- */
.stats {
  grid-template-columns: repeat(4, 1fr);
  margin-bottom: 26px;
}
.stats article {
  display: grid;
  align-content: start;
  gap: 5px;
  padding: 19px 20px;
  border-radius: 17px;
  overflow: hidden;
}
.stats article:nth-child(1) { background: linear-gradient(145deg, rgba(63, 142, 255, .22), rgba(13, 22, 40, .62)); }
.stats article:nth-child(2) { background: linear-gradient(145deg, rgba(173, 91, 255, .20), rgba(21, 17, 40, .62)); }
.stats article:nth-child(3) { background: linear-gradient(145deg, rgba(44, 218, 176, .17), rgba(12, 29, 35, .62)); }
.stats article:nth-child(4) { background: linear-gradient(145deg, rgba(255, 170, 84, .16), rgba(35, 26, 16, .62)); }
.stats b.stat-num {
  font: 600 30px/1 var(--font-mono);
  font-variant-numeric: tabular-nums;
  background: linear-gradient(120deg, #ffffff 30%, #9fe8ff);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.stats article span {
  color: #c6d6ec;
  font: 600 11px var(--font-display);
}
.stats article small { margin-top: 2px; color: #718098; font-size: 9px; }

/* ---------- 创作首页：凸显入口地位 ---------- */
.studio-home-launcher {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(114, 230, 255, .24);
  border-radius: 22px;
  background: linear-gradient(150deg, rgba(21, 36, 64, .88), rgba(17, 19, 42, .78));
  box-shadow: inset 0 1px rgba(255, 255, 255, .07), 0 24px 64px rgba(0, 0, 0, .32);
}
.studio-home-launcher::before {
  content: "";
  position: absolute;
  top: 0;
  left: 8%;
  right: 8%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(114, 230, 255, .65), transparent);
}
.launch-grid > a { overflow: hidden; }
.launch-grid > a i { transition: transform .24s ease; }
@media (hover: hover) {
  .launch-grid > a:hover { box-shadow: 0 16px 42px rgba(0, 0, 0, .38); }
  .launch-grid > a:hover i { transform: scale(1.10) rotate(-5deg); }
}
.launch-grid > a.launch-primary {
  grid-column: span 2;
  border-color: rgba(114, 230, 255, .50);
  background: linear-gradient(135deg, rgba(24, 68, 98, .92), rgba(40, 29, 84, .88));
  box-shadow: 0 16px 44px rgba(34, 126, 206, .22);
}
.launch-grid > a.launch-primary i {
  flex-basis: 44px;
  width: 44px;
  height: 44px;
  font-size: 17px;
  box-shadow: 0 0 22px rgba(114, 230, 255, .35);
}
.launch-grid > a.launch-primary b { font-size: 15px; }
.launch-grid > a.launch-primary small { font-size: 10px; }
/* 周期性流光扫过主入口 */
.launch-grid > a.launch-primary::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(115deg, transparent 32%, rgba(190, 242, 255, .16) 48%, transparent 64%);
  transform: translateX(-130%);
  animation: launcher-sheen 6s cubic-bezier(.4, 0, .2, 1) infinite;
}
@keyframes launcher-sheen {
  55%, 100% { transform: translateX(130%); }
}

/* ---------- 项目列表工具栏：搜索 / 排序 / 筛选 ---------- */
.studio-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 16px 0 14px;
}
.studio-toolbar .search {
  position: relative;
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 0;
}
.studio-toolbar .search > span {
  position: absolute;
  left: 13px;
  color: #5c6d8c;
  font-size: 15px;
  pointer-events: none;
}
.studio-toolbar .search input {
  width: 100%;
  padding: 11px 34px 11px 36px;
  border: 1px solid rgba(190, 218, 255, .14);
  border-radius: 12px;
  outline: none;
  color: #fff;
  font-size: 11px;
  background: rgba(8, 13, 25, .55);
  transition: border-color .2s, box-shadow .2s;
}
.studio-toolbar .search input:focus {
  border-color: rgba(114, 230, 255, .45);
  box-shadow: 0 0 0 3px rgba(114, 230, 255, .07);
}
.studio-toolbar .search input::placeholder { color: #5c6d8c; }
.studio-toolbar .search input::-webkit-search-cancel-button { display: none; }
.studio-toolbar .search button {
  position: absolute;
  right: 8px;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  color: #8fa4c4;
  font-size: 13px;
  line-height: 1;
  background: transparent;
}
.studio-toolbar .search button:hover { color: #fff; background: rgba(114, 230, 255, .14); }
.studio-toolbar .sort {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #718098;
  font-size: 10px;
}
.studio-toolbar .sort select {
  padding: 10px 30px 10px 12px;
  border: 1px solid rgba(190, 218, 255, .14);
  border-radius: 12px;
  outline: none;
  color: #cfe2f8;
  font-size: 11px;
  background: rgba(8, 13, 25, .55);
}
.studio-toolbar .sort select:focus { border-color: rgba(114, 230, 255, .45); }
.studio-toolbar .filters { display: flex; gap: 7px; }
.studio-toolbar .filters button {
  padding: 10px 15px;
  border-radius: 999px;
  color: #718098;
  font-size: 10px;
  background: rgba(13, 20, 38, .55);
}
.studio-toolbar .filters button:hover { color: #cfe2f8; }
.studio-toolbar .filters button.active {
  color: #06131c;
  font-weight: 700;
  border-color: rgba(124, 233, 255, .9);
  background: linear-gradient(135deg, #7ce9ff, #ac90ff);
  box-shadow: 0 6px 18px rgba(84, 182, 255, .25);
}

/* ---------- 项目卡：更宽的封面、版本角标、双行摘要 ---------- */
.project {
  grid-template-columns: 118px 1fr;
  gap: 16px;
  padding: 15px;
  overflow: hidden;
  transition: transform .28s ease, border-color .25s, box-shadow .28s;
}
.cover { width: 118px; }
.cover .rev-chip {
  position: absolute;
  right: 6px;
  bottom: 6px;
  padding: 3px 7px;
  border-radius: 999px;
  font: 700 8px/1 var(--font-mono);
  color: #051018;
  background: linear-gradient(135deg, #7ce9ff, #a989ff);
  box-shadow: 0 3px 10px rgba(0, 0, 0, .35);
}
.project .p-main {
  display: grid;
  align-content: start;
  gap: 6px;
  min-width: 0;
}
.project h3 {
  margin: 2px 0 0;
  font-family: var(--font-display);
  font-size: 15px;
  letter-spacing: -.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.p-ago {
  color: #718098;
  font-size: 9px;
  font-variant-numeric: tabular-nums;
}
.p-summary {
  margin: 0 !important;
  min-height: 0 !important;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.65;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
@media (hover: hover) {
  .project:hover { box-shadow: 0 26px 60px rgba(0, 0, 0, .45); }
}
.cover img { transition: transform .45s ease; }
.project:hover .cover img { transform: scale(1.07); }
.new-card { transition: transform .22s ease, border-color .22s, background .22s; }
@media (hover: hover) {
  .new-card:hover { transform: translateY(-4px); border-color: rgba(114, 230, 255, .4); background: rgba(114, 230, 255, .05); }
}
/* 空态 / 无匹配 */
.grid-empty {
  grid-column: 1 / -1;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  min-height: 190px;
  padding: 30px;
  border: 1px dashed rgba(190, 218, 255, .16);
  border-radius: 18px;
  text-align: center;
  animation: card-in .5s cubic-bezier(.2, .8, .2, 1) both;
}
.grid-empty b { font-size: 14px; color: #dfe9f8; }
.grid-empty span { color: var(--muted); font-size: 10px; }
.grid-empty button { margin-top: 6px; }

/* ---------- 项目详情：拖放换封面 ---------- */
.detail-cover {
  border: 1px solid rgba(140, 200, 255, .14);
  transition: border-color .2s, box-shadow .2s;
}
.detail-cover.drag-over {
  border-color: rgba(114, 230, 255, .6);
  box-shadow: inset 0 0 0 3px rgba(114, 230, 255, .08), 0 0 0 4px rgba(114, 230, 255, .12);
}
.drop-hint {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 6px;
  color: #bfe9ff;
  background: rgba(8, 16, 32, .82);
  backdrop-filter: blur(4px);
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s ease;
}
.detail-cover.drag-over .drop-hint { opacity: 1; }
.drop-hint b { font-size: 13px; }
.drop-hint span { color: var(--muted); font-size: 9px; }
.cover-controls {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  display: flex;
  gap: 7px;
}
.cover-controls button,
.cover-controls label {
  flex: 1;
  padding: 9px 8px;
  border: 1px solid rgba(190, 218, 255, .14);
  border-radius: 10px;
  text-align: center;
  font-size: 9px;
  color: #dceeff;
  background: rgba(9, 13, 24, .82);
  backdrop-filter: blur(8px);
}
.cover-controls label {
  position: relative; /* 覆盖基础层的绝对定位，并作为隐藏 file input 的点击热区 */
  cursor: pointer;
}
.cover-controls input[type="file"],
.detail-cover input[type="file"] {
  position: absolute !important;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  opacity: 0 !important;
  overflow: hidden;
  cursor: pointer;
  display: block !important;
}
.cover-controls button:hover { color: #fff; border-color: rgba(114, 230, 255, .4); }

/* ---------- 详情页签：切换动效 + 事实格 ---------- */
.tab-pane { animation: tab-in .38s cubic-bezier(.2, .8, .2, 1); }
@keyframes tab-in { from { opacity: 0; transform: translateY(8px); } }
.detail-tabs button.active {
  color: #eafcff;
  background: rgba(114, 230, 255, .10);
  box-shadow: inset 0 -2px 0 rgba(114, 230, 255, .8);
}
.tab-content h2 {
  margin-top: 0;
  font-family: var(--font-display);
  font-size: 19px;
  letter-spacing: -.01em;
}
.facts { flex-wrap: wrap; }
.facts span {
  flex: 1;
  min-width: 130px;
  border-color: rgba(190, 218, 255, .12);
  background: rgba(9, 14, 28, .5);
}
.facts b { font-variant-numeric: tabular-nums; }

/* ---------- 细节修饰 ---------- */
.toast {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 11px 17px;
  border: 1px solid rgba(114, 230, 255, .25);
  border-radius: 13px;
  color: #e6f6ff;
  font-size: 11px;
  background: linear-gradient(135deg, rgba(21, 42, 66, .92), rgba(18, 24, 46, .92));
  backdrop-filter: blur(14px);
  box-shadow: 0 16px 44px rgba(0, 0, 0, .5);
}
.toast::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--sprite);
  box-shadow: 0 0 10px var(--sprite);
}
.inbox { backdrop-filter: blur(18px); }
.modal form {
  border: 1px solid rgba(190, 218, 255, .16);
  box-shadow: 0 34px 90px rgba(0, 0, 0, .55), 0 0 60px rgba(114, 230, 255, .06);
  animation: modal-pop .28s cubic-bezier(.2, .8, .2, 1);
}
@keyframes modal-pop { from { opacity: 0; transform: translateY(12px) scale(.97); } }
.modal h2 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 0;
}
.modal-icon {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 10px;
  font-style: normal;
  font-size: 16px;
  color: #06131c;
  background: linear-gradient(135deg, #7ce9ff, #a989ff);
  box-shadow: 0 4px 14px rgba(84, 182, 255, .3);
}
.modal-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}
.modal-actions > span {
  margin-right: auto;
  color: #62728d;
  font-size: 9px;
}
.modal input::placeholder { color: #5c6d8c; }

a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, label:focus-visible {
  outline: 2px solid rgba(114, 230, 255, .65);
  outline-offset: 2px;
}

/* ---------- 视图入场 ---------- */
.project-view, .detail { animation: hub-in .45s cubic-bezier(.2, .8, .2, 1); }
.grid > .project, .grid > .new-card { animation: card-in .5s cubic-bezier(.2, .8, .2, 1) both; }
.grid > :nth-child(2) { animation-delay: .05s; }
.grid > :nth-child(3) { animation-delay: .10s; }
.grid > :nth-child(4) { animation-delay: .15s; }
.grid > :nth-child(5) { animation-delay: .20s; }
.grid > :nth-child(6) { animation-delay: .25s; }
.grid > :nth-child(n+7) { animation-delay: .30s; }
@keyframes card-in {
  from { opacity: 0; transform: translateY(14px) scale(.985); }
}

/* ---------- 触屏与移动端降级 ---------- */
@media (hover: none), (max-width: 850px) {
  .cursor-aurora { display: none; }
}
@media (max-width: 1100px) {
  .stats { grid-template-columns: repeat(2, 1fr); }
  .facts span { min-width: 120px; }
}
@media (max-width: 850px) {
  .side nav a.active::before { display: none; }
  .studio-toolbar { flex-wrap: wrap; }
  .studio-toolbar .search { flex-basis: 100%; }
  .detail-cover { width: 100%; max-width: 240px; }
}
@media (max-width: 560px) {
  .launch-grid > a.launch-primary { grid-column: auto; }
  .stats { grid-template-columns: 1fr; }
  .studio-toolbar .sort { flex: 1; }
  .studio-toolbar .sort select { width: 100%; }
  .studio-toolbar .filters { flex: 1; justify-content: flex-end; }
  .cover-controls { flex-wrap: wrap; }
}

/* ---------- 减少动态偏好 ---------- */
@media (prefers-reduced-motion: reduce) {
  .cursor-aurora { display: none; }
  .brand > i, .launch-grid > a.launch-primary::before,
  .clock-colon, .side-clock-session i { animation: none; }
  .side-clock-ss, .hc-ss, .tab-pane, .modal form,
  .grid > .project, .grid > .new-card, .grid-empty, .project-view, .detail { animation: none; }
  .side nav a, .cover img, .launch-grid > a i, .new-card,
  .side-clock-day i, .header-clock-day { transition-duration: .01ms; }
}
/* 清透层：减少亚克力模糊与不透明底色，让 Studio 背景保持可辨识。 */
.side{
  background:linear-gradient(178deg,rgba(8,14,28,.70),rgba(7,10,22,.58));
  backdrop-filter:blur(9px) saturate(1.08);
  -webkit-backdrop-filter:blur(9px) saturate(1.08);
}
.acrylic-card,.stats article,.studio-home-launcher,.project,.detail-main{
  backdrop-filter:blur(7px) saturate(1.08);
  -webkit-backdrop-filter:blur(7px) saturate(1.08);
}
.project,.detail-main{background:linear-gradient(145deg,rgba(19,30,53,.44),rgba(8,14,27,.34))}
.studio-home-launcher{background:linear-gradient(150deg,rgba(21,36,64,.54),rgba(17,19,42,.43))}
.launch-grid>a.launch-primary{background:linear-gradient(135deg,rgba(24,68,98,.68),rgba(40,29,84,.62))}
.stats article:nth-child(1){background:linear-gradient(145deg,rgba(63,142,255,.18),rgba(13,22,40,.42))}
.stats article:nth-child(2){background:linear-gradient(145deg,rgba(173,91,255,.16),rgba(21,17,40,.42))}
.stats article:nth-child(3){background:linear-gradient(145deg,rgba(44,218,176,.14),rgba(12,29,35,.42))}
.stats article:nth-child(4){background:linear-gradient(145deg,rgba(255,170,84,.13),rgba(35,26,16,.42))}
.side-account{background:rgba(10,17,32,.46);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}

/* 单一圆形星晷：真实时分秒针 + 数字时间 + 农历，仍只保留侧栏一只时钟。 */
.side-clock.orbital-clock{
  grid-template-columns:84px minmax(0,1fr);
  align-items:center;
  gap:10px 12px;
  padding:13px;
  background:linear-gradient(145deg,rgba(22,51,79,.48),rgba(28,20,62,.40));
  backdrop-filter:blur(6px) saturate(1.08);
}
.side-clock.orbital-clock::before{display:none}
.clock-orbit{position:relative;width:84px;height:84px;border:1px solid rgba(174,226,255,.28);border-radius:50%;background:radial-gradient(circle,rgba(21,36,63,.42) 0 62%,rgba(8,14,28,.22) 63%);box-shadow:inset 0 0 24px rgba(94,185,255,.10),0 0 24px rgba(72,170,255,.10)}
.clock-orbit::before{content:"";position:absolute;inset:-3px;border-radius:50%;background:conic-gradient(from -90deg,var(--nebula) var(--day-angle),rgba(142,183,229,.12) 0);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 0);mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 0)}
.clock-orbit::after{content:"";position:absolute;z-index:5;left:50%;top:50%;width:7px;height:7px;border-radius:50%;background:#eafaff;box-shadow:0 0 8px var(--nebula);transform:translate(-50%,-50%)}
.clock-hand{position:absolute;z-index:2;left:50%;bottom:50%;width:2px;border-radius:999px;transform-origin:50% 100%}
.clock-hand.hour{height:22px;background:#f7fbff;transform:translateX(-50%) rotate(var(--hour-angle))}
.clock-hand.minute{height:29px;background:#a9e9ff;transform:translateX(-50%) rotate(var(--minute-angle))}
.clock-hand.second{z-index:3;width:1px;height:32px;background:#ff8fc5;box-shadow:0 0 6px rgba(255,119,188,.7);transform:translateX(-50%) rotate(var(--second-angle));transition:transform .12s linear}
.clock-copy{display:grid;gap:5px;min-width:0}.clock-copy>span{color:#8199bb;font:700 7px/1 var(--font-mono);letter-spacing:.18em}.clock-copy>b{white-space:nowrap;color:#f5fbff;font:500 20px/1.1 var(--font-mono);font-variant-numeric:tabular-nums}.clock-copy b em{margin-left:4px;color:var(--nebula);font:600 9px/1 var(--font-mono);font-style:normal}.clock-copy small{color:#9db0ca;font-size:7px;line-height:1.45}
.clock-lunar{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 8px;padding-top:8px;border-top:1px solid rgba(154,205,255,.13)}.clock-lunar>span{grid-row:1/3;color:#758aa8;font-size:8px}.clock-lunar>b{overflow:hidden;color:#ffd69b;font-size:9px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.clock-lunar>small{color:#8fa6c8;font-size:7px}
.side-clock.orbital-clock>p{grid-column:1/-1;margin:0;color:#b9cae0;font-size:8px;line-height:1.4}
.model-picker{display:grid;grid-template-columns:1fr auto;gap:7px}.model-picker button{white-space:nowrap}
.api-editor select{width:100%;padding:11px 12px;border:1px solid rgba(190,218,255,.16);border-radius:11px;outline:none;color:#fff;background:#080d1b}
