/* 午夜档案独立样式。所有选择器均限定在最后一个游戏，不影响站点其他功能。 */
.archive-section .game-heading { align-items: center; }
.archive-section .game-heading h2 { font-size: clamp(26px, 3vw, 36px); line-height: 1.5; }
.archive-section .game-heading h2 span { display: block; font-size: .62em; letter-spacing: .1em; color: #b4a0b7; margin-top: 8px; }
.archive-shell { --archive-accent: #a9b6c8; position: relative; isolation: isolate; overflow: hidden; border: 1px solid #9d94b13b; background: #101019; box-shadow: 0 28px 90px #0004; color: #c6c3d1; }
.archive-shell::before { content: ''; position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse at 24% 35%, #be8a3e30, transparent 65%), #21161c; opacity: 0; transition: opacity 2s ease; }
.archive-shell.is-warm { --archive-accent: #d5b17c; border-color: #c4a37170; }
.archive-shell.is-warm::before { opacity: 1; }
.archive-meta { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 16px 24px; border-bottom: 1px solid #a6a1ba20; font-size: 10px; letter-spacing: .13em; color: #9a94ac; }
.archive-meta b { color: #d9d0dc; font-weight: 400; }
.archive-meta > span:last-child { text-align: right; }
.archive-layout { display: grid; grid-template-columns: 245px minmax(0, 1fr); }
.archive-cabinet { position: relative; display: flex; flex-direction: column; padding: 30px 25px; border-right: 1px solid #a6a1ba20; background: repeating-linear-gradient(0deg, transparent 0 78px, #af9eba08 79px 80px), radial-gradient(ellipse at 20% 0, #51435a2e, transparent 70%); }
.archive-room-label { margin: 0 0 27px; color: #88839a; font-size: 9px; letter-spacing: .12em; }
.archive-file { position: relative; width: 148px; height: 185px; margin: 0 auto 30px; perspective: 700px; }
.archive-file-page { position: absolute; inset: 10px 9px 9px; padding: 25px 16px; border: 1px solid #c1b4ab48; background: #b1a0a119; transform: translateY(0); transition: transform 1.9s, box-shadow 1.9s; }
.archive-file-page i { display: block; height: 1px; margin: 13px 0; background: #b5a6a83b; }
.archive-file-front { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px solid #9c91aa63; background: linear-gradient(135deg, #2e2638, #191622); box-shadow: 6px 8px 0 #03030945; transform-origin: left; transition: transform 1.9s cubic-bezier(.22,.65,.3,1), background 1.9s; }
.archive-file-front::before { content: ''; position: absolute; inset: 8px; border: 1px solid #afa2b21c; }
.archive-file-front span { font-size: 9px; letter-spacing: .25em; color: #93829d; }
.archive-file-front strong { display: block; margin: 15px 0 13px; font: 47px Georgia, serif; letter-spacing: .06em; font-weight: 400; color: #c2b3c5; }
.archive-file-front small { font-size: 10px; letter-spacing: .2em; color: #a090a4; }
.is-warm .archive-file-front { transform: rotateY(-58deg); background: #302431; }
.is-warm .archive-file-page { transform: translate(15px, -12px); box-shadow: 0 0 45px #d5a65c2d; }
.archive-seals { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; }
.archive-seals li { display: flex; align-items: center; gap: 12px; color: #797388; }
.archive-seal-icon { flex-shrink: 0; display: grid; place-items: center; width: 41px; height: 41px; border: 1px solid #9d90ac3a; border-radius: 50%; outline: 1px solid #9d90ac18; outline-offset: -5px; font: 11px Georgia, serif; transition: color .6s, border-color .6s, box-shadow .6s; }
.archive-seals b { display: block; font-size: 11px; font-weight: 400; letter-spacing: .08em; }
.archive-seals small { display: block; font-size: 9px; margin-top: 5px; }
.archive-seals .is-confirmed { color: #d2b07f; }
.is-confirmed .archive-seal-icon { border-color: #c7a06999; color: #e1ba80; box-shadow: 0 0 18px #b98c3730; }
.archive-evidence { margin-top: 28px; padding-top: 19px; border-top: 1px solid #b5a1be25; }
.archive-evidence h3 { font-size: 10px; font-weight: 400; letter-spacing: .12em; color: #b0a2b9; margin: 0 0 12px; }
.archive-evidence p { color: #93859e; font-size: 10px; line-height: 1.9; margin: 8px 0; overflow-wrap: anywhere; white-space: pre-line; }
.archive-evidence .evidence-confirmed { color: #ceb38e; }
.archive-desk { padding: 32px clamp(20px, 3vw, 42px); min-width: 0; }
.archive-kicker { margin: 0 0 17px; color: #a59bb6; font-size: 10px; letter-spacing: .14em; line-height: 1.8; }
.archive-intro h3 { margin: 0 0 22px; color: #e0d8e4; font-size: clamp(24px, 3vw, 31px); line-height: 1.7; letter-spacing: .05em; font-weight: 400; }
.archive-intro > p:not(.archive-kicker) { margin: 14px 0; color: #a49bb3; font-size: 13px; line-height: 2.1; }
.archive-intro .archive-primary { margin-top: 18px; }
.archive-primary { min-height: 45px; padding: 12px 22px; border: 1px solid #b7a2c06e; background: #ada0c00b; color: #d0bfda; font-size: 12px; letter-spacing: .1em; transition: background .25s, border-color .25s; }
.archive-primary:hover { border-color: #d1b483; background: #c6a66e19; }
.archive-primary:disabled { opacity: .5; cursor: default; }
.archive-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-bottom: 26px; }
.archive-tabs button { padding: 11px 5px; min-height: 47px; border: 1px solid #a99abb22; background: #05050c33; color: #8e819d; text-align: center; font-size: 10px; line-height: 1.7; }
.archive-tabs button span { display: block; font-size: 9px; }
.archive-tabs button[aria-current] { border-color: #b2a0c477; background: #a795c012; color: #e0cce9; }
.archive-tabs button:disabled { opacity: .35; cursor: default; }
.archive-chapter h3 { margin: 0 0 13px; color: #ddd1e1; font-size: 22px; font-weight: 400; letter-spacing: .06em; line-height: 1.7; }
.archive-instruction { margin: 0 0 20px; color: #a99cb5; font-size: 12px; line-height: 2; }
.archive-records { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 20px 0; }
.archive-record { padding: 14px; border: 1px solid #9d91ac36; background: #08081066; }
.archive-record header { display: flex; justify-content: space-between; gap: 8px; font-size: 10px; color: #a89ab6; }
.archive-record time { display: block; margin: 12px 0 8px; font: 19px Georgia, serif; color: #e0d5e8; letter-spacing: .05em; }
.archive-record time small { display: block; color: #7f748e; font-size: 9px; margin-bottom: 6px; }
.archive-record p { margin: 0; color: #9689a4; font-size: 10px; line-height: 1.8; }
.archive-form fieldset { min-width: 0; padding: 0; margin: 0; border: 0; }
.archive-form legend { padding: 0; margin: 0 0 12px; color: #bbabc8; font-size: 11px; line-height: 1.9; }
.archive-order { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; }
.archive-order label { min-width: 0; font-size: 10px; color: #93849f; }
.archive-order select { margin-top: 8px; width: 100%; min-width: 0; min-height: 43px; padding: 8px 4px; border: 1px solid #aa94bc50; border-radius: 0; background: #15111f; color: #d5c3e1; font: 12px var(--serif); }
.archive-form input:focus-visible, .archive-form select:focus-visible { outline: 2px solid #dbba83; outline-offset: 3px; }
.archive-form input[aria-invalid], .archive-form select[aria-invalid] { border-color: #ce8a7e; }
.archive-form .archive-primary { margin-top: 18px; width: 100%; }
.archive-form fieldset:disabled { opacity: .55; }
.archive-report { position: relative; border: 1px solid #a89ab338; padding: 20px; background: linear-gradient(120deg, #31243e35, #08081166); }
.archive-report p { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 10px; margin: 0; padding: 12px 0; border-bottom: 1px solid #9f8db31b; font-size: 13px; color: #b9a9c5; line-height: 2; }
.archive-report p:last-of-type { border-bottom: 0; }
.archive-report p > span:first-child { color: #766780; font-size: 10px; }
.archive-report.is-lit { box-shadow: inset 0 0 70px #a97dc51d; border-color: #b59dc46b; }
.archive-inspect { display: block; min-height: 42px; padding: 10px 0; margin: 12px 0 0 auto; background: none; border: 0; color: #c5acd4; font-size: 11px; }
.archive-margin-note { margin: 14px 0 0; padding: 12px 15px; border-left: 1px solid #ad90c390; background: #a98cc110; color: #bda4ce; font-size: 11px; line-height: 2; animation: archive-note-in .4s ease; }
.archive-code-label { display: block; color: #ad9cbb; font-size: 11px; margin: 22px 0 10px; }
.archive-code { width: 100%; min-width: 0; height: 47px; border: 1px solid #ad94bd55; border-radius: 0; background: #0b0913; color: #e4cfec; padding: 11px 14px; font: 16px var(--serif); letter-spacing: .15em; }
.archive-rules { margin: 16px 0 20px; padding: 17px 19px; border: 1px solid #a490b538; background: #09081260; font-size: 12px; color: #b5a1c4; line-height: 2; }
.archive-rules p { margin: 4px 0; }
.archive-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.archive-choice { position: relative; cursor: pointer; min-width: 0; }
.archive-choice input { position: absolute; inset: 0; margin: 0; opacity: 0; width: 100%; height: 100%; cursor: pointer; }
.archive-choice-body { display: block; padding: 16px; height: 100%; border: 1px solid #a58ab23e; background: #09070e66; transition: background .2s, border-color .2s; }
.archive-choice-body b { display: block; margin-bottom: 10px; color: #c5b2d0; font-size: 13px; font-weight: 400; letter-spacing: .06em; }
.archive-choice-body span { display: block; color: #93839e; font-size: 10px; line-height: 1.9; }
.archive-choice input:checked + .archive-choice-body { border-color: #c7a66f; background: #c2a16e15; }
.archive-choice input:focus-visible + .archive-choice-body { outline: 2px solid #dbba83; outline-offset: 3px; }
.archive-stage-actions { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-top: 16px; }
.archive-hint-button { border: 0; background: none; min-height: 42px; padding: 8px 0; color: #a68db8; font-size: 11px; }
.archive-next { min-height: 42px; padding: 8px 15px; background: #b08f5f0f; border: 1px solid #ad8a574d; color: #d6b880; font-size: 11px; }
.archive-feedback { min-height: 20px; margin: 15px 0 0; color: #c5b179; font-size: 11px; line-height: 1.9; }
.archive-feedback.is-error { color: #d4a195; }
.archive-hint { margin: 10px 0 0; padding: 12px 14px; border-left: 1px solid #a78ab666; background: #9b7ab40a; font-size: 11px; color: #b4a2c3; line-height: 2; }
.archive-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 15px; padding: 16px 24px; border-top: 1px solid #9f90ad25; }
.archive-progress { display: flex; gap: 12px; align-items: center; flex: 1; color: #9b8ba8; font-size: 10px; }
.archive-progress progress { width: min(180px, 30vw); min-width: 0; height: 3px; border: 0; appearance: none; background: #33303c; accent-color: #c7a46c; }
.archive-progress progress::-webkit-progress-bar { background: #33303c; }
.archive-progress progress::-webkit-progress-value { background: #c7a46c; transition: width .6s; }
.archive-progress progress::-moz-progress-bar { background: #c7a46c; }
.archive-reset { border: 0; background: none; padding: 8px 0; min-height: 35px; color: #a697b0; font-size: 10px; }
.archive-reset:disabled { opacity: .4; cursor: default; }
.archive-unsealing { position: absolute; inset: 0; z-index: 6; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; background: #0c0a15e6; text-align: center; padding: 25px; animation: archive-decrypt-film 2.7s ease both; }
.archive-unsealing > span, .archive-unsealing > h3, .archive-unsealing > p { position: relative; z-index: 1; }
.archive-opening-sky { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.archive-meteor { position: absolute; width: clamp(55px, 9vw, 125px); height: 1px; opacity: 0; background: linear-gradient(90deg, transparent, #bcb3d879, #eee9ee); transform: rotate(-24deg); animation: archive-meteor 2.1s ease-out both; }
.archive-meteor:nth-child(1) { top: 18%; left: 24%; animation-delay: .25s; }
.archive-meteor:nth-child(2) { top: 34%; left: 64%; animation-delay: .75s; width: 74px; }
.archive-meteor:nth-child(3) { top: 68%; left: 38%; animation-delay: 1.15s; width: 58px; }
.archive-stardust { position: absolute; width: 2px; height: 2px; border-radius: 50%; background: #ead6b1; box-shadow: 0 0 7px #dec29490; opacity: 0; animation: archive-stardust 2.3s ease-in-out both; }
.archive-stardust:nth-child(4) { top: 16%; left: 19%; animation-delay: .2s; }
.archive-stardust:nth-child(5) { top: 30%; left: 75%; animation-delay: .5s; }
.archive-stardust:nth-child(6) { top: 52%; left: 13%; animation-delay: .7s; }
.archive-stardust:nth-child(7) { top: 72%; left: 83%; animation-delay: .1s; }
.archive-stardust:nth-child(8) { top: 82%; left: 32%; animation-delay: .4s; }
.archive-stardust:nth-child(9) { top: 22%; left: 55%; animation-delay: .8s; }
.archive-unsealing span { color: #bfa47e; font: 13px Georgia, serif; letter-spacing: .45em; }
.archive-unsealing h3 { color: #e6d6bf; font-size: clamp(23px, 4vw, 38px); font-weight: 400; letter-spacing: .18em; margin: 24px 0; }
.archive-unsealing p { color: #af9eaf; font-size: 11px; letter-spacing: .1em; }
.archive-shell[data-state="complete"] .archive-desk { display: flex; flex-direction: column; justify-content: center; }
.archive-reveal { width: min(100%, 620px); margin-inline: auto; padding: clamp(28px, 4vw, 48px) clamp(0px, 2vw, 22px); }
.is-opening .archive-reveal { animation: archive-letter-arrive 1.4s cubic-bezier(.22,.65,.3,1) both; }
.is-opening .archive-blessing { animation: archive-letter-text 1.2s ease .8s both; }
.archive-reveal .archive-kicker { color: #bc9f76; margin-bottom: 24px; }
.archive-reveal h3 { color: #ebd4ae; font-size: clamp(28px, 3vw, 36px); font-weight: 400; line-height: 1.55; letter-spacing: .065em; margin: 15px 0 29px; text-shadow: 0 2px 20px #d8b57d20; }
.archive-recipient { color: #bfa080; font-size: 13px; letter-spacing: .16em; margin: 0; }
.archive-blessing { max-width: 100%; overflow-wrap: anywhere; }
.archive-blessing p { color: #d2bba3; font-size: clamp(15px, 1.15vw, 17px); line-height: 2.15; letter-spacing: .035em; margin: 0 0 17px; }
.archive-blessing p:last-child { margin: 24px 0 0; text-align: left; }
.archive-reveal-rule { width: 70px; height: 1px; background: #c5a16b66; margin: 32px 0 20px; }
.archive-truth { color: #a68b83; font-size: 11px; line-height: 2; margin: 0; }
.archive-conclusions { border-top: 1px solid #bd9d702c; margin-top: 23px; padding-top: 15px; }
.archive-conclusions summary { color: #b29678; font-size: 10px; min-height: 35px; cursor: pointer; line-height: 2; }
.archive-conclusions p { color: #ae9688; font-size: 11px; line-height: 2; margin: 10px 0; }
.archive-dust { position: absolute; inset: 0; pointer-events: none; z-index: 7; overflow: hidden; }
.archive-dust i { position: absolute; width: 2px; height: 2px; border-radius: 50%; background: #ffe0a7; box-shadow: 0 0 9px #efbb71; animation: archive-dust 1.8s ease-out var(--delay) both; opacity: 0; }
@keyframes archive-note-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
@keyframes archive-decrypt-film { 0% { opacity: 0; } 15%, 78% { opacity: 1; } 100% { opacity: 0; } }
@keyframes archive-meteor { 0% { opacity: 0; transform: translate(0, 0) rotate(-24deg); } 18%, 50% { opacity: .55; } 100% { opacity: 0; transform: translate(65px, -29px) rotate(-24deg); } }
@keyframes archive-stardust { 0%, 100% { opacity: 0; transform: translateY(3px); } 35%, 60% { opacity: .55; } }
@keyframes archive-letter-arrive { from { opacity: 0; transform: translateY(12px) scale(.99); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes archive-letter-text { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
@keyframes archive-dust { 0% { opacity: 0; transform: translate(0,0); } 20% { opacity: .8; } 100% { opacity: 0; transform: translate(var(--dx),var(--dy)); } }
@media (max-width: 900px) {
  .archive-layout { grid-template-columns: 190px minmax(0, 1fr); }
  .archive-cabinet { padding: 26px 18px; }
  .archive-file { width: 125px; height: 157px; }
  .archive-desk { padding: 28px 22px; }
}
@media (max-width: 650px) {
  .archive-section .game-heading { display: block; }
  .archive-section .game-heading > p { margin-top: 19px; }
  .archive-layout { grid-template-columns: minmax(0, 1fr); }
  .archive-cabinet { display: grid; grid-template-columns: 85px minmax(0, 1fr); gap: 0 22px; padding: 22px; border-right: 0; border-bottom: 1px solid #a6a1ba20; }
  .archive-room-label { grid-column: 1 / -1; margin-bottom: 20px; }
  .archive-file { width: 80px; height: 105px; margin: 0; align-self: center; }
  .archive-file-front strong { font-size: 26px; margin: 9px 0; }
  .archive-file-front span, .archive-file-front small { font-size: 7px; letter-spacing: .1em; }
  .archive-seals { gap: 8px; }
  .archive-seals li { gap: 10px; }
  .archive-seal-icon { width: 28px; height: 28px; font-size: 9px; outline-offset: -4px; }
  .archive-seals b { font-size: 10px; }
  .archive-seals small { display: none; }
  .archive-evidence { grid-column: 1 / -1; margin-top: 20px; padding-top: 14px; }
  .archive-evidence h3 { margin-bottom: 8px; }
  .archive-meta { padding: 14px 18px; font-size: 9px; letter-spacing: .04em; }
  .archive-desk { padding: 25px 18px; }
  .archive-shell[data-state="complete"] .archive-desk { padding-inline: 14px; }
  .archive-reveal { width: 100%; padding: 12px 0 8px; }
  .archive-reveal .archive-kicker { margin-bottom: 18px; }
  .archive-reveal h3 { font-size: clamp(24px, 6vw, 29px); line-height: 1.55; margin: 12px 0 22px; }
  .archive-blessing p { font-size: 15px; line-height: 2.05; letter-spacing: 0; margin-bottom: 15px; }
  .archive-blessing p:last-child { margin-top: 19px; }
  .archive-reveal-rule { margin: 25px 0 16px; }
  .archive-conclusions { margin-top: 19px; }
  .archive-order { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .archive-report { padding: 14px; }
  .archive-choice-body { padding: 13px; }
  .archive-footer { padding: 14px 18px; }
  .archive-progress { flex-basis: 100%; }
  .archive-progress progress { flex: 1; width: auto; }
}
@media (max-width: 380px) {
  .archive-records, .archive-choice-grid { grid-template-columns: minmax(0, 1fr); }
  .archive-cabinet { padding: 20px 16px; }
  .archive-record time { font-size: 18px; }
}

/* 只增强未解密档案的阅读层级；最终信件沿用原来的排版。 */
.archive-shell:not([data-state="complete"]) .archive-intro h3 {
  font-size: clamp(28px, 3.5vw, 37px);
  line-height: 1.65;
  color: #e2d9e5;
}
.archive-shell:not([data-state="complete"]) .archive-intro > p:not(.archive-kicker) {
  margin: 17px 0;
  font-size: 16px;
  line-height: 2.2;
  color: #c2b6c8;
}
.archive-shell:not([data-state="complete"]) .archive-intro .archive-kicker {
  font-size: 12px;
  color: #bfb1c6;
}
.archive-shell:not([data-state="complete"]) .archive-intro .archive-primary {
  font-size: 14px;
}
.archive-shell:not([data-state="complete"]) .archive-meta {
  font-size: 12px;
  line-height: 1.6;
  color: #bab0c2;
}
.archive-shell:not([data-state="complete"]) .archive-room-label {
  font-size: 11px;
  color: #b1a5b9;
}
.archive-shell:not([data-state="complete"]) .archive-seals li {
  color: #b8adbe;
}
.archive-shell:not([data-state="complete"]) .archive-seals li.is-confirmed {
  color: #d7bc91;
}
.archive-shell:not([data-state="complete"]) .archive-seals b {
  font-size: 13px;
  line-height: 1.6;
}
.archive-shell:not([data-state="complete"]) .archive-seals small {
  font-size: 11px;
  line-height: 1.5;
  color: #a99eb0;
}
.archive-shell:not([data-state="complete"]) .archive-seals .is-confirmed small {
  color: #cdb28e;
}
.archive-shell:not([data-state="complete"]) .archive-evidence h3,
.archive-shell:not([data-state="complete"]) .archive-evidence p {
  font-size: 12px;
  line-height: 1.9;
  color: #bcaec3;
}
.archive-shell:not([data-state="complete"]) .archive-evidence p.evidence-confirmed {
  color: #dcc098;
}
.archive-shell:not([data-state="complete"]) .archive-progress {
  font-size: 12px;
  line-height: 1.6;
  color: #b9aabc;
}
.archive-shell:not([data-state="complete"]) .archive-reset {
  font-size: 12px;
  color: #c0b1c5;
}
@media (max-width: 650px) {
  .archive-shell:not([data-state="complete"]) .archive-intro h3 {
    font-size: clamp(26px, 6.5vw, 28px);
  }
  .archive-shell:not([data-state="complete"]) .archive-intro > p:not(.archive-kicker) {
    font-size: 15px;
    line-height: 2.15;
  }
  .archive-shell:not([data-state="complete"]) .archive-meta {
    font-size: 11px;
    letter-spacing: .04em;
  }
  .archive-shell:not([data-state="complete"]) .archive-seals b { font-size: 12px; }
  .archive-shell:not([data-state="complete"]) .archive-progress,
  .archive-shell:not([data-state="complete"]) .archive-reset { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  .archive-shell, .archive-shell *, .archive-shell::before { animation: none !important; transition: none !important; }
}
