/* 紫微斗数皮肤：夜空命盘。只挂 body.col-ziwei，不进 gx.css。 */
body.col-ziwei {
  --paper: #070b14;
  --paper-2: #10182a;
  --ink: #f0e6d0;
  --ink-2: #c4b896;
  --ink-3: #7e7664;
  --line: rgba(232, 210, 140, .28);
  --red: #c45a48;
  --gold: #e4c878;
  --gold-2: #f3e6b0;
  --star: #f6edd4;
  --star-dim: rgba(243, 230, 176, .4);
  --navy: #070b14;
  --navy-2: #121b30;
  --cell: rgba(12, 18, 34, .78);
  --lu: #e8c56a;
  --quan: #c9a6ea;
  --ke: #8fd0c6;
  --ji: #d8cfc0;
  --sha: #c97a72;
  background-color: #05080f;
  background-image:
    radial-gradient(ellipse 90% 50% at 50% -12%, rgba(70, 96, 160, .28), transparent 58%),
    radial-gradient(ellipse 40% 30% at 100% 100%, rgba(90, 50, 40, .18), transparent 50%),
    radial-gradient(ellipse 32% 24% at 0% 80%, rgba(40, 70, 120, .2), transparent 55%);
  color: var(--ink);
  font-family: "Source Han Serif SC", "Noto Serif SC", "Songti SC", "SimSun", serif;
}
body.col-ziwei::before {
  content: "";
  pointer-events: none;
  position: fixed;
  inset: 0;
  z-index: 0;
  background-image:
    radial-gradient(1.2px 1.2px at 8% 14%, var(--star-dim), transparent),
    radial-gradient(1px 1px at 18% 38%, rgba(243, 230, 176, .7), transparent),
    radial-gradient(1.6px 1.6px at 29% 9%, #fff8e0, transparent),
    radial-gradient(1px 1px at 41% 22%, var(--star-dim), transparent),
    radial-gradient(1.4px 1.4px at 57% 11%, rgba(243, 230, 176, .85), transparent),
    radial-gradient(1px 1px at 71% 27%, var(--star-dim), transparent),
    radial-gradient(1.8px 1.8px at 84% 8%, #fff, transparent),
    radial-gradient(1px 1px at 93% 33%, var(--star-dim), transparent),
    radial-gradient(1px 1px at 6% 62%, rgba(243, 230, 176, .5), transparent),
    radial-gradient(1.3px 1.3px at 22% 81%, var(--star-dim), transparent),
    radial-gradient(1px 1px at 48% 73%, rgba(255, 248, 224, .55), transparent),
    radial-gradient(1.5px 1.5px at 66% 88%, var(--star-dim), transparent),
    radial-gradient(1px 1px at 81% 69%, rgba(243, 230, 176, .6), transparent),
    radial-gradient(1.2px 1.2px at 94% 91%, var(--star-dim), transparent);
  opacity: .9;
}
body.col-ziwei .site-head,
body.col-ziwei .tool-top,
body.col-ziwei .site-foot {
  background: rgba(7, 11, 20, .86);
  border-color: var(--line);
  color: var(--ink);
}
body.col-ziwei .tool-top { backdrop-filter: saturate(1.25) blur(14px); }
body.col-ziwei .brand,
body.col-ziwei .brand-emblem,
body.col-ziwei .tool-top .top-mark,
body.col-ziwei .help-btn { color: var(--gold); }
body.col-ziwei .tool-top .top-title h1 {
  color: var(--star);
  letter-spacing: .22em;
  font-weight: 650;
  text-shadow: 0 0 18px rgba(228, 200, 120, .25);
}
body.col-ziwei .tool-top .top-title .sub { color: var(--ink-2); }
body.col-ziwei .help-btn,
body.col-ziwei .col-switch-btn {
  background: rgba(16, 24, 42, .92);
  border-color: var(--line);
  color: var(--ink);
}
body.col-ziwei .help-btn:hover { background: rgba(228, 200, 120, .14); }
body.col-ziwei .col-switch-menu {
  background: #121a2e;
  border-color: var(--line);
}
body.col-ziwei .sw-item { color: var(--ink-2); }
body.col-ziwei .sw-item:hover,
body.col-ziwei .sw-item[aria-current="page"] { color: var(--gold); }
body.col-ziwei .card {
  background: var(--cell);
  border: 1px solid var(--line);
}
body.col-ziwei .workbench {
  position: relative;
  overflow: hidden;
  padding: 18px 14px 28px;
  background:
    radial-gradient(ellipse 70% 50% at 50% 0%, rgba(228, 200, 120, .07), transparent 55%),
    rgba(8, 12, 22, .55);
  border: 1px solid var(--line);
  box-shadow:
    0 0 0 1px rgba(228, 200, 120, .06),
    0 24px 60px rgba(0, 0, 0, .45);
}
body.col-ziwei a { color: var(--gold); }
body.col-ziwei .btn {
  background-image: linear-gradient(180deg, #f0dd9c, #c9a24a);
  color: #1a1408;
  border: 1px solid #f7ebc4;
  letter-spacing: .28em;
  font-weight: 700;
  box-shadow: 0 8px 24px rgba(201, 162, 74, .28);
}
body.col-ziwei .btn.ghost {
  background: transparent;
  color: var(--gold);
  border: 1px solid var(--line);
  box-shadow: none;
}
body.col-ziwei input,
body.col-ziwei select,
body.col-ziwei textarea {
  background: #0c1324;
  color: var(--ink);
  border-color: var(--line);
}
body.col-ziwei input:focus,
body.col-ziwei select:focus {
  outline: 2px solid rgba(228, 200, 120, .4);
  border-color: var(--gold);
}
body.col-ziwei .chip {
  background: #10182c;
  color: var(--ink-2);
  border-color: var(--line);
}
body.col-ziwei .chip[aria-pressed="true"] {
  background: var(--gold);
  color: #16120a;
  border-color: var(--gold);
}
body.col-ziwei .disclaimer,
body.col-ziwei .privacy,
body.col-ziwei .lead,
body.col-ziwei .crumb { color: var(--ink-2); }
body.col-ziwei h1, body.col-ziwei h2 { color: var(--star); }
body.col-ziwei .prose p { color: var(--ink-2); }
body.col-ziwei details summary { color: var(--gold); }

/* —— 生辰题签 —— */
.zw-form {
  position: relative;
  padding: 14px 14px 12px;
  border: 1px solid var(--line);
  background:
    linear-gradient(180deg, rgba(228, 200, 120, .06), transparent 40%),
    rgba(10, 16, 30, .72);
  box-shadow: inset 0 0 0 1px rgba(228, 200, 120, .08);
}
.zw-form::before,
.zw-form::after {
  content: "";
  position: absolute;
  width: 18px;
  height: 18px;
  border: 1px solid var(--gold);
  opacity: .55;
  pointer-events: none;
}
.zw-form::before { top: 6px; left: 6px; border-right: 0; border-bottom: 0; }
.zw-form::after { bottom: 6px; right: 6px; border-left: 0; border-top: 0; }
.zw-form .zw-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
}
@media (max-width: 520px) {
  .zw-form .zw-row { grid-template-columns: 1fr 1fr; }
  .zw-who-row { grid-template-columns: 1fr; }
}
.zw-actions { display: grid; gap: 8px; margin-top: 10px; }
.zw-hint { font-size: 12px; color: var(--ink-3); margin: 8px 0 0; line-height: 1.6; }
.zw-ticket-cal { display: grid; gap: 10px; }
.zw-who-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 12px;
}
.zw-hours-field { margin-top: 12px; }
.zw-hours-tip {
  margin: 0 0 8px;
  font-size: 12px;
  color: var(--ink-3);
  letter-spacing: .04em;
}
#zw-hours .chips {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}
#zw-hours .chip {
  min-height: 44px;
  justify-content: center;
  letter-spacing: .04em;
  font-size: 13px;
}
.zw-form.is-stowed .zw-stow-hide { display: none; }
.zw-form.is-stowed { padding: 10px 12px; }
.zw-stow-bar {
  display: none;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 13px;
  color: var(--ink-2);
  letter-spacing: .08em;
}
.zw-form.is-stowed .zw-stow-bar { display: flex; }

