:root {
  --paper: #f2eee3;
  --paper-deep: #e8e1d2;
  --white: #fffdf7;
  --ink: #18392c;
  --forest: #194b37;
  --forest-dark: #103426;
  --moss: #6b786d;
  --orange: #d68643;
  --orange-dark: #b86c32;
  --orange-pale: #efc58f;
  --yellow: #efbd64;
  --blue: #5a8f92;
  --line: rgba(25, 75, 55, .16);
  --shadow: 0 18px 48px rgba(28, 56, 43, .12);
  color: var(--ink);
  background: var(--paper);
  font-family: "PingFang SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;
  font-synthesis: none;
}

* { box-sizing: border-box; }
html { min-width: 320px; min-height: 100%; background: var(--paper); }
body { margin: 0; min-width: 320px; min-height: 100vh; min-height: 100dvh; background: var(--paper); -webkit-font-smoothing: antialiased; }
button, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
.app-shell { width: 100%; min-height: 100vh; min-height: 100dvh; }
.eyebrow { margin: 0; color: var(--orange); font-size: 10px; font-weight: 800; letter-spacing: .2em; }

.unified-page { width: min(100%, 480px); min-height: 100vh; min-height: 100dvh; margin: 0 auto; position: relative; overflow: hidden; background: radial-gradient(circle at 80% 10%, rgba(214,134,67,.1), transparent 25%), linear-gradient(rgba(25,75,55,.027) 1px, transparent 1px), linear-gradient(90deg,rgba(25,75,55,.027) 1px, transparent 1px), var(--paper); background-size: auto, 24px 24px, 24px 24px, auto; }
.unified-header { min-height: 76px; padding: max(19px, env(safe-area-inset-top)) 21px 12px; display: flex; align-items: center; justify-content: space-between; position: relative; z-index: 4; }
.unified-header--compact { min-height: 66px; padding-top: max(14px, env(safe-area-inset-top)); }
.wordmark { display: flex; align-items: center; gap: 10px; }
.wordmark > i, .npc-brand > i { width: 23px; height: 29px; display: block; position: relative; border-bottom: 2px solid var(--orange); }
.wordmark > i::before, .npc-brand > i::before { content: ""; position: absolute; width: 13px; height: 22px; left: 5px; top: 0; border-radius: 100% 0 100% 0; background: var(--forest); transform: rotate(-34deg); }
.wordmark > span, .npc-brand > span { display: grid; gap: 1px; font-family: "Songti SC", serif; font-size: 14px; font-weight: 800; letter-spacing: .08em; }
.wordmark small, .npc-brand small { color: var(--moss); font-family: Georgia, serif; font-size: 7px; font-weight: 500; letter-spacing: .17em; }
.header-login { min-height: 34px; padding: 0 14px; border: 1px solid var(--forest); border-radius: 18px; color: var(--forest); background: rgba(255,253,247,.54); font-size: 11px; font-weight: 700; }
.header-access { display:flex; align-items:center; gap:7px; }.header-register { min-height:34px; padding:0 14px; border:1px solid var(--forest); border-radius:18px; color:#fff; background:var(--forest); font-size:11px; font-weight:700; }
.identity-chip { padding: 3px 0 3px 5px; display: flex; align-items: center; gap: 8px; border: 0; border-radius: 20px; color: var(--ink); background: transparent; text-align: left; }
.identity-chip:focus-visible { outline: 2px solid rgba(214,134,67,.58); outline-offset: 3px; }
.identity-chip > span { width: 31px; height: 31px; display: grid; place-items: center; border-radius: 50%; color: var(--white); background: var(--forest); font-size: 11px; }
.identity-chip p { margin: 0; display: grid; gap: 1px; }
.identity-chip strong { font-size: 10px; }
.identity-chip small { color: var(--moss); font-size: 8px; }
.identity-chip > i { margin-left: -2px; color: var(--moss); font-size: 10px; font-style: normal; }
.account-popover { min-width: 116px; padding: 6px; position: fixed; z-index: 48; top: max(66px, calc(env(safe-area-inset-top) + 48px)); right: max(20px, calc((100vw - 480px) / 2 + 20px)); border: 1px solid rgba(25,75,55,.12); border-radius: 11px; background: rgba(255,253,247,.98); box-shadow: 0 14px 36px rgba(14,43,31,.2); animation: dialog-in .16s ease-out; }
.account-popover button { width: 100%; min-height: 38px; padding: 0 12px; border: 0; border-radius: 7px; color: #884b39; background: rgba(168,91,67,.07); font-size: 10px; font-weight: 700; text-align: left; }
.logout-dialog-backdrop { position: fixed; z-index: 60; inset: 0; padding: 20px; display: grid; place-items: center; background: rgba(9,30,21,.46); backdrop-filter: blur(4px); }
.logout-dialog { width: min(100%, 350px); padding: 25px 22px 21px; border: 1px solid rgba(255,255,255,.55); border-radius: 17px; background: rgba(255,253,247,.98); box-shadow: 0 26px 70px rgba(7,33,22,.3); animation: dialog-in .2s ease-out; }
.logout-dialog h2 { margin: 9px 0 12px; font: 800 24px "Songti SC",serif; }
.logout-dialog > p:not(.eyebrow):not(.logout-error) { margin: 0; color: var(--moss); font-size: 11px; line-height: 1.75; }
.logout-error { margin: 12px 0 0; color: #9c4e38; font-size: 10px; }
.logout-dialog-actions { margin-top: 21px; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.logout-dialog-actions button { min-height: 43px; border: 1px solid var(--line); border-radius: 9px; color: var(--moss); background: white; font-size: 11px; font-weight: 700; }
.logout-dialog-actions .is-confirm { display: flex; align-items: center; justify-content: center; gap: 7px; border-color: #a85b43; color: white; background: #a85b43; }
.logout-dialog-actions button:disabled { cursor: wait; opacity: .65; }

.landing-page { display: flex; flex-direction: column; isolation: isolate; }
.landing-page::before { content: ""; width: 320px; height: 320px; position: absolute; z-index: 1; right: -168px; top: 92px; border: 1px solid rgba(214,134,67,.2); border-radius: 48% 52% 55% 45%; transform: rotate(24deg); animation: landing-contour 22s ease-in-out infinite alternate; }
.landing-atmosphere { position: absolute; z-index: -1; inset: 0; overflow: hidden; pointer-events: none; background: linear-gradient(180deg, rgba(220,229,216,.7), rgba(234,231,215,.72) 48%, var(--paper) 76%); }
.landing-depth { position: absolute; inset: -4% -6% 35%; opacity: .46; transform-origin: 50% 70%; background: radial-gradient(ellipse at 50% 92%, rgba(242,238,227,.08) 0 12%, transparent 13%), repeating-linear-gradient(83deg, transparent 0 11%, rgba(18,64,45,.17) 12% 14%, transparent 15% 23%), linear-gradient(180deg,#8aa58e 0,#b8c3aa 48%,transparent 96%); clip-path: polygon(0 0,100% 0,100% 83%,72% 72%,54% 100%,37% 73%,0 88%); animation: landing-push 24s ease-in-out infinite alternate; }
.landing-light { position: absolute; width: 86%; height: 60%; left: 25%; top: -13%; opacity: .4; transform: rotate(-12deg); background: linear-gradient(115deg, transparent 24%, rgba(255,244,204,.65) 48%, transparent 66%); filter: blur(12px); animation: landing-light 12s ease-in-out infinite alternate; }
.landing-mist { width: 115%; height: 25%; position: absolute; left: -8%; border-radius: 50%; opacity: .38; filter: blur(18px); background: radial-gradient(ellipse, rgba(246,243,231,.86), rgba(246,243,231,.08) 68%, transparent 73%); }
.landing-mist--a { top: 24%; animation: landing-mist 16s ease-in-out infinite alternate; }
.landing-mist--b { top: 43%; opacity: .24; animation: landing-mist 21s ease-in-out -7s infinite alternate-reverse; }
/* Add landing-page--illustrated and set --landing-artwork:url(...) after the supplied asset is approved. */
.landing-page--illustrated .landing-atmosphere { background-image: linear-gradient(180deg,rgba(233,231,214,.25),rgba(16,51,36,.28) 42%,rgba(242,238,227,.98) 78%), var(--landing-artwork); background-size: cover; background-position: 58% 50%; filter: saturate(.62) contrast(.86) brightness(.84); animation: landing-push 24s ease-in-out infinite alternate; }
.landing-orbit { width: min(67vw, 280px); height: min(67vw, 280px); margin: 38px auto -8px; position: relative; z-index: 1; display: grid; place-items: center; }
.landing-orbit span, .landing-orbit > i { position: absolute; inset: 14px; border: 1px solid rgba(25,75,55,.22); border-radius: 46% 54% 51% 49%; animation: orbit 30s linear infinite; }
.landing-orbit > i { inset: 39px; border-color: rgba(214,134,67,.4); animation-direction: reverse; animation-duration: 37s; }
.landing-orbit b { width: 122px; height: 122px; display: grid; place-content: center; justify-items: center; gap: 7px; border: 1px solid rgba(255,253,247,.32); border-radius: 50%; color: var(--paper); background: rgba(20,68,49,.91); box-shadow: 0 20px 45px rgba(25,75,55,.2); font-family: "Songti SC", serif; font-size: 52px; animation: landing-mark-breathe 7.5s ease-in-out infinite; }
.landing-orbit b small { color: rgba(255,253,247,.58); font: 5px Georgia,serif; letter-spacing: .17em; }
.landing-copy { padding: 0 29px; position: relative; z-index: 2; text-shadow: 0 1px 0 rgba(255,253,247,.72); }
.landing-copy h1 { margin: 11px 0 17px; font-family: "Songti SC", serif; font-size: clamp(53px, 15vw, 70px); line-height: .96; letter-spacing: -.06em; }
.landing-copy > p:last-child { margin: 0; color: #57685e; font-size: 14px; line-height: 1.85; }
.landing-foot { margin-top: auto; padding: 25px 29px max(26px, env(safe-area-inset-bottom)); display: flex; align-items: center; gap: 10px; color: var(--moss); font-size: 8px; letter-spacing: .09em; }
.landing-foot i { height: 1px; flex: 1; background: var(--line); }
.inline-error { margin: -17px 29px 17px; color: #a45335; font-size: 11px; }

.center-page { padding: 0 24px 40px; display: grid; place-content: center; justify-items: center; text-align: center; }
.center-page .unified-header { position: absolute; inset: 0 0 auto; }
.center-page h1 { margin: 15px 0 8px; font-family: "Songti SC", serif; font-size: 30px; }
.center-page > p:last-of-type { max-width: 290px; margin: 0; color: var(--moss); font-size: 12px; line-height: 1.7; }
.boot-page > .wordmark { position: absolute; top: 25px; left: 22px; }
.forest-loader { width: 82px; height: 82px; margin-bottom: 24px; position: relative; border: 1px solid var(--line); border-radius: 48% 52% 44% 56%; animation: orbit 2.5s linear infinite; }
.forest-loader span { position: absolute; inset: 13px; border: 1px solid var(--orange-pale); border-radius: 50%; }
.forest-loader i { width: 18px; height: 28px; position: absolute; left: 31px; top: 25px; border-radius: 100% 0; background: var(--forest); transform: rotate(-25deg); }
.error-symbol { width: 76px; height: 76px; margin-bottom: 25px; display: grid; place-items: center; border: 1px solid var(--orange); border-radius: 50%; color: var(--orange); font-family: Georgia, serif; font-size: 35px; }

.flow-page { display: flex; flex-direction: column; padding-bottom: max(26px, env(safe-area-inset-bottom)); }
.flow-card { margin: auto 22px; padding: 32px 25px 26px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,253,247,.72); box-shadow: var(--shadow); }
.flow-card .step-number { margin: 0; color: var(--orange); font: 700 10px Georgia, serif; letter-spacing: .16em; }
.leaf-symbol { width: 100px; height: 100px; margin: 30px auto 25px; display: grid; place-items: center; border-radius: 100% 0 100% 0; color: var(--paper); background: var(--forest); transform: rotate(-10deg); font: 44px "Songti SC", serif; }
.flow-card h1 { margin: 0; text-align: center; font: 800 38px "Songti SC", serif; }
.flow-card > p:not(.step-number) { margin: 13px 0 28px; color: var(--moss); text-align: center; font-size: 13px; line-height: 1.75; }
.primary-action { width: 100%; min-height: 54px; padding: 0 18px; display: flex; align-items: center; justify-content: space-between; border: 0; border-radius: 9px; color: var(--white); background: var(--forest); box-shadow: 0 10px 22px rgba(25,75,55,.17); font-size: 13px; font-weight: 700; }
.primary-action span { color: var(--orange-pale); font-size: 20px; }

/* Unified access */
.login-backdrop { z-index: 30; padding: 18px; align-items: center; backdrop-filter: blur(5px); }
.login-sheet { width: min(100%, 420px); padding: 30px 25px max(27px, env(safe-area-inset-bottom)); position: relative; border: 1px solid rgba(255,255,255,.52); border-radius: 22px; background: rgba(255,253,247,.97); box-shadow: 0 28px 80px rgba(7,33,22,.28); animation: dialog-in .24s ease-out; }
.sheet-close { width: 34px; height: 34px; position: absolute; right: 15px; top: 14px; border: 0; border-radius: 50%; color: var(--moss); background: rgba(25,75,55,.07); font-size: 22px; line-height: 1; }
.login-sheet h2 { margin: 10px 0 8px; font: 800 31px "Songti SC", serif; }
.login-intro { margin: 0 0 23px; color: var(--moss); font-size: 12px; }
.access-options { display: grid; gap: 10px; }
.access-options button { min-height: 78px; padding: 13px 15px; display: grid; grid-template-columns: 44px 1fr auto; align-items: center; gap: 13px; border: 1px solid var(--line); border-radius: 12px; color: var(--ink); background: rgba(242,238,227,.55); text-align: left; }
.access-options button:hover { border-color: rgba(25,75,55,.35); background: var(--white); }
.access-options button:disabled { cursor: wait; opacity: .7; }
.access-options i { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; color: var(--paper); background: var(--forest); font-size: 10px; font-style: normal; font-weight: 800; }
.access-options span { display: grid; gap: 5px; }
.access-options small { color: var(--moss); font-size: 9px; }
.access-options strong { font: 700 16px "Songti SC", serif; }
.access-options b { color: var(--orange); font-size: 18px; }
.login-back { margin: -4px 0 15px; padding: 0; border: 0; color: var(--moss); background: transparent; font-size: 10px; }
.admin-login-form { display: grid; gap: 13px; }
.admin-login-form label { display: grid; gap: 7px; color: var(--moss); font-size: 10px; font-weight: 700; }
.admin-login-form input { width: 100%; min-height: 48px; padding: 0 13px; border: 1px solid var(--line); border-radius: 9px; outline: 0; color: var(--ink); background: white; font: inherit; }
.admin-login-form input:focus { border-color: var(--forest); box-shadow: 0 0 0 3px rgba(25,75,55,.07); }
.table-action-hint { display: block; max-width: 9rem; margin-top: .4rem; color: #9b6a45; line-height: 1.35; }
.stage-debug { margin: 1rem 0 0; color: #6f7c73; font: 12px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; overflow-wrap: anywhere; }
.admin-login-form .primary-action { margin-top: 5px; }
.admin-login-form .primary-action:disabled { cursor: wait; opacity: .78; }
.button-spinner { width: 15px; height: 15px; display: inline-block; flex: 0 0 auto; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: button-spin .7s linear infinite; }
.access-options i .button-spinner { width: 17px; height: 17px; color: var(--orange-pale); }
.login-pending { margin: 13px 0 0; color: var(--moss); font-size: 10px; line-height: 1.55; text-align: center; }
.login-error { margin: 13px 0 0; padding: 9px 11px; border-radius: 7px; color: #98492f; background: #f4e1d8; font-size: 10px; line-height: 1.55; }
.error-id { margin: 11px 0 0; color: rgba(42,66,54,.66); font: 9px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .03em; }

@keyframes button-spin { to { transform: rotate(360deg); } }

/* Once-only story prologue */
.prologue-page { min-height: 100dvh; padding: max(26px, env(safe-area-inset-top)) 27px max(23px, env(safe-area-inset-bottom)); display: flex; flex-direction: column; isolation: isolate; color: #f3eee1; background: #0d2b20; }
.prologue-page::before { content: ""; position: absolute; z-index: -1; inset: 0; opacity: .1; pointer-events: none; background: repeating-radial-gradient(ellipse at 50% 115%, transparent 0 34px, #cbd9cf 35px 36px, transparent 37px 57px); }
.prologue-scene { position: absolute; z-index: -2; inset: 0; overflow: hidden; pointer-events: none; transition: background .45s ease; }
.scene-canopy, .scene-mist, .scene-light, .scene-mark { position: absolute; display: block; }
.scene-canopy { inset: -5%; transform-origin: 50% 25%; background: radial-gradient(ellipse at 15% 7%,rgba(122,159,123,.33),transparent 34%), radial-gradient(ellipse at 88% 20%,rgba(77,126,92,.34),transparent 32%), repeating-linear-gradient(86deg,transparent 0 10%,rgba(2,25,16,.31) 11% 13%,transparent 14% 24%), linear-gradient(180deg,#214a35,#0d2b20 78%); animation: canopy-breathe 8s ease-in-out infinite alternate; }
.scene-mist { width: 145%; height: 62%; left: -23%; top: 20%; border-radius: 50%; opacity: 0; filter: blur(23px); background: radial-gradient(ellipse,rgba(218,225,214,.67),rgba(185,200,190,.24) 48%,transparent 72%); transform: translateX(-9%); }
.scene-light { width: 88%; height: 74%; right: -17%; top: -16%; opacity: .14; transform: rotate(-18deg); filter: blur(12px); background: linear-gradient(120deg,transparent 28%,rgba(255,224,157,.7) 48%,transparent 64%); animation: prologue-light 9s ease-in-out infinite alternate; }
.scene-mark { width: 128px; height: 128px; right: -22px; bottom: 19%; display: grid; place-items: center; border: 1px solid rgba(239,197,143,.28); border-radius: 48% 52% 44% 56%; color: rgba(239,197,143,.08); font: 55px "Songti SC",serif; opacity: 0; }
.prologue-page--02 .scene-canopy { filter: blur(2px) contrast(.76) brightness(.7); }
.prologue-page--02 .scene-mist { opacity: .82; animation: prologue-mist 10s ease-in-out infinite alternate; }
.prologue-page--02 .scene-light { opacity: .04; }
.prologue-page--03 .scene-canopy { filter: saturate(1.08) brightness(1.04); }
.prologue-page--03 .scene-mist { opacity: .2; animation: mist-release 1.3s ease-out both; }
.prologue-page--03 .scene-light { opacity: .4; }
.prologue-page--03 .scene-mark { opacity: 1; animation: prologue-mark 5.8s ease-in-out infinite; }
.prologue-skip { align-self: flex-end; padding: 7px 0; position: relative; z-index: 3; border: 0; color: rgba(243,238,225,.5); background: none; font-size: 10px; letter-spacing: .08em; }
.prologue-story { position: relative; z-index: 1; }
.prologue-story--forward { animation: story-forward .42s ease both; }
.prologue-story--back { animation: story-back .42s ease both; }
.prologue-number { display: block; margin-top: clamp(35px, 8vh, 75px); color: rgba(239,197,143,.22); font: 100px/1 Georgia, serif; letter-spacing: -.08em; }
.prologue-page main { margin-top: -24px; position: relative; z-index: 1; }
.prologue-page main .eyebrow { color: var(--orange-pale); }
.prologue-page main h1 { margin: 16px 0 22px; font: 800 clamp(34px,10vw,45px)/1.12 "Songti SC", serif; }
.prologue-page main > p:last-of-type { margin: 0; color: rgba(243,238,225,.77); font: 14px/2 "Songti SC", serif; }
.prologue-page main strong { color: #fff7e5; font-weight: 800; }
.prologue-page blockquote { margin: 26px 0 0; padding: 15px 0 15px 17px; border-left: 2px solid var(--orange); color: var(--orange-pale); font: 13px/1.8 "Songti SC", serif; }
.prologue-controls { min-height: 54px; margin-top: auto; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; position: relative; z-index: 3; border-top: 1px solid rgba(239,197,143,.25); }
.prologue-controls button { width: 52px; height: 52px; padding: 0; border: 0; color: var(--orange-pale); background: transparent; font-size: 21px; }
.prologue-controls button:disabled { visibility: hidden; }
.prologue-controls > span { color: rgba(243,238,225,.58); font: 10px Georgia,serif; letter-spacing: .15em; }
.prologue-controls button:last-child { justify-self: end; }
.prologue-controls .prologue-awaken { width: auto; min-width: 150px; color: #fff6df; font: 700 12px "PingFang SC",sans-serif; letter-spacing: .06em; text-align: right; }

/* Archive card ritual, adapted from the original draw H5 */
.destiny-card { width: 165px; height: 248px; padding: 26px 15px 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; overflow: hidden; border: 2px solid var(--paper); outline: 1px solid rgba(23,75,56,.5); border-radius: 8px; color: var(--paper); background: var(--forest); box-shadow: 0 20px 45px rgba(16,52,39,.25); animation: card-ritual 2s ease-in-out forwards; }
.destiny-card::before { content: ""; position: absolute; inset: 8px; border: 1px solid rgba(244,239,226,.35); border-radius: 4px; }
.destiny-card::after { content: ""; width: 155px; height: 155px; position: absolute; border: 1px solid rgba(244,239,226,.11); border-radius: 50%; box-shadow: 0 0 0 16px rgba(244,239,226,.035), 0 0 0 34px rgba(244,239,226,.025); }
.card-emblem { width: 85px; height: 85px; position: relative; z-index: 1; }
.card-emblem svg { width: 100%; fill: none; stroke: var(--yellow); stroke-width: 2; }
.card-emblem svg path { fill: var(--yellow); stroke-width: 1; }
.destiny-card > strong { margin-top: 12px; position: relative; z-index: 1; font: 700 18px Georgia, serif; letter-spacing: .2em; }
.destiny-card > small { margin-top: 6px; position: relative; z-index: 1; color: rgba(244,239,226,.65); font: 6px Georgia, serif; letter-spacing: .17em; }
.card-corner { position: absolute; color: rgba(244,239,226,.7); font-size: 10px; }
.card-corner--a { left: 14px; top: 14px; }
.card-corner--b { right: 14px; bottom: 14px; }
.card-shine { width: 40px; height: 150%; position: absolute; left: -80px; top: -25%; z-index: 3; background: linear-gradient(90deg, transparent, rgba(255,255,255,.18), transparent); transform: rotate(18deg); animation: shine 2s .55s ease-in-out forwards; }
.seal-mark { width: 63px; height: 63px; position: absolute; z-index: 4; display: grid; place-content: center; justify-items: center; border: 3px double var(--paper); border-radius: 50%; color: var(--paper); background: var(--orange-dark); transform: rotate(-9deg); box-shadow: 0 3px 10px rgba(15,52,39,.25); }
.seal-mark i { font-style: normal; font-size: 21px; line-height: 1; }
.seal-mark b { font: 700 7px Georgia, serif; letter-spacing: .12em; }
.leaf-orbit { position: absolute; z-index: 3; inset: 0; animation: orbit 5.6s linear infinite; }
.leaf-orbit i { width: 18px; height: 9px; position: absolute; border-radius: 100% 0 100% 0; background: var(--orange); transform: rotate(35deg); }
.leaf-orbit i:nth-child(1) { top: 7px; left: 42px; }
.leaf-orbit i:nth-child(2) { top: 48%; right: 0; background: var(--blue); transform: rotate(95deg); }
.leaf-orbit i:nth-child(3) { right: 47px; bottom: 12px; transform: rotate(185deg); }
.leaf-orbit i:nth-child(4) { left: 0; bottom: 35%; background: var(--moss); transform: rotate(260deg); }

.awakening-entry { margin: auto 24px; display: grid; justify-items: center; text-align: center; }
.awakening-entry .destiny-card { width: 128px; height: 192px; margin-bottom: 29px; }
.awakening-entry .card-emblem { width: 61px; height: 61px; }
.awakening-entry .destiny-card > strong { font-size: 13px; }
.awakening-entry h1, .archive-waiting h1 { margin: 10px 0 17px; font: 800 35px "Songti SC", serif; }
.awakening-entry > p:not(.eyebrow), .archive-waiting > p:not(.eyebrow) { margin: 0; color: var(--moss); font-size: 13px; line-height: 1.85; }
.awakening-entry .primary-action { margin-top: 27px; }

.archive-page { min-height: 100dvh; }
.arrival-page { min-height: 100dvh; overflow: hidden; background: linear-gradient(180deg,#e8eee8 0%,#f6f3e9 54%,#ede4d0 100%); }
.forest-arrival { min-height: calc(100dvh - 90px); padding: 82px 28px 68px; display: grid; align-content: center; justify-items: center; text-align: center; position: relative; }
.arrival-landscape { width: min(260px,72vw); height: 150px; margin-bottom: 28px; position: relative; border-radius: 50% 50% 12px 12px; overflow: hidden; background: radial-gradient(circle at 50% 24%,rgba(247,225,168,.95) 0 14%,transparent 15%),linear-gradient(180deg,rgba(105,145,119,.14),rgba(40,88,66,.3)); }
.arrival-landscape::before,.arrival-landscape::after,.arrival-landscape span,.arrival-landscape i,.arrival-landscape b { content:""; position:absolute; bottom:-12px; width:75px; height:118px; background:#315f49; clip-path:polygon(50% 0,64% 30%,57% 30%,78% 63%,62% 63%,90% 100%,10% 100%,38% 63%,22% 63%,43% 30%,36% 30%); opacity:.78; }
.arrival-landscape::before { left:12px; transform:scale(.78); opacity:.42; }.arrival-landscape::after { right:10px; transform:scale(.9); opacity:.5; }.arrival-landscape span { left:62px; }.arrival-landscape i { right:58px; transform:scale(.72); opacity:.58; }.arrival-landscape b { left:50%; transform:translateX(-50%) scale(1.08); opacity:.86; }
.forest-arrival h1 { margin:12px 0 16px; color:var(--forest); font-family:"Songti SC",serif; font-size:34px; font-weight:600; }
.forest-arrival > p:not(.eyebrow) { margin:0; color:#486354; font-size:13px; line-height:1.85; }
.forest-arrival .forest-signal { margin-top:28px; }
.archive-waiting { width: 100%; margin: auto 0; padding: 9px 24px 30px; text-align: center; }
.archive-card-stage { width: 245px; height: 310px; margin: 0 auto 10px; position: relative; display: grid; place-items: center; }
.archive-card-stage::before, .archive-card-stage::after { content: ""; position: absolute; inset: 18px 0; border: 1px solid rgba(25,75,55,.12); }
.archive-card-stage::after { inset: 33px 15px; border-color: rgba(214,134,67,.16); transform: rotate(4deg); }
.archive-card-stage .leaf-orbit { inset: 11px -4px; }
.archive-card-stage .destiny-card { z-index: 2; animation: sealed-in .7s ease both; }
.archive-card-float { position: relative; z-index: 2; animation: archive-card-float 4.2s .7s ease-in-out infinite; }
.archive-mist { width: 280px; height: 92px; position: absolute; z-index: 4; left: -17px; bottom: 15px; border-radius: 50%; opacity: .66; filter: blur(13px); background: radial-gradient(ellipse, rgba(242,238,227,.96), rgba(242,238,227,.2) 68%, transparent 72%); animation: mist-drift 4s ease-in-out infinite alternate; }
.forest-signal { margin: 28px auto 0; padding: 13px 15px; display: flex; align-items: center; justify-content: center; gap: 12px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--forest); }
.forest-signal i { display: flex; gap: 5px; }
.forest-signal b { width: 4px; height: 4px; border-radius: 50%; background: var(--orange); animation: waiting-dot 1.35s ease-in-out infinite; }
.forest-signal b:nth-child(2) { animation-delay: .22s; }
.forest-signal b:nth-child(3) { animation-delay: .44s; }
.forest-signal strong { font-size: 10px; letter-spacing: .08em; }
.archive-page:not(.signal-page) .identity-chip { gap: 6px; opacity: .66; }
.archive-page:not(.signal-page) .identity-chip > span { width: 27px; height: 27px; font-size: 9px; }
.archive-page:not(.signal-page) .identity-chip strong { font-size: 9px; font-weight: 600; }
.archive-page:not(.signal-page) .identity-chip small { font-size: 7px; }
.signal-page .archive-waiting > p:not(.eyebrow) { color: var(--forest); }
.signal-page .awaken-button { margin-top: 28px; }
.is-signaling .destiny-card { animation: signal-pulse 2.1s ease-in-out infinite; }
.signal-rays { position: absolute; z-index: 1; inset: 30px -12px; border: 1px solid rgba(214,134,67,.3); border-radius: 50%; animation: signal-rays 2s ease-out infinite; }

.awakening-page { color: var(--paper); background: radial-gradient(circle, #356c50 0, #173f2e 40%, #0d2b20 78%); }
.awakening-ritual { width: 280px; height: 350px; position: relative; display: grid; place-items: center; }
.awakening-ritual .leaf-orbit { inset: 10px -4px; }
.ritual-card { position: relative; z-index: 2; animation: ritual-rise 2.15s ease-in-out both; }
.ritual-flash { width: 220px; height: 220px; position: absolute; z-index: 1; border-radius: 50%; background: radial-gradient(circle, rgba(255,232,180,.65), rgba(255,232,180,.08) 50%, transparent 72%); animation: ritual-flash 2.2s ease-out both; }
.awakening-page .eyebrow { color: var(--orange-pale); }
.awakening-page h1 { color: white; }
.awakening-page > p:last-of-type { color: rgba(242,238,227,.7); }

.mark-reveal h2 { margin: -11px 0 18px; color: var(--orange-dark); font: 800 22px "Songti SC", serif; letter-spacing: .12em; }
.mark-memory { margin: 0 0 24px; color: var(--moss); font: 13px/1.8 "Songti SC", serif; }
.mark-personality { width: fit-content; margin: -4px auto 18px; padding: 8px 15px; display: grid; gap: 2px; border: 1px solid rgba(49,95,73,.15); border-radius: 999px; color: #315f49; background: rgba(255,255,255,.55); }
.mark-personality small { font: 7px Georgia,serif; letter-spacing: .15em; opacity: .65; }
.mark-personality strong { font: 800 12px "Songti SC",serif; }

.waiting-panel { margin: auto 24px; text-align: center; }
.sealed-mark { width: 145px; height: 145px; margin: 0 auto 32px; display: grid; place-content: center; position: relative; border: 1px solid var(--line); border-radius: 50%; }
.sealed-mark::before { content: ""; position: absolute; inset: 14px; border: 1px dashed var(--orange-pale); border-radius: 50%; }
.sealed-mark span { color: var(--moss); font-size: 9px; letter-spacing: .15em; }
.sealed-mark strong { color: var(--forest); font: 43px Georgia, serif; }
.waiting-panel h1 { margin: 11px 0 28px; font: 800 37px "Songti SC", serif; }
.quiet-card { padding: 22px 18px; border-left: 3px solid var(--orange); background: rgba(255,253,247,.66); text-align: left; }
.quiet-card strong { font: 700 16px "Songti SC", serif; }
.quiet-card p { margin: 8px 0 0; color: var(--moss); font-size: 12px; }
.quiet-card i { display: flex; gap: 5px; justify-content: flex-end; }
.quiet-card b { width: 4px; height: 4px; border-radius: 50%; background: var(--orange); animation: blink 1.2s infinite; }
.quiet-card b:nth-child(2) { animation-delay: .2s; }.quiet-card b:nth-child(3) { animation-delay: .4s; }
.auto-refresh-note { margin: auto 0 0; color: #92958d; text-align: center; font-size: 9px; }

.mark-reveal { padding: 23px 24px 35px; text-align: center; }
.tribe-mark { width: 232px; height: 232px; margin: 10px auto 3px; display: grid; place-items: center; position: relative; color: var(--tribe-color); filter: drop-shadow(0 20px 24px color-mix(in srgb, var(--tribe-color) 22%, transparent)); }
.tribe-mark::before { content: ""; position: absolute; inset: 18%; border-radius: 50%; background: radial-gradient(circle,color-mix(in srgb,var(--tribe-color) 16%,transparent),transparent 68%); }
.tribe-mark img { width: 100%; height: 100%; position: absolute; z-index: 2; inset: 0; object-fit: contain; opacity: 0; transition: opacity .2s ease; }
.tribe-mark.is-loaded img { opacity: 1; }
.tribe-mark__fallback { width: 104px; height: 104px; position: relative; display: grid; place-items: center; opacity: .85; }
.tribe-mark__fallback::before,.tribe-mark__fallback::after,.tribe-mark__fallback i,.tribe-mark__fallback b { content: ""; width: 58px; height: 86px; position: absolute; border: 2px solid currentColor; border-radius: 70% 12% 70% 12%; transform: rotate(45deg); }
.tribe-mark__fallback::after { transform: rotate(135deg); opacity: .56; }
.tribe-mark__fallback i { width: 38px; height: 62px; transform: rotate(225deg); opacity: .42; }
.tribe-mark__fallback b { width: 24px; height: 24px; border-radius: 50%; transform: none; }
.tribe-mark.is-loaded .tribe-mark__fallback { opacity: 0; }
.tribe-mark small { position: absolute; z-index: 3; bottom: 5px; color: var(--tribe-color); font: 7px Georgia, serif; letter-spacing: .21em; }
.mark-reveal .tribe-mark small { bottom: -14px; }
.mark-reveal h1 { margin: 44px 0 24px; font: 800 34px "Songti SC", serif; }
.instruction-card { padding: 19px 18px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,253,247,.72); text-align: left; }
.instruction-card strong { font: 700 14px/1.75 "Songti SC", serif; }
.instruction-card p { margin: 12px 0 0; padding-top: 12px; border-top: 1px solid var(--line); color: var(--orange); font-size: 12px; line-height: 1.7; }
.replay-mark { margin: 19px auto 0; padding: 6px 2px; border: 0; border-bottom: 1px solid rgba(25,75,55,.18); color: var(--moss); background: none; font-size: 9px; }

.assembly-page { overflow: visible; }
.assembly-page > main { padding: 20px 20px 36px; }
.assembly-heading { display: flex; align-items: center; gap: 20px; }
.assembly-heading .tribe-mark, .tribe-summary .tribe-mark { width: 164px; height: 164px; margin: 0; flex: 0 0 auto; }
.assembly-heading .tribe-mark__fallback, .tribe-summary .tribe-mark__fallback { width: 64px; height: 64px; transform: scale(.65); }
.assembly-heading .tribe-mark small, .tribe-summary .tribe-mark small { display: none; }
.assembly-heading h1 { margin: 7px 0 3px; font: 800 25px "Songti SC", serif; }
.assembly-heading > div > p:last-child { margin: 0; color: var(--moss); font-size: 10px; }
.status-pill { width: max-content; margin: 0; padding: 4px 8px; border-radius: 20px; color: var(--forest); background: rgba(77,130,91,.11); font-size: 9px; font-weight: 700; }
.leader-card { margin-top: 32px; padding: 18px; display: flex; align-items: center; justify-content: space-between; border-left: 3px solid var(--orange); background: rgba(255,253,247,.75); }
.leader-card small { color: var(--moss); font-size: 10px; }.leader-card strong { font: 800 20px "Songti SC", serif; }
.roster-card { margin-top: 15px; padding: 17px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,253,247,.65); }
.roster-card > header { display: flex; justify-content: space-between; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.roster-card > header strong { font-size: 12px; }.roster-card > header span { color: var(--moss); font-size: 10px; }
.member-list { margin: 0; padding: 10px 0 0; list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.member-list li { min-width: 0; padding: 7px; display: grid; grid-template-columns: 27px 1fr auto; align-items: center; gap: 7px; border-radius: 8px; background: rgba(25,75,55,.045); }
.member-list li > span { width: 27px; height: 27px; display: grid; place-items: center; border-radius: 50%; color: var(--forest); background: var(--paper-deep); font-size: 9px; }
.member-list li strong { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.member-list em { color: var(--orange); font-size: 8px; font-style: normal; }
.member-list .is-leader { background: rgba(214,134,67,.1); }
.waiting-next { margin: 20px 0 0; color: var(--moss); text-align: center; font-size: 10px; }

.adventure-page { min-height: 100dvh; padding-bottom: calc(78px + env(safe-area-inset-bottom)); overflow: visible; }
.tab-content { padding: 18px 20px 30px; }
.adventure-hero { min-height: 220px; padding: 27px 24px; display: flex; flex-direction: column; justify-content: flex-end; position: relative; overflow: hidden; border-radius: 18px; color: var(--white); background: linear-gradient(145deg, #103a2a, #2d654b); box-shadow: var(--shadow); }
.adventure-hero::after { content: "森"; position: absolute; right: -14px; bottom: -42px; color: rgba(255,255,255,.055); font: 210px "Songti SC", serif; }
.battle-kicker { margin: 0; color: var(--orange-pale); font-size: 11px; font-weight: 700; letter-spacing: .04em; }
.adventure-hero h2 { max-width: 280px; margin: 10px 0 17px; position: relative; z-index: 1; font: 800 34px/1.17 "Songti SC", serif; }
.adventure-hero--waiting { background: linear-gradient(145deg,#38594a,#6b7e70); }
.adventure-hero--complete { background: linear-gradient(145deg,#6b543c,#a4784e); }
.live-state { margin: 0; display: flex; align-items: center; gap: 7px; font-size: 11px; }
.live-state i { width: 7px; height: 7px; border-radius: 50%; background: #9be0a0; box-shadow: 0 0 0 6px rgba(155,224,160,.1); animation: blink 1.4s infinite; }
.adventure-hero--waiting .live-state i { background: #e8c98d; box-shadow: 0 0 0 6px rgba(232,201,141,.1); }
.current-rule-shortcut { min-height: 34px; margin-top: 17px; padding: 0 12px; position: relative; z-index: 2; align-self: flex-start; display: inline-flex; align-items: center; border: 1px solid rgba(255,255,255,.44); border-radius: 18px; color: white; background: rgba(255,255,255,.1); font-size: 10px; font-weight: 700; backdrop-filter: blur(6px); }
.current-rule-shortcut.is-locked { border-style: dashed; color: rgba(255,255,255,.62); background: rgba(0,0,0,.06); }
.battle3-player-entry { min-height: 42px; margin-top: 12px; padding: 0 16px; position: relative; z-index: 2; align-self: stretch; display: flex; align-items: center; justify-content: space-between; border-radius: 9px; color: #173d2e; background: #efc68f; font-size: 11px; font-weight: 800; }
.battle3-player-entry.is-disabled { justify-content: center; color: rgba(255,255,255,.62); background: rgba(255,255,255,.09); }
.mission-card { margin: 14px 14px 0; padding: 20px; position: relative; z-index: 2; border-radius: 13px; background: var(--white); box-shadow: 0 10px 30px rgba(27,51,39,.12); }
.mission-card small { color: var(--orange); font-size: 9px; font-weight: 700; letter-spacing: .08em; }
.mission-card p { margin: 8px 0 0; color: #536158; font-size: 13px; line-height: 1.75; }
.tab-heading { margin: 10px 0 24px; }.tab-heading h1 { margin: 8px 0 0; font: 800 38px "Songti SC", serif; }
.tab-heading--action { display: flex; align-items: flex-end; justify-content: space-between; }
.tab-heading--action button { margin-bottom: 7px; padding: 7px 0; border: 0; border-bottom: 1px solid var(--line); color: var(--forest); background: none; font-size: 10px; font-weight: 700; }
.journey-progress { margin-top: 26px; padding: 17px 13px; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,253,247,.68); }
.journey-progress header { display: flex; align-items: center; justify-content: space-between; }
.journey-progress header strong { font-size: 11px; }.journey-progress header small { color: var(--moss); font: 7px Georgia,serif; letter-spacing: .13em; }
.journey-progress ol { margin: 18px -4px 0; padding: 0; display: grid; grid-template-columns: repeat(4,1fr); list-style: none; }
.journey-progress li { min-width: 0; display: grid; justify-items: center; position: relative; gap: 7px; color: #999d97; text-align: center; font-size: 8px; }
.journey-progress li::before { content: ""; height: 1px; position: absolute; z-index: 0; left: -50%; right: 50%; top: 7px; background: var(--line); }
.journey-progress li:first-child::before { display: none; }
.journey-progress li i { width: 15px; height: 15px; position: relative; z-index: 1; display: grid; place-items: center; border-radius: 50%; background: var(--paper); font-size: 9px; font-style: normal; }
.journey-progress li.is-complete { color: var(--forest); }.journey-progress li.is-complete::before { background: rgba(25,75,55,.45); }
.journey-progress li.is-current { color: var(--orange-dark); font-weight: 700; }.journey-progress li.is-current i { color: var(--orange); }
.final-adventure-hero { min-height: 430px; padding: 28px 22px 31px; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; overflow: hidden; border-radius: 19px; color: white; background: radial-gradient(circle at 50% 22%,rgba(239,195,117,.28),transparent 34%),linear-gradient(155deg,#173f2f,#4b704c); box-shadow: var(--shadow); text-align: center; }
.final-adventure-hero::after { content: "荣耀时刻"; position: absolute; right: -26px; bottom: 13px; color: rgba(255,255,255,.045); font: 800 50px "Songti SC",serif; writing-mode: vertical-rl; }
.final-adventure-hero > *:not(.victory-confetti) { position: relative; z-index: 2; }
.final-adventure-hero > .eyebrow { color: var(--orange-pale); }
.final-adventure-hero .tribe-mark { width: 192px; height: 192px; margin: 3px auto -4px; color: #f4d99e; filter: drop-shadow(0 16px 22px rgba(5,27,18,.28)); }
.final-adventure-hero .tribe-mark small { display: none; }
.final-adventure-hero > small { color: rgba(255,255,255,.7); font-size: 11px; letter-spacing: .14em; }
.final-adventure-hero h2 { margin: 8px 0 12px; color: #f2d18d; font: 900 56px "Songti SC",serif; letter-spacing: .1em; }
.final-adventure-hero p:last-of-type { max-width: 290px; margin: 0; color: rgba(255,255,255,.78); font: 12px/1.8 "Songti SC",serif; }
.final-adventure-hero > strong { margin-top: 15px; padding: 5px 12px; border: 1px solid rgba(255,255,255,.2); border-radius: 20px; color: rgba(255,255,255,.72); font-size: 10px; }
.final-adventure-hero--end { background: radial-gradient(circle at 50% 22%,rgba(215,192,151,.14),transparent 35%),linear-gradient(155deg,#263c34,#52645a); }
.final-adventure-hero--end h2 { color: #e6ddca; font-size: 44px; letter-spacing: .03em; }
.victory-confetti { position: absolute; z-index: 1; inset: 0; overflow: hidden; pointer-events: none; }
.victory-confetti i { width: 7px; height: 13px; position: absolute; bottom: -20px; border-radius: 2px; background: var(--confetti-color); opacity: 0; animation-duration: 2.65s; animation-timing-function: cubic-bezier(.16,.72,.31,1); animation-iteration-count: infinite; animation-delay: calc(var(--confetti-index) * -.12s); }
.victory-confetti i:nth-child(odd) { left: 9%; animation-name: confetti-jet-left; }
.victory-confetti i:nth-child(even) { right: 9%; animation-name: confetti-jet-right; }
.victory-confetti i:nth-child(3n) { width: 5px; height: 8px; }
.victory-confetti i:nth-child(4n) { border-radius: 50%; }
.is-document-hidden .victory-confetti i { animation-play-state: paused; }
.honor-vote-task { margin-top: 17px; padding: 19px; border: 1px solid rgba(183,123,67,.26); border-radius: 15px; background: linear-gradient(145deg,rgba(255,253,247,.9),rgba(235,222,194,.57)); box-shadow: 0 10px 28px rgba(32,58,45,.08); }
.honor-vote-task > div { margin-top: 13px; display: grid; grid-template-columns: 38px 1fr; gap: 12px; align-items: start; }
.honor-vote-task > div > span { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 50%; color: white; background: var(--orange-dark); }
.honor-vote-task small { color: var(--orange-dark); font-size: 9px; }.honor-vote-task h2 { margin: 5px 0 7px; font: 800 18px "Songti SC",serif; }.honor-vote-task p:not(.eyebrow) { margin: 0; color: var(--moss); font-size: 11px; line-height: 1.65; }
.honor-vote-task button { width: 100%; margin-top: 16px; padding: 11px; border: 1px solid var(--forest); border-radius: 9px; color: var(--forest); background: rgba(255,255,255,.55); font-size: 10px; font-weight: 700; }
.honor-vote-task.is-complete { border-color: rgba(55,111,81,.25); }.honor-vote-task.is-complete > div > span { background: var(--forest); }
.honor-vote-task--ceremony .ceremony-invitation { margin-top: 17px; padding: 15px; display: block; border-radius: 10px; background: rgba(25,75,55,.07); text-align: center; }
.honor-vote-task--ceremony .ceremony-invitation strong { display: block; margin-bottom: 6px; color: var(--forest); font: 800 16px "Songti SC",serif; }
.tribe-summary { padding: 18px 21px 23px; display: grid; justify-items: center; gap: 8px; border-radius: 15px; background: var(--white); box-shadow: var(--shadow); text-align: center; }
.tribe-summary > div { display: grid; justify-items: center; }
.tribe-summary h2 { margin: 8px 0 5px; font: 800 21px "Songti SC", serif; }.tribe-summary > div > p:last-child { margin: 0; color: var(--moss); font-size: 10px; }
.tribe-leader-card { margin-top: 18px; }
.guide-list { display: grid; gap: 12px; }
.challenge-card { min-height: 104px; padding: 17px; display: grid; grid-template-columns: 42px 1fr auto; align-items: center; gap: 13px; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,253,247,.7); }
.challenge-card > span { color: var(--orange); font: 20px Georgia, serif; }.challenge-card small { color: var(--moss); font-size: 9px; }.challenge-card h2 { margin: 6px 0 0; font: 700 17px "Songti SC", serif; }
.challenge-card button { padding: 8px 10px; border: 1px solid var(--forest); border-radius: 7px; color: var(--forest); background: transparent; font-size: 9px; }.challenge-card > i { color: #999c95; font-size: 9px; font-style: normal; }
.challenge-card.is-locked { opacity: .58; }
.score-hero { min-height: 213px; padding: 25px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 18px; color: var(--paper); background: radial-gradient(circle at 50% 15%,rgba(235,190,119,.18),transparent 40%),linear-gradient(145deg,#153e2e,#285f46); box-shadow: var(--shadow); text-align: center; }
.score-hero small { color: var(--orange-pale); font-size: 11px; }.score-hero p { margin: 24px 0 2px; color: rgba(255,255,255,.66); font-size: 10px; letter-spacing: .08em; }.score-hero strong { font: 62px Georgia,serif; }.score-hero span { margin-top: 9px; color: rgba(255,255,255,.72); font-size: 10px; }
.battle-results { margin-top: 16px; display: grid; gap: 9px; }
.battle-result { min-height: 88px; padding: 14px; display: grid; grid-template-columns: 37px minmax(0,1fr) auto; align-items: center; gap: 11px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,253,247,.72); }
.battle-result > span { color: var(--orange); font: 18px Georgia,serif; }.battle-result small { color: var(--moss); font-size: 8px; }.battle-result h2 { margin: 5px 0 0; font: 700 15px "Songti SC",serif; }.battle-result > strong { color: var(--forest); font-size: 11px; white-space: nowrap; }.battle-result--not_started { opacity: .62; }
.guide-list button { min-height: 78px; padding: 15px 17px; display: flex; align-items: center; justify-content: space-between; border: 1px solid var(--line); border-radius: 12px; color: var(--ink); background: rgba(255,253,247,.7); text-align: left; }
.guide-list button span { display: grid; gap: 6px; }.guide-list strong { font: 700 16px "Songti SC", serif; }.guide-list small { color: var(--moss); font-size: 9px; }.guide-list i { color: var(--orange); font-style: normal; }
.bottom-tabs { height: calc(76px + env(safe-area-inset-bottom)); padding: 7px 9px calc(7px + env(safe-area-inset-bottom)); display: grid; grid-template-columns: repeat(4,1fr); gap: 6px; position: fixed; z-index: 8; left: 50%; bottom: 0; width: min(100%,480px); transform: translateX(-50%); border-top: 1px solid var(--line); background: rgba(255,253,247,.94); backdrop-filter: blur(14px); }
.bottom-tabs button { min-width: 0; display: grid; place-content: center; justify-items: center; gap: 3px; position: relative; border: 1px solid transparent; border-radius: 11px; color: #8a918b; background: rgba(255,255,255,.16); font-size: 9px; transition: transform .18s ease,background .18s ease,box-shadow .18s ease; }.bottom-tabs i { font: 19px Georgia, serif; }.bottom-tabs .is-active { border-color: rgba(214,134,67,.22); color: var(--forest); background: linear-gradient(180deg,#fffdfa,#f2e8d8); box-shadow: 0 7px 18px rgba(38,60,48,.13); transform: translateY(-3px); }.bottom-tabs .is-active::before { content: ""; width: 22px; height: 2px; position: absolute; top: 2px; border-radius: 4px; background: var(--orange); }.bottom-tabs .is-active i { color: var(--orange); }
.sheet-backdrop { position: fixed; z-index: 12; inset: 0; display: flex; align-items: flex-end; justify-content: center; background: rgba(9,30,21,.42); }
.info-sheet { width: min(100%,480px); padding: 25px 24px max(35px,env(safe-area-inset-bottom)); position: relative; border-radius: 22px 22px 0 0; background: var(--white); animation: sheet-in .22s ease-out; }
.info-sheet > button { position: absolute; right: 18px; top: 15px; border: 0; color: var(--moss); background: none; font-size: 24px; }.info-sheet h2 { margin: 12px 0 14px; font: 800 28px "Songti SC", serif; }.info-sheet > p:last-child { margin: 0; color: #58675e; font-size: 13px; line-height: 1.85; }
.detail-page { min-height: 100dvh; padding-bottom: max(28px,env(safe-area-inset-bottom)); overflow: visible; }
.detail-page > main { padding: 12px 20px 35px; }.detail-back { margin: 0 0 28px; padding: 6px 0; border: 0; color: var(--moss); background: none; font-size: 10px; }.detail-page h1 { margin: 8px 0 12px; font: 800 37px "Songti SC",serif; }.detail-intro { margin: 0 0 25px; color: var(--moss); font-size: 11px; line-height: 1.7; }
.rule-list { display: grid; gap: 10px; }.rule-list article { min-height: 91px; padding: 14px; display: grid; grid-template-columns: 39px 1fr auto; align-items: center; gap: 11px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,253,247,.72); }.rule-list article > span { color: var(--orange); font: 18px Georgia,serif; }.rule-list small { color: var(--moss); font-size: 8px; }.rule-list h2 { margin: 5px 0 0; font: 700 15px "Songti SC",serif; }.rule-list button { padding: 7px 0; border: 0; color: var(--forest); background: none; font-size: 9px; font-weight: 700; }.rule-list em { color: #999d97; font-size: 9px; font-style: normal; }
.prose-card { margin-top: 25px; padding: 21px; border-left: 3px solid var(--orange); background: rgba(255,253,247,.72); }.prose-card p { margin: 0; color: #536158; font-size: 13px; line-height: 1.85; }.prose-card p + p { margin-top: 14px; }
.rule-core-card { width: 100%; margin: 0 0 18px; padding: 18px; border-radius: 13px; color: white; background: linear-gradient(135deg,#173e2e,#3d6b50); }
.rule-core-card small { display: block; margin-bottom: 9px; color: var(--orange-pale); font-size: 8px; font-weight: 800; letter-spacing: .12em; }.rule-core-card strong { display: block; font: 800 15px/1.75 "Songti SC",serif; }.rule-core-card i { color: #edc58e; font-style: normal; }
.rule-sections { display: grid; gap: 11px; }.rule-section { overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,253,247,.72); }.rule-section summary { min-height: 58px; padding: 0 17px; display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; list-style: none; color: var(--forest); font: 800 15px "Songti SC",serif; }.rule-section summary::-webkit-details-marker { display: none; }.rule-section summary i { color: var(--orange); font: 18px sans-serif; font-style: normal; transition: transform .18s ease; }.rule-section[open] summary { border-bottom: 1px solid var(--line); }.rule-section[open] summary i { transform: rotate(45deg); }
.rule-section__body { padding: 18px 17px 20px; color: #536158; }.rule-section__body > p { margin: 0; font-size: 12px; line-height: 1.85; }.rule-section__body > p + p { margin-top: 12px; }.rule-section__body h3 { margin: 0 0 12px; color: var(--ink); font: 800 13px "Songti SC",serif; }.rule-section__body > * + h3 { margin-top: 24px; }
.rule-steps { margin: 0; padding: 0; display: grid; gap: 8px; list-style: none; }.rule-steps li { min-height: 44px; display: grid; grid-template-columns: 33px 1fr; align-items: center; gap: 10px; }.rule-steps b { align-self: stretch; display: grid; place-items: center; border-radius: 8px; color: var(--orange-dark); background: rgba(214,134,67,.11); font: 11px Georgia,serif; }.rule-steps span { font-size: 11px; line-height: 1.65; }
.rule-bullets { margin: 0; padding: 0; display: grid; gap: 9px; list-style: none; }.rule-bullets li { padding-left: 17px; position: relative; font-size: 11px; line-height: 1.72; }.rule-bullets li::before { content: ""; width: 5px; height: 5px; position: absolute; left: 1px; top: .68em; border-radius: 50%; background: var(--orange); }
.rule-config { overflow: hidden; border: 1px solid var(--line); border-radius: 10px; }.rule-config > div { min-height: 44px; padding: 9px 11px; display: grid; grid-template-columns: minmax(90px,.75fr) minmax(0,1.25fr); align-items: center; gap: 12px; border-top: 1px solid var(--line); }.rule-config > div:first-child { border-top: 0; }.rule-config__head { min-height: 34px!important; color: var(--forest); background: rgba(25,75,55,.08); font-size: 9px; }.rule-config span { color: var(--moss); font-size: 9px; }.rule-config strong { font-size: 10px; line-height: 1.55; }
.rule-resources { display: grid; gap: 8px; }.rule-resource { padding: 12px; border-radius: 9px; background: rgba(25,75,55,.055); }.rule-resource strong { color: var(--forest); font: 800 12px "Songti SC",serif; }.rule-resource p { margin: 5px 0 0; font-size: 10px; line-height: 1.7; }
.rule-table-scroll { max-width: 100%; overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; -webkit-overflow-scrolling: touch; }.rule-table-scroll table { width: 520px; border-collapse: collapse; background: rgba(255,255,255,.35); font-size: 9px; }.rule-table-scroll th,.rule-table-scroll td { padding: 10px; border-bottom: 1px solid var(--line); text-align: left; line-height: 1.5; }.rule-table-scroll thead th { color: var(--forest); background: rgba(25,75,55,.08); white-space: nowrap; }.rule-table-scroll tbody th { color: var(--ink); font-size: 10px; }.rule-table-scroll tbody tr:last-child th,.rule-table-scroll tbody tr:last-child td { border-bottom: 0; }
.encounter-grid { display: grid; gap: 8px; }.encounter-card { padding: 12px; display: grid; gap: 5px; border-left: 3px solid #76917f; border-radius: 7px; background: rgba(25,75,55,.055); }.encounter-card span { color: var(--moss); font-size: 9px; }.encounter-card strong { color: var(--forest); font-size: 11px; }.encounter-card.is-success { border-color: #43805e; }.encounter-card.is-danger { border-color: #a85b43; }.encounter-card.is-danger strong { color: #994a37; }.rule-note { margin-top: 15px!important; padding: 11px 12px; border-radius: 8px; color: #775a3c; background: rgba(214,134,67,.1); }
.guide-rule-sections blockquote { margin: 17px 0 0; padding: 14px; border-left: 3px solid var(--orange); color: var(--forest); background: rgba(214,134,67,.08); font: 800 14px/1.75 "Songti SC",serif; }.tribe-name-grid { margin-top: 16px; display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }.tribe-name-grid span { padding: 10px; border-radius: 8px; color: var(--forest); background: rgba(25,75,55,.06); font-size: 10px; text-align: center; }
.guide-battle-list,.guide-notice-list { margin-top: 16px; display: grid; gap: 8px; }.guide-battle-list article,.guide-notice-list article { padding: 12px; border-radius: 9px; background: rgba(25,75,55,.05); }.guide-battle-list strong,.guide-notice-list strong { color: var(--forest); font: 800 11px/1.5 "Songti SC",serif; }.guide-battle-list p,.guide-notice-list p { margin: 5px 0 0; font-size: 10px; line-height: 1.7; }
.new-player-guide { display: grid; gap: 10px; }.new-player-chapter { padding: 17px; display: grid; grid-template-columns: 37px 1fr; gap: 12px; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,253,247,.72); }.new-player-chapter > b { color: var(--orange); font: 16px Georgia,serif; }.new-player-chapter small { color: var(--moss); font-size: 8px; }.new-player-chapter h2 { margin: 4px 0 9px; font: 800 18px "Songti SC",serif; }.new-player-chapter p { margin: 0; color: #536158; font-size: 11px; line-height: 1.8; }.new-player-chapter div > strong { display: block; margin-top: 11px; color: var(--forest); font-size: 10px; }
.guide-update-note { margin-top: 18px; padding: 17px; border-radius: 13px; color: white; background: linear-gradient(135deg,#173e2e,#416b51); }.guide-update-note small { color: var(--orange-pale); font-size: 9px; font-weight: 800; }.guide-update-note p { margin: 8px 0 0; color: rgba(255,255,255,.78); font-size: 11px; line-height: 1.75; }.guide-three-things { margin-top: 12px; padding: 17px; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,253,247,.72); }.guide-three-things h2 { margin: 0 0 14px; font: 800 16px "Songti SC",serif; }.guide-three-things p { margin: 0; padding: 9px 0; display: flex; justify-content: space-between; gap: 14px; border-top: 1px solid var(--line); font-size: 10px; }.guide-three-things span { color: var(--moss); }.guide-three-things strong { color: var(--forest); text-align: right; }
.safety-hero { margin: 18px 0; padding: 22px 18px; display: grid; justify-items: center; border-radius: 14px; color: white; background: radial-gradient(circle at 50% 0,rgba(239,197,143,.2),transparent 48%),linear-gradient(145deg,#204b38,#17372b); text-align: center; }.safety-hero strong { color: #f2ce91; font: 900 21px "Songti SC",serif; }.safety-hero span { margin-top: 7px; font: 800 13px "Songti SC",serif; }.safety-hero p { margin: 14px 0 0; color: rgba(255,255,255,.72); font-size: 10px; line-height: 1.7; }.safety-sections .rule-section summary { font-size: 14px; }
.safety-emergency,.safety-final { margin-top: 12px; padding: 18px; border-radius: 13px; }.safety-emergency { border: 1px solid rgba(168,91,67,.24); background: rgba(168,91,67,.07); }.safety-emergency small,.safety-final small { color: var(--orange-dark); font-size: 9px; font-weight: 800; }.safety-emergency h2 { margin: 6px 0 8px; color: #8d4435; font: 800 18px "Songti SC",serif; }.safety-emergency p,.safety-final p { margin: 0; color: #536158; font-size: 11px; line-height: 1.8; }.safety-final { color: white; background: #244b39; }.safety-final small { color: var(--orange-pale); }.safety-final p { margin-top: 9px; color: rgba(255,255,255,.75); }.safety-final strong { display: block; margin-top: 13px; color: #f2ce91; font: 800 12px/1.7 "Songti SC",serif; }
.ranking-list { margin: 0; padding: 0; display: grid; gap: 7px; list-style: none; }.ranking-list li { min-height: 57px; padding: 8px 11px; display: grid; grid-template-columns: 28px 34px 1fr auto; align-items: center; gap: 9px; border: 1px solid transparent; border-radius: 10px; background: rgba(255,253,247,.62); }.ranking-list li.is-own { border-color: rgba(214,134,67,.48); background: rgba(214,134,67,.1); }.ranking-list b { color: var(--orange); font: 13px Georgia,serif; }.tribe-badge { width: 31px; height: 31px; display: grid; place-items: center; position: relative; color: var(--rank-color); background: transparent; font: 14px "Songti SC",serif; font-style: normal; }.tribe-badge > span { width: 100%; height: 100%; display: grid; place-items: center; border-radius: 50%; color: white; background: var(--rank-color); }.tribe-badge img { width: 100%; height: 100%; position: absolute; inset: 0; object-fit: contain; opacity: 0; }.tribe-badge.is-loaded img { opacity: 1; }.tribe-badge.is-loaded span { opacity: 0; }.ranking-list strong { font-size: 11px; }.ranking-list > li > span { color: var(--forest); font: 18px Georgia,serif; text-align: right; }.ranking-list span small { display: block; color: var(--moss); font: 7px sans-serif; }
.final-result-card { margin-top: 30px; padding: 35px 20px; display: grid; justify-items: center; border-radius: 18px; color: white; background: radial-gradient(circle at 50% 15%,rgba(239,189,100,.22),transparent 42%),linear-gradient(145deg,#153e2e,#285f46); box-shadow: var(--shadow); text-align: center; }.final-result-card small { color: var(--orange-pale); }.final-result-card strong { margin: 22px 0 14px; font: 800 44px "Songti SC",serif; }.final-result-card p { margin: 0; color: rgba(255,255,255,.72); font-size: 11px; }
.final-ranking-list { margin-top: 18px; }.final-ranking-list .final-status { color: var(--moss); font: 10px sans-serif; }.final-ranking-list .final-status--win { color: var(--orange-dark); font-weight: 800; }
.mark-atlas { margin-top: 25px; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }.mark-atlas article { min-height: 78px; padding: 11px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,253,247,.65); }.mark-atlas .tribe-badge { width: 54px; height: 58px; flex: 0 0 auto; }.mark-atlas span { font-size: 10px; }
.vote-complete-card { margin-top: 28px; padding: 31px 20px; display: grid; justify-items: center; border-radius: 18px; color: white; background: radial-gradient(circle at 50% 12%,rgba(239,189,100,.25),transparent 43%),linear-gradient(145deg,#173d2e,#4d714e); box-shadow: var(--shadow); text-align: center; }.vote-complete-card > span { font-size: 31px; }.vote-complete-card p { margin: 13px 0 0; color: rgba(255,255,255,.72); font-size: 11px; line-height: 1.8; }.vote-complete-card h2 { margin: 24px 0 1px; color: #f0ce91; font: 800 24px "Songti SC",serif; }.vote-complete-card > em { margin-top: 23px; color: var(--orange-pale); font-size: 10px; font-style: normal; letter-spacing: .08em; }.vote-complete-choices { width: 100%; margin-top: 20px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }.vote-complete-choices > div { padding: 11px 8px; display: grid; gap: 5px; border: 1px solid rgba(255,255,255,.14); border-radius: 10px; background: rgba(255,255,255,.06); }.vote-complete-choices small { color: var(--orange-pale); font-size: 9px; }.vote-complete-choices strong { margin: 0; color: white; font: 700 12px/1.5 "Songti SC",serif; }
.vote-award-heading { margin-bottom: 19px; }.vote-award-heading > div { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; }.vote-award-heading h1 { margin-bottom: 0; }.vote-award-heading > div > span { padding: 5px 9px; border-radius: 15px; color: var(--orange-dark); background: rgba(214,134,67,.12); font-size: 9px; font-weight: 800; white-space: nowrap; }.vote-award-heading p { margin: 17px 0 7px; font: 700 14px/1.65 "Songti SC",serif; }.vote-award-heading > small { display: block; color: var(--moss); font-size: 10px; line-height: 1.7; }
.vote-selected-list { min-height: 43px; display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }.vote-selected-list > span { color: var(--moss); font-size: 9px; }.vote-selected-list button { padding: 7px 10px; border: 1px solid rgba(214,134,67,.3); border-radius: 18px; color: var(--forest); background: rgba(214,134,67,.09); font-size: 10px; }.vote-selected-list i { margin-left: 3px; color: var(--orange-dark); font-style: normal; }
.candidate-search { margin-top: 22px; padding: 10px 13px; display: grid; gap: 5px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,253,247,.7); }.candidate-search span { color: var(--moss); font-size: 8px; }.candidate-search input { width: 100%; padding: 2px 0; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 13px; }
.candidate-list { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }.candidate-list > p { grid-column: 1/-1; color: var(--moss); font-size: 11px; }.candidate-list button { min-width: 0; padding: 10px; display: grid; grid-template-columns: 31px minmax(0,1fr) auto; align-items: center; gap: 7px; border: 1px solid var(--line); border-radius: 10px; color: var(--ink); background: rgba(255,253,247,.72); text-align: left; }.candidate-list button > span { width: 31px; height: 31px; display: grid; place-items: center; border-radius: 50%; color: var(--forest); background: var(--paper-deep); font-size: 9px; }.candidate-list strong { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }.candidate-list i { color: var(--moss); font-size: 8px; font-style: normal; white-space: nowrap; }.candidate-list button.is-selected { border-color: var(--orange); background: rgba(214,134,67,.1); }.candidate-list button.is-selected i { color: var(--orange-dark); font-weight: 800; }.candidate-list button:disabled { opacity: .48; }
.candidate-list strong small { margin-top:3px; display:block; overflow:hidden; color:var(--moss); font-size:8px; font-weight:500; text-overflow:ellipsis; white-space:nowrap; }
.vote-step-actions { margin-top: 19px; display: grid; grid-template-columns: 1fr 1.35fr; align-items: center; gap: 10px; }.vote-step-actions > button:first-child { min-height: 43px; border: 0; color: var(--moss); background: transparent; font-size: 10px; text-align: left; }.vote-step-actions .primary-action { width: 100%; margin: 0; }.vote-step-actions .primary-action:disabled { opacity: .48; }
.vote-review { margin-top: 23px; display: grid; gap: 10px; }.vote-review article { padding: 17px; display: grid; grid-template-columns: 1fr auto; gap: 7px 12px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,253,247,.72); }.vote-review small { grid-column: 1/-1; color: var(--orange-dark); font-size: 9px; }.vote-review strong { font: 700 14px/1.6 "Songti SC",serif; }.vote-review button { border: 0; color: var(--moss); background: none; font-size: 9px; }
.vote-submit,.vote-retry { width: 100%; margin-top: 18px; }.vote-error { margin: 13px 0 0; color: #a34d3e; font-size: 10px; }.vote-submit:disabled { opacity: .5; }
.demo-scenario-picker { min-width: 186px; padding: 7px 8px; position: fixed; z-index: 25; right: 8px; bottom: calc(83px + env(safe-area-inset-bottom)); display: grid; gap: 5px; border: 1px solid rgba(25,75,55,.2); border-radius: 8px; background: rgba(255,253,247,.94); box-shadow: 0 8px 24px rgba(20,55,40,.12); }.mark-page .demo-scenario-picker,.detail-page .demo-scenario-picker { bottom: 8px; }.demo-scenario-picker > label { display: grid; gap: 2px; }.demo-scenario-picker span,.demo-scenario-picker summary { color: var(--moss); font-size: 7px; }.demo-scenario-picker select { max-width: 190px; border: 0; outline: 0; color: var(--forest); background: transparent; font-size: 9px; }.demo-scenario-picker details > div { padding-top: 5px; display: flex; gap: 7px; }.demo-scenario-picker details label { display: flex; align-items: center; gap: 2px; color: var(--forest); font-size: 7px; }

/* NPC console */
body[data-page="admin"] { background: #e9e5dc; }
.npc-console { min-height: 100vh; display: grid; grid-template-columns: 218px 1fr; color: #26352e; background: #f3f1eb; }
.npc-sidebar { padding: 28px 18px 20px; display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; color: #edf4ee; background: #173d2e; }
.npc-brand { padding: 0 8px 27px; display: flex; align-items: center; gap: 11px; border-bottom: 1px solid rgba(255,255,255,.1); }
.npc-brand > i::before { background: #e1eee3; }.npc-brand small { color: #9eb3a4; }
.npc-sidebar nav { margin-top: 28px; display: grid; gap: 7px; }
.npc-sidebar nav button { min-height: 47px; padding: 0 13px; display: flex; align-items: center; gap: 13px; border: 0; border-radius: 8px; color: #b9c8be; background: transparent; text-align: left; font-size: 12px; }
.npc-sidebar nav button span { color: #71917d; font: 9px Georgia, serif; }.npc-sidebar nav .is-active { color: white; background: rgba(255,255,255,.1); }.npc-sidebar nav .is-active span { color: #efb873; }
.npc-user { margin-top: auto; padding: 15px 8px 0; display: flex; gap: 9px; align-items: center; border-top: 1px solid rgba(255,255,255,.1); }
.npc-user > span { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; color: var(--forest); background: #e8ddc7; font-size: 11px; }.npc-user p { margin: 0; display: grid; }.npc-user strong { font-size: 10px; }.npc-user small { color: #91a599; font-size: 8px; }
.npc-main { min-width: 0; padding: 30px clamp(25px,4vw,56px) 55px; }
.npc-topbar { display: flex; justify-content: space-between; align-items: flex-end; padding-bottom: 22px; border-bottom: 1px solid rgba(23,61,46,.12); }
.npc-topbar p, .admin-section > header p { margin: 0 0 5px; color: #a66b38; font: 700 9px Georgia, serif; letter-spacing: .14em; }.npc-topbar h1 { margin: 0; font: 800 30px "Songti SC", serif; }
.npc-topbar > div:last-child { display: flex; align-items: center; gap: 10px; }.npc-topbar button { min-height: 34px; padding: 0 13px; border: 1px solid rgba(23,61,46,.2); border-radius: 7px; color: #345543; background: white; font-size: 10px; }
.phase-chip { padding: 7px 11px; border-radius: 20px; color: #2d6349; background: #dfeadf; font-size: 9px; font-weight: 700; }
.admin-notice, .admin-error { margin: 17px 0 -2px; padding: 11px 14px; border-radius: 7px; font-size: 10px; }.admin-notice { color: #276144; background: #e2ede4; }.admin-error { color: #9c4831; background: #f4e2da; }
.metric-grid { margin-top: 25px; display: grid; grid-template-columns: repeat(4,minmax(150px,1fr)); gap: 13px; }
.metric-grid article { min-height: 128px; padding: 18px; display: grid; align-content: space-between; border: 1px solid rgba(23,61,46,.11); border-radius: 11px; background: white; }.metric-grid small { color: #718078; font-size: 9px; }.metric-grid strong { color: #173d2e; font: 31px Georgia, serif; }.metric-grid span { color: #98a098; font-size: 8px; }.metric-grid .metric-phase { background: #214b39; }.metric-grid .metric-phase small,.metric-grid .metric-phase span { color: #a9beb0; }.metric-grid .metric-phase strong { color: white; font: 800 17px "Songti SC", serif; }
.admin-section { margin-top: 22px; padding: 22px; border: 1px solid rgba(23,61,46,.11); border-radius: 11px; background: white; }
.admin-section > header { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 19px; }.admin-section > header h2 { margin: 0; font: 800 19px "Songti SC", serif; }.admin-section > header > span { color: #758078; font-size: 9px; }
.tribe-status-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }.tribe-status-grid article { min-width: 0; padding: 11px; display: grid; grid-template-columns: 34px 1fr auto; gap: 10px; align-items: center; border: 1px solid rgba(23,61,46,.08); border-radius: 8px; background: #faf9f5; }.admin-tribe-mark { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: white; background: var(--tribe-color); font: 15px "Songti SC", serif; }.tribe-status-grid article div { min-width: 0; display: grid; gap: 3px; }.tribe-status-grid strong { font-size: 10px; }.tribe-status-grid small { overflow: hidden; color: #79847d; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.tribe-status-grid em { padding: 4px 7px; border-radius: 12px; color: #9a7654; background: #f2e8dc; font-size: 8px; font-style: normal; }.tribe-status-grid em.done { color: #397052; background: #e0ece2; }
.grouping-copy { min-height: 140px; padding: 23px; display: flex; align-items: center; justify-content: space-between; gap: 30px; border-radius: 9px; color: white; background: linear-gradient(125deg,#173d2e,#315f49); }.grouping-copy strong { font: 700 18px "Songti SC", serif; }.grouping-copy p { max-width: 620px; margin: 8px 0 0; color: #b8c9bd; font-size: 10px; line-height: 1.7; }.admin-primary { min-height: 40px; padding: 0 17px; border: 0; border-radius: 7px; color: #173d2e; background: #edc38d; font-size: 10px; font-weight: 800; white-space: nowrap; }.admin-primary:disabled { opacity: .48; }.admin-primary.is-danger { color: white; background: #a75336; }.bitable-hint { margin: 13px 0 0; padding: 10px 12px; border-left: 3px solid #d68643; color: #7b7167; background: #fbf5ed; font-size: 9px; }
.compact-tribes { display: grid; grid-template-columns: repeat(4,1fr); gap: 9px; }.compact-tribes article { padding: 13px; display: grid; grid-template-columns: 34px 1fr; gap: 4px 9px; align-items: center; border-radius: 8px; background: #f7f5ef; }.compact-tribes .admin-tribe-mark { grid-row: span 2; }.compact-tribes strong { font-size: 9px; }.compact-tribes span:last-child { color: #7d877f; font-size: 8px; }
.player-table { max-height: 390px; overflow: auto; border: 1px solid rgba(23,61,46,.09); border-radius: 8px; }.player-table__head,.player-table__row { min-height: 41px; padding: 0 13px; display: grid; grid-template-columns: 1.1fr .8fr 1fr; align-items: center; gap: 10px; }.player-table__head { position: sticky; z-index: 1; top: 0; color: #7d8981; background: #f1efe8; font-size: 8px; font-weight: 700; }.player-table__row { border-top: 1px solid rgba(23,61,46,.07); font-size: 9px; }.player-table__row strong { font-size: 9px; }.player-table__row span { color: #6c7c72; }.player-table__row em { color: #a26737; font-style: normal; }
.registry-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 12px; }.registry-card { padding: 16px; border: 1px solid rgba(23,61,46,.11); border-radius: 9px; background: #faf9f5; }.registry-card > header { display: flex; align-items: center; gap: 10px; }.registry-card > header div { display: grid; }.registry-card > header strong { font-size: 11px; }.registry-card > header small { color: #7e8982; font-size: 8px; }.registry-card label { margin-top: 14px; display: grid; gap: 6px; color: #738078; font-size: 8px; }.registry-card select { min-height: 35px; padding: 0 9px; border: 1px solid rgba(23,61,46,.16); border-radius: 6px; color: #273d32; background: white; font-size: 10px; }.registry-card button { width: 100%; min-height: 35px; margin-top: 8px; border: 0; border-radius: 6px; color: white; background: #2a5b43; font-size: 9px; font-weight: 700; }.registered-note { margin: 9px 0 0; color: #3e7156; font-size: 8px; }.empty-tribe { margin: 17px 0 4px; color: #929b95; font-size: 9px; }
.process-panel { max-width: 880px; }.phase-timeline { margin: 5px 0 28px; padding: 0; display: grid; grid-template-columns: repeat(9,1fr); list-style: none; }.phase-timeline li { min-width: 0; position: relative; text-align: center; }.phase-timeline li::before { content: ""; height: 2px; position: absolute; z-index: 0; left: 0; right: 0; top: 15px; background: #e0e3df; }.phase-timeline li:first-child::before { left: 50%; }.phase-timeline li:last-child::before { right: 50%; }.phase-timeline i { width: 31px; height: 31px; margin: 0 auto 10px; display: grid; place-items: center; position: relative; z-index: 1; border: 2px solid #d9ded9; border-radius: 50%; color: #929a94; background: white; font: 8px Georgia,serif; }.phase-timeline strong { display: block; padding: 0 3px; font-size: 8px; line-height: 1.5; }.phase-timeline small { color: #a66b38; font-size: 7px; }.phase-timeline .is-done::before,.phase-timeline .is-current::before { background: #6b9279; }.phase-timeline .is-done i { border-color: #6b9279; color: white; background: #6b9279; }.phase-timeline .is-current i { border-color: #d68643; color: #a45f2f; background: #fff4e7; }
.phase-action { padding: 17px; display: flex; align-items: center; justify-content: space-between; border-radius: 8px; background: #f5f3ed; }.phase-action > div { display: grid; gap: 4px; }.phase-action small { color: #7d8780; font-size: 8px; }.phase-action strong { font: 700 15px "Songti SC",serif; }.activity-ended { color: #6e7e74; font-size: 10px; }
.admin-loading { min-height: 100vh; display: grid; place-content: center; justify-items: center; color: var(--ink); text-align: center; }.admin-loading h1 { font: 800 27px "Songti SC",serif; }.admin-loading p { color: var(--moss); font-size: 11px; }

/* NPC console v2 */
.npc-topbar--v2 { align-items: center; }
.npc-global-tools { display: flex !important; align-items: center; gap: 12px !important; }
.npc-global-tools > div { display: grid; justify-items: end; gap: 4px; }
.npc-global-tools small { color: #748078; font-size: 8px; }
.npc-refresh { min-width: 126px; font-weight: 700; }
.npc-battle3-link { min-height: 35px; padding: 0 13px; display: inline-flex; align-items: center; border-radius: 7px; color: white; background: #285c43; font-size: 10px; font-weight: 700; white-space: nowrap; }
.npc-battle3-link.is-disabled { color: #8d9690; background: #e2e3de; cursor: not-allowed; }
.initial-grouping { padding: 0; overflow: hidden; }
.initial-grouping summary { padding: 18px 22px; display: flex; align-items: center; justify-content: space-between; cursor: pointer; list-style: none; }
.initial-grouping summary::-webkit-details-marker { display: none; }
.initial-grouping summary span { display: grid; gap: 3px; }.initial-grouping summary small { color: #a66b38; font-size: 8px; }.initial-grouping summary strong { font: 800 16px "Songti SC",serif; }.initial-grouping summary i { color: #718078; font-size: 9px; font-style: normal; }
.initial-grouping > div { padding: 18px 22px; border-top: 1px solid rgba(23,61,46,.1); background: #faf9f5; }.initial-grouping > div > p { margin: 0; color: #68766e; font-size: 10px; line-height: 1.7; }.initial-grouping > div > div { margin-top: 13px; display: flex; gap: 9px; }.initial-grouping > div button:not(.admin-primary) { min-height: 40px; padding: 0 14px; border: 1px solid rgba(23,61,46,.18); border-radius: 7px; color: #315a46; background: white; font-size: 9px; }
.admin-warning-list { margin-top: 14px; padding: 12px 15px; border: 1px solid #ead8c2; border-radius: 8px; color: #7d634b; background: #fbf5ed; font-size: 9px; }.admin-warning-list summary { cursor: pointer; font-weight: 800; }.admin-warning-list ul { margin: 10px 0 0; padding-left: 18px; display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.tribe-management-table { overflow-x: auto; border: 1px solid rgba(23,61,46,.1); border-radius: 9px; }
.tribe-management-table table { width: 100%; min-width: 1040px; border-collapse: collapse; }
.tribe-management-table th { padding: 11px 12px; color: #718078; background: #f1efe8; font-size: 8px; text-align: left; white-space: nowrap; }
.tribe-management-table td { height: 61px; padding: 9px 12px; border-top: 1px solid rgba(23,61,46,.08); color: #516058; font-size: 9px; white-space: nowrap; }
.tribe-cell { display: flex; align-items: center; gap: 9px; }.tribe-cell strong { color: #26352e; font-size: 10px; }
.table-status { padding: 4px 7px; border-radius: 13px; color: #98704b; background: #f3e8d9; font-size: 8px; }.table-status.is-success { color: #367052; background: #e2eee5; }
.table-link { border: 0; border-bottom: 1px solid rgba(23,61,46,.22); color: #2e664b; background: transparent; font-size: 9px; }
.table-data-missing { color: #929a95; font-size: 8px; }
.table-action { min-height: 32px; padding: 0 11px; border: 0; border-radius: 6px; color: white; background: #285c43; font-size: 8px; font-weight: 700; }.table-action:disabled { color: #979d99; background: #e5e5e0; }
.adventure-state { display: flex; align-items: center; gap: 8px; }.adventure-state span { color: #367052; font-size: 8px; font-weight: 700; }.adventure-state button { border: 0; color: #a4583d; background: transparent; font-size: 8px; text-decoration: underline; }
.admin-footnote { margin: 13px 0 0; color: #7e8781; font-size: 8px; }
.admin-drawer-backdrop,.admin-dialog-backdrop { position: fixed; z-index: 90; inset: 0; background: rgba(12,31,23,.42); }
.admin-drawer { width: min(390px,92vw); height: 100%; margin-left: auto; padding: 28px; position: relative; overflow-y: auto; background: #fbfaf6; box-shadow: -20px 0 50px rgba(12,31,23,.18); animation: drawer-in .2s ease-out; }
.admin-drawer > button { position: absolute; right: 22px; top: 20px; border: 0; color: #657269; background: transparent; font-size: 24px; }.admin-drawer > p { margin: 0; color: #a66b38; font: 8px Georgia,serif; letter-spacing: .14em; }.admin-drawer h2 { margin: 8px 0 4px; font: 800 27px "Songti SC",serif; }.admin-drawer > strong { color: #758078; font-size: 9px; }.admin-drawer ul { margin: 21px 0 0; padding: 0; display: grid; gap: 7px; list-style: none; }.admin-drawer li { min-height: 45px; padding: 7px 10px; display: grid; grid-template-columns: 31px 1fr auto; align-items: center; gap: 9px; border-radius: 8px; background: white; }.admin-drawer li > span { width: 31px; height: 31px; display: grid; place-items: center; border-radius: 50%; color: #285c43; background: #e3ece4; font-size: 9px; }.admin-drawer li b { font-size: 10px; }.admin-drawer li em { color: #a66b38; font-size: 8px; font-style: normal; }
.admin-dialog-backdrop { display: grid; place-items: center; padding: 20px; }
.admin-dialog { width: min(510px,100%); padding: 27px; border-radius: 13px; background: white; box-shadow: 0 25px 70px rgba(12,31,23,.24); animation: dialog-in .18s ease-out; }.admin-dialog > p:first-child { margin: 0; color: #a66b38; font: 8px Georgia,serif; letter-spacing: .14em; }.admin-dialog h2 { margin: 9px 0 13px; font: 800 23px "Songti SC",serif; }.admin-dialog > p:not(:first-child) { margin: 0; color: #59675f; font-size: 11px; line-height: 1.75; }.admin-dialog-actions { margin-top: 22px; display: flex; justify-content: flex-end; gap: 8px; }.admin-dialog-actions button { min-height: 38px; padding: 0 15px; border: 1px solid rgba(23,61,46,.16); border-radius: 7px; color: #3c5146; background: white; font-size: 9px; font-weight: 700; }.admin-dialog-actions .is-confirm { border-color: #a85b3e; color: white; background: #a85b3e; }
.preflight-list { margin-top: 16px; padding: 15px; border-radius: 8px; background: #f7f3ea; }.preflight-list > span { font-size: 9px; font-weight: 700; }.preflight-list ul { margin: 9px 0 12px; padding-left: 18px; color: #526058; font-size: 10px; line-height: 1.8; }.preflight-list small { color: #a4583d; font-size: 9px; }
.process-overview { max-width: 980px; }.process-neighbors { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }.process-neighbors article { min-height: 91px; padding: 15px; display: grid; align-content: center; gap: 7px; border-radius: 9px; background: #f5f3ed; }.process-neighbors small { color: #7c8780; font-size: 8px; }.process-neighbors strong { font: 700 13px/1.45 "Songti SC",serif; }.process-neighbors .is-current { color: white; background: #285c43; }.process-neighbors .is-current small { color: #b7cabd; }.process-primary { margin-top: 19px; }.process-undo { min-height: 40px; margin: 19px 0 0 10px; border: 0; color: #9b5a3f; background: transparent; font-size: 9px; text-decoration: underline; }
.grouping-control { max-width: 980px; }.grouping-metrics { display: grid; grid-template-columns: repeat(4,1fr); gap: 9px; }.grouping-metrics article { min-height: 76px; padding: 13px; display: grid; align-content: space-between; border-radius: 8px; background: #f5f3ed; }.grouping-metrics small { color: #758078; font-size: 8px; }.grouping-metrics strong { color: #285c43; font: 24px Georgia,serif; }.capacity-uniform { margin-top: 15px; padding: 11px; display: grid; grid-template-columns: minmax(180px,240px) auto 1fr; align-items: end; gap: 10px; border-radius: 8px; background: #f5f3ed; }.capacity-uniform label { display: grid; gap: 6px; color: #344d40; font-size: 9px; font-weight: 700; }.capacity-uniform input { width: 100%; min-height: 36px; padding: 0 9px; border: 1px solid rgba(23,61,46,.16); border-radius: 6px; background: #fbfaf6; }.capacity-uniform button { min-height: 36px; padding: 0 13px; border: 1px solid rgba(23,61,46,.18); border-radius: 6px; color: #285c43; background: white; font-size: 9px; font-weight: 700; }.capacity-uniform small { align-self: center; color: #758078; font-size: 8px; line-height: 1.5; }.capacity-grid { margin-top: 10px; display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; }.capacity-grid label { padding: 10px; display: grid; gap: 7px; border: 1px solid rgba(23,61,46,.1); border-radius: 8px; }.capacity-grid label > span { display: flex; justify-content: space-between; font-size: 9px; font-weight: 700; }.capacity-grid label small { color: #7a857e; font-weight: 400; }.capacity-grid input { width: 100%; min-height: 36px; padding: 0 9px; border: 1px solid rgba(23,61,46,.16); border-radius: 6px; background: #fbfaf6; }.capacity-actions { margin-top: 15px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }.capacity-actions p { margin: 0; color: #69766f; font-size: 9px; }
.capacity-uniform { grid-template-columns:minmax(130px,1fr) minmax(130px,1fr) auto 1.3fr; }.capacity-pair { display:grid!important; grid-template-columns:auto 1fr auto 1fr; align-items:center; gap:5px; }.capacity-pair i { color:#758078; font-size:8px; font-style:normal; }.guest-invite-setting { margin-top:12px; padding:12px; display:grid; gap:7px; border:1px solid rgba(23,61,46,.1); border-radius:8px; color:#344d40; font-size:9px; font-weight:700; }.guest-invite-setting > span { display:flex; gap:8px; }.guest-invite-setting input,.guest-invite-setting button,.staging-tools select { min-height:36px; padding:0 10px; border:1px solid rgba(23,61,46,.16); border-radius:6px; background:#fbfaf6; }.guest-invite-setting input { flex:1; }.guest-invite-setting small { color:#758078; font-weight:400; }.tribe-batch-actions { margin-bottom:12px; display:flex; gap:8px; }.tribe-batch-actions button,.staging-tools button { min-height:34px; padding:0 12px; border:1px solid rgba(23,61,46,.18); border-radius:6px; color:#285c43; background:#fff; font-size:9px; font-weight:700; }.staging-tools { border-color:rgba(173,87,47,.25); }.staging-tool-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }.staging-tool-grid article { padding:14px; border-radius:8px; background:#f5f3ed; }.staging-tool-grid h3 { margin:0; color:#285c43; font-size:13px; }.staging-tool-grid p { min-height:44px; color:#69766f; font-size:9px; line-height:1.65; }.staging-tool-grid label { display:grid; gap:5px; color:#344d40; font-size:9px; }.staging-tool-grid select { width:100%; }.staging-tool-grid article > div { margin-top:8px; display:flex; flex-wrap:wrap; gap:7px; }
.external-tool-card { max-width: 980px; display: flex; align-items: center; justify-content: space-between; gap: 20px; color: white; background: linear-gradient(125deg,#173d2e,#315f49); }.external-tool-card p { margin: 0 0 5px; color: #efc38b; font: 8px Georgia,serif; letter-spacing: .14em; }.external-tool-card h2 { margin: 0 0 7px; font: 800 19px "Songti SC",serif; }.external-tool-card > div:first-child > span { color: #b8c9bd; font-size: 9px; }.external-tool-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 9px; }.external-tool-link { min-height: 40px; padding: 0 15px; display: inline-flex; align-items: center; border-radius: 7px; color: #173d2e; background: #efc38b; font-size: 9px; font-weight: 800; white-space: nowrap; }.external-tool-link.is-disabled { color: #86958b; background: rgba(255,255,255,.1); cursor: not-allowed; }
.stage-list { max-width: 980px; }.stage-list ol { margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; list-style: none; }.stage-list li { min-height: 49px; padding: 8px 11px; display: flex; align-items: center; gap: 9px; border: 1px solid rgba(23,61,46,.09); border-radius: 8px; color: #7a847e; background: #faf9f5; font-size: 9px; }.stage-list i { width: 27px; height: 27px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; color: #7b8980; background: #ecece7; font: 8px Georgia,serif; font-style: normal; }.stage-list .is-done { color: #3c6d53; }.stage-list .is-done i { color: white; background: #6b9279; }.stage-list .is-current { border-color: #d5a368; color: #744d2c; background: #fff6ea; font-weight: 800; }.stage-list .is-current i { color: white; background: #d68643; }
.vote-control { max-width: 980px; }.vote-status { padding: 6px 10px; border-radius: 16px; color: #7d654d; background: #eee5d8; font-size: 9px; font-weight: 800; }.vote-status--open { color: #286146; background: #e0ede3; }.vote-status--closed { color: #6e7370; background: #e4e5e2; }
.vote-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }.vote-metrics article { min-height: 92px; padding: 15px; display: grid; align-content: space-between; border-radius: 9px; background: #f5f3ed; }.vote-metrics small { color: #748078; font-size: 8px; }.vote-metrics strong { color: #214b39; font: 25px Georgia,serif; }.vote-metrics strong i { color: #8a938d; font-size: 11px; font-style: normal; }
.vote-control-actions { margin-top: 15px; display: flex; align-items: center; gap: 9px; }.vote-control-actions > button:not(.admin-primary):not(.admin-danger) { min-height: 40px; padding: 0 14px; border: 1px solid rgba(23,61,46,.16); border-radius: 7px; color: #315a46; background: white; font-size: 9px; }.admin-danger { min-height: 40px; padding: 0 16px; border: 0; border-radius: 7px; color: white; background: #a85b3e; font-size: 9px; font-weight: 800; }.vote-control-actions > span { color: #747d77; font-size: 9px; }
.vote-results-grid { max-width: 980px; margin-top: 18px; display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }.vote-result-panel { padding: 19px; border: 1px solid rgba(23,61,46,.11); border-radius: 11px; background: white; }.vote-result-panel > header { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 14px; }.vote-result-panel header p { margin: 0 0 4px; color: #a66b38; font: 8px Georgia,serif; letter-spacing: .14em; }.vote-result-panel h2 { margin: 0; font: 800 18px "Songti SC",serif; }.vote-result-panel header > span { color: #79847d; font-size: 8px; }.vote-result-table { max-height: 450px; overflow-y: auto; border: 1px solid rgba(23,61,46,.08); border-radius: 7px; }.vote-result-table > div { min-height: 37px; padding: 0 11px; display: grid; grid-template-columns: 45px 1fr 45px; align-items: center; border-top: 1px solid rgba(23,61,46,.07); font-size: 9px; }.vote-result-table > div:first-child { position: sticky; top: 0; border-top: 0; color: #748078; background: #f1efe8; font-size: 8px; }.vote-result-table strong { font-size: 9px; }.vote-result-table em { color: #a45f2f; font: 14px Georgia,serif; font-style: normal; text-align: right; }

@keyframes drawer-in { from { transform: translateX(30px); opacity: .6; } }

@keyframes orbit { to { transform: rotate(360deg); } }
@keyframes blink { 50% { opacity: .25; } }
@keyframes landing-push { from { transform: scale(1) translateY(0); } to { transform: scale(1.035) translateY(-3px); } }
@keyframes landing-light { from { opacity: .25; transform: translateX(-2%) rotate(-12deg); } to { opacity: .47; transform: translateX(3%) rotate(-10deg); } }
@keyframes landing-mist { from { transform: translateX(-4%) scale(.96); } to { transform: translateX(5%) scale(1.04); } }
@keyframes landing-contour { from { transform: rotate(22deg) translate(0); } to { transform: rotate(27deg) translate(-8px,5px); } }
@keyframes landing-mark-breathe { 0%,100% { transform: scale(.985); box-shadow: 0 20px 45px rgba(25,75,55,.18); } 50% { transform: scale(1.015); box-shadow: 0 23px 52px rgba(25,75,55,.25); } }
@keyframes canopy-breathe { from { transform: scale(1.01) rotate(-.3deg); } to { transform: scale(1.025) rotate(.35deg); } }
@keyframes prologue-light { from { opacity: .12; transform: translateX(-2%) rotate(-18deg); } to { opacity: .28; transform: translateX(3%) rotate(-16deg); } }
@keyframes prologue-mist { from { transform: translateX(-9%) scale(.97); } to { transform: translateX(7%) scale(1.06); } }
@keyframes mist-release { from { opacity: .72; transform: translateX(0) scale(1.04); } to { opacity: .18; transform: translateX(15%) scale(1.12); } }
@keyframes prologue-mark { 0%,100% { transform: scale(.96) rotate(-5deg); border-color: rgba(239,197,143,.2); } 50% { transform: scale(1.035) rotate(3deg); border-color: rgba(239,197,143,.46); } }
@keyframes story-forward { from { opacity: 0; transform: translateX(15px); } to { opacity: 1; transform: translateX(0); } }
@keyframes story-back { from { opacity: 0; transform: translateX(-15px); } to { opacity: 1; transform: translateX(0); } }
@keyframes archive-card-float { 0%,100% { transform: translateY(2px); } 50% { transform: translateY(-3px); } }
@keyframes waiting-dot { 0%,65%,100% { opacity: .28; transform: scale(.78); } 32% { opacity: 1; transform: scale(1.22); } }
@keyframes sheet-in { from { transform: translateY(30px); opacity: 0; } }
@keyframes dialog-in { from { opacity: 0; transform: translateY(10px) scale(.97); } }
@keyframes card-ritual { 0% { opacity: 0; transform: translateY(22px) rotate(-2deg) scale(.9); } 28% { opacity: 1; transform: translateY(0) rotate(1deg) scale(1); } 65% { transform: translateY(-10px) rotate(-1.5deg) scale(1.03); } 100% { transform: translateY(0) rotate(0) scale(.96); } }
@keyframes shine { 0%, 25% { left: -80px; } 80%, 100% { left: 210px; } }
@keyframes sealed-in { from { opacity: 0; transform: translateY(12px) rotate(-3deg) scale(.9); } to { opacity: 1; transform: translateY(0) rotate(0) scale(1); } }
@keyframes mist-drift { from { transform: translateX(-7px) scale(.96); } to { transform: translateX(8px) scale(1.06); } }
@keyframes signal-pulse { 0%, 100% { transform: translateY(0) scale(.96); box-shadow: 0 20px 45px rgba(16,52,39,.25); } 50% { transform: translateY(-7px) scale(1); box-shadow: 0 23px 58px rgba(214,134,67,.32); } }
@keyframes signal-rays { from { opacity: .7; transform: scale(.68) rotate(-9deg); } to { opacity: 0; transform: scale(1.13) rotate(8deg); } }
@keyframes ritual-rise { 0% { opacity: 0; transform: translateY(40px) scale(.75) rotate(-8deg); } 45% { opacity: 1; transform: translateY(-8px) scale(1.04) rotate(2deg); } 100% { transform: translateY(0) scale(.96) rotate(0); } }
@keyframes ritual-flash { 0%, 28% { opacity: 0; transform: scale(.3); } 62% { opacity: 1; transform: scale(1); } 100% { opacity: .2; transform: scale(1.28); } }
@keyframes confetti-jet-left { 0% { opacity: 0; transform: translate(0,0) rotate(0); } 8% { opacity: 1; } 68% { opacity: .95; transform: translate(var(--spread),-370px) rotate(460deg); } 100% { opacity: 0; transform: translate(var(--spread),-285px) rotate(690deg); } }
@keyframes confetti-jet-right { 0% { opacity: 0; transform: translate(0,0) rotate(0); } 8% { opacity: 1; } 68% { opacity: .95; transform: translate(calc(-1 * var(--spread)),-370px) rotate(-460deg); } 100% { opacity: 0; transform: translate(calc(-1 * var(--spread)),-285px) rotate(-690deg); } }

@media (min-width: 481px) and (max-width: 760px) {
  body:not([data-page="admin"]) { padding: 20px 0; background: #e3ded2; }
  .unified-page { min-height: calc(100dvh - 40px); border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow); }
}

@media (max-width: 760px) {
  .npc-console { display: block; padding-bottom: 66px; }
  .npc-sidebar { height: 62px; padding: 0 13px; display: flex; flex-direction: row; align-items: center; position: fixed; z-index: 20; inset: auto 0 0; }
  .npc-brand, .npc-user { display: none; }
  .npc-sidebar nav { width: 100%; margin: 0; display: grid; grid-template-columns: repeat(3,1fr); gap: 3px; }
  .npc-sidebar nav button { min-height: 48px; padding: 0; display: grid; place-content: center; justify-items: center; gap: 2px; text-align: center; font-size: 9px; }
  .npc-main { padding: 20px 15px 35px; }
  .npc-topbar { align-items: flex-start; }.npc-topbar h1 { font-size: 25px; }.npc-topbar > div:last-child { align-items: flex-end; flex-direction: column; }.phase-chip { font-size: 8px; }
  .metric-grid { grid-template-columns: 1fr 1fr; }.metric-grid article { min-height: 105px; }.metric-grid strong { font-size: 26px; }
  .tribe-status-grid, .registry-grid { grid-template-columns: 1fr; }.compact-tribes { grid-template-columns: 1fr 1fr; }
  .grouping-copy { align-items: stretch; flex-direction: column; }.grouping-copy .admin-primary { width: 100%; }
  .phase-timeline { grid-template-columns: 1fr; gap: 0; }.phase-timeline li { min-height: 48px; display: grid; grid-template-columns: 42px 1fr; align-items: center; text-align: left; }.phase-timeline li::before { width: 2px; height: auto; left: 15px !important; right: auto !important; top: 0; bottom: 0; }.phase-timeline li:first-child::before { top: 50%; }.phase-timeline li:last-child::before { bottom: 50%; }.phase-timeline i { margin: 0; }.phase-timeline strong { padding: 0; font-size: 9px; }.phase-action { align-items: stretch; flex-direction: column; gap: 14px; }.phase-action .admin-primary { width: 100%; }
  .npc-topbar--v2 { gap: 17px; flex-direction: column; }.npc-topbar--v2 > div:first-child { width: 100%; }.npc-global-tools { width: 100%; align-items: stretch !important; flex-direction: row !important; }.npc-global-tools > div { flex: 1; justify-items: stretch; }.npc-global-tools small { text-align: left; }.npc-battle3-link { justify-content: center; }
  .admin-warning-list ul { grid-template-columns: 1fr; }.initial-grouping > div > div { align-items: stretch; flex-direction: column; }.initial-grouping button { width: 100%; }
  .process-neighbors { grid-template-columns: 1fr; }.process-primary { width: 100%; }.process-undo { width: 100%; margin: 10px 0 0; }.stage-list ol { grid-template-columns: 1fr; }.external-tool-card { align-items: stretch; flex-direction: column; }.external-tool-actions { align-items: stretch; flex-direction: column; }.external-tool-link { justify-content: center; }
  .grouping-metrics,.capacity-grid { grid-template-columns: 1fr 1fr; }.capacity-uniform { grid-template-columns: 1fr 1fr; }.capacity-uniform button,.capacity-uniform small { grid-column: 1 / -1; }.capacity-actions { align-items: stretch; flex-direction: column; }.capacity-actions button { width: 100%; }.staging-tool-grid { grid-template-columns:1fr; }
  .vote-metrics,.vote-results-grid { grid-template-columns: 1fr; }.vote-control-actions { align-items: stretch; flex-direction: column; }.vote-control-actions button { width: 100%; }.admin-dialog-actions { align-items: stretch; flex-direction: column; }.admin-dialog-actions button { width: 100%; }
}

.grouping-control .capacity-uniform { grid-template-columns:minmax(130px,1fr) minmax(130px,1fr) auto; }
.grouping-control .capacity-uniform .admin-primary { min-width:140px; }
@media (max-width: 760px) {
  .grouping-control .capacity-uniform { grid-template-columns:1fr 1fr; }
  .grouping-control .capacity-uniform .admin-primary { width:100%; grid-column:1 / -1; }
}

@media (max-width: 350px) {
  .landing-orbit { margin-top: 12px; }.landing-copy h1 { font-size: 50px; }
  .member-list { grid-template-columns: 1fr; }.assembly-heading { gap: 13px; }.assembly-heading .tribe-mark { width: 86px; height: 86px; }.assembly-heading h1 { font-size: 21px; }
  .tribe-summary { padding: 15px; gap: 11px; }.tribe-summary .tribe-mark { width: 105px; height: 105px; }
  .candidate-list { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .victory-confetti i { display: none; }
  .victory-confetti i:nth-child(-n+8) { display: block; animation-duration: 4s !important; animation-iteration-count: infinite !important; }
}