/* —— 盘额 —— */
.zw-banner {
  margin: 18px auto 14px;
  max-width: 560px;
  text-align: center;
}
.zw-banner .zw-kicker {
  font-size: 11px;
  letter-spacing: .42em;
  color: var(--gold);
  margin: 0 0 6px;
}
.zw-banner h2 {
  margin: 0 0 8px;
  font-size: 1.28rem;
  letter-spacing: .18em;
  text-shadow: 0 0 24px rgba(228, 200, 120, .2);
}
.zw-meta {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 4px 14px;
  font-size: 12px;
  color: var(--ink-2);
}
.zw-meta b { color: var(--star); font-weight: 650; }

.zw-toolbar {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: center;
  margin: 0 0 14px;
}
.zw-toolbar .chip { min-height: 34px; font-size: 13px; }

/* —— 四方命盘 —— */
.zw-plate-wrap {
  max-width: 560px;
  margin: 0 auto;
  perspective: 1200px;
}
.zw-plate {
  position: relative;
  padding: 10px;
  background:
    linear-gradient(135deg, #f0dd9c, #8a6a28 18%, #f7ebc0 36%, #6e5420 55%, #e8d080 78%, #4a3814);
  box-shadow:
    0 0 0 1px rgba(247, 235, 192, .4),
    0 18px 50px rgba(0, 0, 0, .55),
    inset 0 0 0 1px rgba(40, 28, 8, .55);
}
.zw-plate-inner {
  position: relative;
  background: #080e1c;
  box-shadow:
    inset 0 0 0 1px rgba(228, 200, 120, .45),
    inset 0 0 40px rgba(0, 0, 0, .35);
  padding: 5px;
}
.zw-plate-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(4, 1fr);
  aspect-ratio: 1;
  gap: 0;
}
.zw-gong {
  position: relative;
  display: flex;
  flex-direction: column;
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 5px 4px 4px;
  border: 1px solid rgba(228, 200, 120, .22);
  border-radius: 0;
  background:
    linear-gradient(180deg, rgba(228, 200, 120, .05), transparent 38%),
    rgba(10, 16, 30, .9);
  color: inherit;
  text-align: left;
  cursor: pointer;
  font: inherit;
  overflow: hidden;
}
.zw-gong:focus { outline: 2px solid rgba(228, 200, 120, .7); outline-offset: -2px; z-index: 2; }
.zw-gong.is-ming {
  background:
    radial-gradient(ellipse 80% 70% at 50% 0%, rgba(196, 90, 72, .22), transparent 60%),
    linear-gradient(180deg, rgba(228, 200, 120, .08), transparent 40%),
    rgba(18, 14, 16, .95);
  box-shadow: inset 0 0 0 1px rgba(228, 200, 120, .55);
}
.zw-gong.is-shen:not(.is-ming) {
  background:
    radial-gradient(ellipse 80% 70% at 50% 100%, rgba(80, 140, 160, .16), transparent 60%),
    rgba(10, 16, 30, .94);
}
.zw-gong-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 2px;
}
.zw-gong-name {
  font-size: clamp(10px, 2.4vw, 12px);
  letter-spacing: .18em;
  color: var(--gold-2);
  font-weight: 650;
}
.zw-gong.is-ming .zw-gong-name { color: #f3c2b4; }
.zw-seals {
  font-size: 9px;
  letter-spacing: .06em;
  color: var(--red);
  writing-mode: horizontal-tb;
}
.zw-majors {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 2px 6px;
  margin-top: 4px;
  min-height: 0;
}
.zw-major {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: clamp(13px, 3.3vw, 16px);
  font-weight: 700;
  letter-spacing: .12em;
  color: var(--star);
  line-height: 1.15;
  text-shadow: 0 0 10px rgba(246, 237, 212, .18);
}
.zw-major.is-empty {
  font-size: 11px;
  font-weight: 400;
  letter-spacing: .28em;
  color: var(--ink-3);
  text-shadow: none;
}
.zw-hua {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.05em;
  height: 1.05em;
  padding: 0 1px;
  border: 1px solid currentColor;
  border-radius: 2px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1;
}
.hua-lu { color: var(--lu); background: rgba(232, 197, 106, .12); }
.hua-quan { color: var(--quan); background: rgba(201, 166, 234, .12); }
.hua-ke { color: var(--ke); background: rgba(143, 208, 198, .12); }
.hua-ji { color: var(--ji); background: rgba(216, 207, 192, .1); }
.zw-mw {
  font-size: 9px;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--ink-3);
}
.zw-mw.is-miao,
.zw-mw.is-wang { color: var(--gold); }
.zw-mw.is-xian { color: var(--sha); }
.zw-minors {
  margin-top: auto;
  font-size: clamp(9px, 2.1vw, 11px);
  line-height: 1.35;
  color: var(--ink-2);
  letter-spacing: .04em;
}
.zw-minors .is-lucky { color: var(--gold-2); }
.zw-minors .is-sha { color: var(--sha); opacity: .9; }
.zw-ganzhi {
  position: absolute;
  right: 4px;
  bottom: 3px;
  font-size: 9px;
  color: var(--ink-3);
  letter-spacing: .08em;
}

/* 中宫 */
.zw-heart {
  grid-column: 2 / 4;
  grid-row: 2 / 4;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 0 0 -1px -1px;
  border: 1px solid rgba(228, 200, 120, .4);
  background:
    radial-gradient(circle at 50% 42%, rgba(243, 230, 176, .2), transparent 36%),
    radial-gradient(circle at 50% 50%, #141c34 0%, #080e1c 72%);
  text-align: center;
  overflow: hidden;
  pointer-events: none;
}
.zw-heart svg {
  width: min(42%, 88px);
  height: auto;
  color: var(--gold);
  filter: drop-shadow(0 0 12px rgba(228, 200, 120, .45));
  margin-bottom: 4px;
}
.zw-heart .zw-ju {
  font-size: clamp(13px, 3.2vw, 18px);
  letter-spacing: .28em;
  color: var(--gold-2);
  font-weight: 700;
}
.zw-heart .zw-who {
  margin-top: 2px;
  font-size: clamp(11px, 2.6vw, 14px);
  letter-spacing: .16em;
  color: var(--star);
}
.zw-heart .zw-lords {
  margin-top: 4px;
  font-size: 10px;
  letter-spacing: .12em;
  color: var(--ink-2);
}
.zw-rings {
  position: absolute;
  inset: 8%;
  border-radius: 50%;
  border: 1px solid rgba(228, 200, 120, .18);
  box-shadow:
    0 0 0 10px rgba(228, 200, 120, .04),
    inset 0 0 0 12px rgba(228, 200, 120, .05);
  pointer-events: none;
}

.zw-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 14px;
  margin: 10px 0 0;
  font-size: 11px;
  color: var(--ink-2);
  letter-spacing: .08em;
}

body.col-ziwei.zw-casting .zw-plate {
  animation: zw-open 1.25s cubic-bezier(.2, .8, .2, 1) both;
}
body.col-ziwei.zw-casting .zw-gong {
  animation: zw-in .7s ease both;
}
body.col-ziwei.zw-casting .zw-gong:nth-child(1) { animation-delay: .04s; }
body.col-ziwei.zw-casting .zw-gong:nth-child(2) { animation-delay: .08s; }
body.col-ziwei.zw-casting .zw-gong:nth-child(3) { animation-delay: .12s; }
body.col-ziwei.zw-casting .zw-gong:nth-child(4) { animation-delay: .16s; }
body.col-ziwei.zw-casting .zw-heart svg { animation: zw-spin 1.2s ease both; }
@keyframes zw-open {
  0% { opacity: 0; transform: rotateX(18deg) scale(.86); filter: blur(3px); }
  60% { opacity: 1; transform: rotateX(-2deg) scale(1.015); filter: blur(0); }
  100% { opacity: 1; transform: none; }
}
@keyframes zw-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes zw-spin {
  from { transform: rotate(-24deg) scale(.7); opacity: .2; }
  to { transform: none; opacity: 1; }
}

.zw-table-wrap { overflow: auto; margin-top: 4px; }
.zw-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.zw-table th,
.zw-table td {
  border-bottom: 1px solid var(--line);
  padding: 8px 6px;
  text-align: left;
  vertical-align: top;
}
.zw-table th { color: var(--gold); font-weight: 600; letter-spacing: .08em; }
.zw-table caption {
  caption-side: top;
  text-align: left;
  color: var(--ink-2);
  padding-bottom: 8px;
  font-size: 13px;
}

.zw-msg {
  margin: 12px 0 0;
  padding: 12px;
  border: 1px dashed var(--line);
  border-radius: 4px;
  color: var(--ink-2);
  font-size: 14px;
}

.zw-sheet-mask {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: rgba(2, 6, 14, .62);
}
.zw-sheet {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 41;
  max-height: 80vh;
  overflow: auto;
  padding: 18px 18px calc(18px + env(safe-area-inset-bottom));
  background:
    linear-gradient(180deg, rgba(228, 200, 120, .08), transparent 24%),
    #10182a;
  border: 1px solid var(--line);
  border-radius: 8px 8px 0 0;
  box-shadow: 0 -18px 50px rgba(0, 0, 0, .5);
}
.zw-sheet h3 { margin: 0 0 6px; letter-spacing: .18em; }
.zw-sheet .zw-sub { margin: 0 0 10px; color: var(--ink-2); font-size: 13px; }
.zw-sheet .zw-close {
  position: absolute;
  top: 12px;
  right: 12px;
  background: transparent;
  border: 0;
  color: var(--gold);
  font: inherit;
  cursor: pointer;
  min-height: 36px;
  padding: 0 10px;
}
.zw-star-block { margin: 12px 0; padding-top: 10px; border-top: 1px solid var(--line); }
.zw-star-block b { color: var(--star); letter-spacing: .14em; }
.zw-star-block .zw-tags { margin-left: 8px; font-size: 12px; color: var(--gold); font-weight: 500; }
.zw-star-block p { margin: 6px 0 0; color: var(--ink-2); font-size: 14px; line-height: 1.7; }
.zw-minor-row { font-size: 14px; color: var(--ink-2); margin: 8px 0 0; line-height: 1.7; }

.zw-reading {
  max-width: 560px;
  margin: 22px auto 0;
  padding-top: 8px;
}
.zw-reading h2 {
  text-align: center;
  letter-spacing: .18em;
  margin: 0 0 10px;
}
.zw-read-lead {
  font-size: 15px;
  line-height: 1.75;
  color: var(--star);
  margin: 0 0 14px;
}
.zw-read-card {
  margin: 0 0 10px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  background: rgba(10, 16, 30, .55);
}
.zw-read-card h3 {
  margin: 0 0 6px;
  font-size: 13px;
  letter-spacing: .24em;
  color: var(--gold);
  font-weight: 650;
}
.zw-read-card p,
.zw-read-card li {
  margin: 0;
  font-size: 14px;
  line-height: 1.75;
  color: var(--ink-2);
}
.zw-read-card ul { margin: 0; padding-left: 1.1em; }
.zw-read-card.is-watch { border-color: rgba(201, 122, 114, .35); }
.zw-read-note {
  font-size: 12px;
  color: var(--ink-3);
  line-height: 1.6;
  margin: 8px 0 0;
}

.zw-share-mask {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: rgba(0, 0, 0, .68);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: 12px;
}
.zw-share {
  width: min(440px, 100%);
  max-height: 90dvh;
  overflow: auto;
  background: linear-gradient(180deg, #141a2c, #0a0e18);
  border: 1px solid var(--line);
  color: var(--ink);
  padding: 14px 14px 18px;
  position: relative;
}
.zw-share h3 { margin: 0 0 12px; letter-spacing: .18em; color: var(--star); }
.zw-share .x {
  position: absolute;
  top: 10px;
  right: 10px;
  background: transparent;
  border: 0;
  color: var(--gold);
  font-size: 22px;
  cursor: pointer;
  min-width: 36px;
  min-height: 36px;
}
.zw-share .seg-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 10px;
}
.zw-share .seg-label {
  width: 3em;
  font-size: 13px;
  color: var(--ink-2);
  letter-spacing: .08em;
  flex-shrink: 0;
}
.zw-share .seg { display: flex; gap: 6px; flex-wrap: wrap; }
.zw-share .seg button {
  min-height: 34px;
  padding: 0 12px;
  background: #10182c;
  border: 1px solid var(--line);
  color: var(--ink-2);
  font: inherit;
  cursor: pointer;
}
.zw-share .seg button.on {
  background: var(--gold);
  color: #16120a;
  border-color: var(--gold);
}
.zw-share .acts { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0; }
.zw-share .acts button {
  min-height: 38px;
  padding: 0 14px;
  font: inherit;
  cursor: pointer;
  background: transparent;
  color: var(--gold);
  border: 1px solid var(--line);
}
.zw-share .acts button.primary {
  background: var(--gold);
  color: #16120a;
  border-color: var(--gold);
}
.zw-share .acts button:disabled { opacity: .45; }
.zw-share .hint { font-size: 12px; color: var(--ink-3); margin: 6px 0; }
.zw-share .toast { font-size: 13px; color: var(--gold); }
.zw-share img { width: 100%; margin-top: 10px; display: block; border: 1px solid var(--line); }
.zw-share .url { font-size: 11px; color: var(--ink-3); word-break: break-all; margin: 8px 0 0; }

body.col-ziwei .building { color: var(--ink-2); }
body.col-ziwei .planned-list b { color: var(--ink); }
body.col-ziwei .grid-cards .card:hover { border-color: var(--gold); }

@media (min-width: 520px) {
  .zw-gong { padding: 8px 7px 6px; }
  .zw-majors { writing-mode: vertical-rl; flex-wrap: nowrap; gap: 8px; height: 58%; }
  .zw-major { writing-mode: vertical-rl; letter-spacing: .18em; }
  .zw-hua, .zw-mw { writing-mode: horizontal-tb; }
}
