:root{
  --bg:#f3efe4;
  --paper:#fbf8ef;
  --ink:#1f2b26;
  --muted:#66746d;
  --line:#c9c2b2;
  --green:#2f6b57;
  --green2:#7aa58f;
  --danger:#a84b43;
  --gold:#b68c3a;
  --shadow:0 14px 40px rgba(31,43,38,.12);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:
  radial-gradient(circle at 15% 0%, rgba(122,165,143,.16), transparent 30%),
  linear-gradient(180deg,#f8f4ea 0,#efe8d9 100%);
color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button{font:inherit}
.app{max-width:1440px;margin:0 auto;padding:20px}
.topbar{
  display:grid;grid-template-columns:1fr auto;gap:18px;align-items:end;
  margin-bottom:14px
}
.brand h1{margin:0;font-size:30px;letter-spacing:.16em;font-weight:800}
.brand p{margin:5px 0 0;color:var(--muted);font-size:13px}
.seedbox{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.seedbox input{
  width:120px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink)
}
.btn{
  border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:10px;
  padding:9px 12px;cursor:pointer;transition:.16s ease;box-shadow:0 1px 0 rgba(255,255,255,.7) inset
}
.btn:hover{transform:translateY(-1px);border-color:#aaa18f}
.btn.primary{background:var(--green);border-color:var(--green);color:white}
.btn.danger{background:var(--danger);border-color:var(--danger);color:white}
.btn.ghost{background:transparent}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
.stats{
  display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-bottom:12px
}
.stat{
  background:rgba(251,248,239,.86);border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  min-width:0
}
.stat .k{font-size:11px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.stat .v{font-size:18px;font-weight:760;margin-top:3px}
.bar{height:4px;background:#ddd4c2;border-radius:999px;margin-top:7px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--green);width:50%}
.game{
  display:grid;grid-template-columns:minmax(0,1.35fr) minmax(360px,.65fr);gap:12px;align-items:stretch
}
.panel{
  background:rgba(251,248,239,.92);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);
  overflow:hidden
}
.mapPanel{min-height:660px;position:relative}
.panelHead{
  padding:14px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:center
}
.panelHead strong{letter-spacing:.08em;font-size:13px}
.legend{font-size:11px;color:var(--muted);display:flex;gap:12px}
.mapWrap{position:relative;height:604px;overflow:hidden;
  background-color:#f8f4ea;
  background-image:
    linear-gradient(rgba(47,107,87,.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(47,107,87,.035) 1px,transparent 1px),
    linear-gradient(rgba(47,107,87,.075) 1px,transparent 1px),
    linear-gradient(90deg,rgba(47,107,87,.075) 1px,transparent 1px);
  background-size:20px 20px,20px 20px,100px 100px,100px 100px;
  background-position:-1px -1px
}
#mapSvg{width:100%;height:100%;display:block}
.edge{stroke:#9fae9f;stroke-width:1.6;stroke-dasharray:5 5;opacity:.65}
.edge.known{stroke:#64826f;stroke-dasharray:none;opacity:.8}
.node{cursor:pointer}
.node circle{fill:#f8f4ea;stroke:#6a7f71;stroke-width:2;transition:.15s ease}
.node text{font-size:12px;fill:var(--ink);font-weight:650;text-anchor:middle;pointer-events:none}
.node .sub{font-size:9px;fill:var(--muted);font-weight:500}
.node.unknown circle{fill:#dad4c6;stroke:#9c9588;stroke-dasharray:4 3}
.node.current circle{fill:var(--green);stroke:#163b30;stroke-width:3}
.node.current text,.node.current .sub{fill:#fff}
.node.danger circle{stroke:var(--danger)}
.node.escape circle{stroke:var(--gold);stroke-width:3}
.node:hover circle{transform:scale(1.05);transform-origin:center}
.side{display:grid;grid-template-rows:auto 1fr auto;min-height:660px}
.eventArea{padding:18px;overflow:auto}
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:7px}
.eventArea h2{font-size:26px;line-height:1.06;margin:0 0 10px}
.eventArea p{line-height:1.55;color:#34433d}
.clue{
  border-left:3px solid var(--green2);padding:10px 12px;background:rgba(122,165,143,.09);border-radius:0 10px 10px 0;
  font-size:13px;margin:12px 0
}
.metaGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}
.meta{
  border:1px solid var(--line);border-radius:10px;padding:10px;background:rgba(255,255,255,.35)
}
.meta small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}
.meta b{display:block;margin-top:4px;font-size:14px}
.actions{display:grid;gap:8px;margin-top:16px}
.actionBtn{
  width:100%;text-align:left;border:1px solid var(--line);border-radius:11px;background:#fffdf7;padding:11px 12px;cursor:pointer
}
.actionBtn:hover{border-color:var(--green2);background:#fbfff9}
.actionBtn .cost{display:block;font-size:10px;color:var(--muted);margin-top:3px}
.bottom{
  border-top:1px solid var(--line);padding:12px 14px;background:rgba(247,242,230,.8)
}
.invTitle{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:8px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{
  border:1px solid var(--line);border-radius:999px;padding:5px 8px;background:var(--paper);font-size:11px
}
.chip.special{border-color:var(--green2)}
.log{
  position:fixed;left:18px;bottom:18px;width:min(360px,calc(100vw - 36px));z-index:9;
  display:grid;gap:6px;pointer-events:none
}
.toast{
  background:rgba(31,43,38,.94);color:#fff;border-radius:10px;padding:9px 11px;font-size:12px;
  box-shadow:var(--shadow);animation:toast 4.2s forwards
}
@keyframes toast{0%{opacity:0;transform:translateY(8px)}10%,85%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-6px)}}
.langSwitch{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--paper)}
.langBtn{border:0;background:transparent;padding:9px 10px;cursor:pointer;color:var(--muted)}
.langBtn.active{background:var(--green);color:white}
.stat.flash-up{animation:statUp .75s ease}.stat.flash-down{animation:statDown .75s ease}
@keyframes statUp{0%,100%{box-shadow:none}35%{box-shadow:0 0 0 4px rgba(47,107,87,.24);transform:translateY(-2px)}}
@keyframes statDown{0%,100%{box-shadow:none}35%{box-shadow:0 0 0 4px rgba(168,75,67,.22);transform:translateY(-2px)}}
.feedback{
  position:fixed;inset:0;z-index:24;display:none;align-items:center;justify-content:center;padding:20px;
  background:rgba(24,34,29,.38);backdrop-filter:blur(3px)
}
.feedback.show{display:flex;animation:fadeIn .16s ease}
.feedbackCard{width:min(610px,94vw);background:rgba(251,248,239,.98);border:1px solid var(--line);border-radius:18px;
  box-shadow:0 28px 80px rgba(0,0,0,.24);padding:24px 26px;text-align:center;max-height:92vh;overflow:auto}
.feedback.day .feedbackCard{padding:34px 28px}
.feedbackKicker{text-transform:uppercase;letter-spacing:.14em;font-size:11px;color:var(--muted)}
.feedbackTitle{font-size:36px;line-height:1.05;margin:7px 0 10px;font-weight:800;letter-spacing:.04em}
.feedback.day .feedbackTitle{font-size:54px}
.feedbackText{font-size:16px;line-height:1.55;color:#34433d;margin:0 auto;max-width:520px}
.deltaRow{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:16px}
.delta{border-radius:999px;padding:7px 10px;font-size:12px;font-weight:750;background:#eee8dc}
.delta.up{background:rgba(47,107,87,.12);color:var(--green)}.delta.down{background:rgba(168,75,67,.12);color:var(--danger)}
.delta.info{background:rgba(182,140,58,.13);color:#785b21}.feedbackActions{display:flex;gap:8px;justify-content:center;align-items:stretch;flex-wrap:wrap;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.feedbackActions .btn{min-width:92px}.feedbackChoice{min-width:185px;flex:1;text-align:left;border:1px solid var(--line);border-radius:11px;background:#fffdf7;padding:9px 11px;cursor:pointer;color:var(--ink)}
.feedbackChoice:hover{border-color:var(--green2);background:#fbfff9}.feedbackChoice:disabled{opacity:.42;cursor:not-allowed}.feedbackChoice b{display:block;font-size:12px}.feedbackChoice small{display:block;color:var(--muted);font-size:9px;line-height:1.4;margin-top:3px;white-space:pre-line}
.gearNote{font-size:10px;color:var(--muted);margin-left:3px}
.modal{
  position:fixed;inset:0;background:rgba(22,31,27,.55);backdrop-filter:blur(6px);
  display:none;align-items:center;justify-content:center;padding:20px;z-index:30
}
.modal.show{display:flex}
.card{
  width:min(760px,100%);max-height:92vh;overflow:auto;background:var(--paper);border:1px solid var(--line);
  border-radius:18px;box-shadow:0 30px 90px rgba(0,0,0,.22);padding:24px
}
.card h2{font-size:34px;margin:0 0 7px;letter-spacing:.05em}
.card p{color:var(--muted);line-height:1.55}
.itemPick{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:18px 0}
.pick{
  border:1px solid var(--line);border-radius:12px;padding:12px;min-height:112px;cursor:pointer;background:#fffdf8
}
.pick.selected{border-color:var(--green);box-shadow:0 0 0 2px rgba(47,107,87,.15);background:#f1f8f4}
.pick .ico{font-size:25px}
.pick b{display:block;margin-top:6px}
.pick small{display:block;color:var(--muted);margin-top:4px;line-height:1.35}
.modalActions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:15px}
.endStats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}
.endStats .meta{padding:13px}
.sectionTitle{margin:18px 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.buildGrid{display:grid;gap:7px}
.buildRow{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--line);padding:10px;border-radius:10px;background:#fffdf7}
.buildRow b{font-size:13px}
.buildRow small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.help{font-size:12px;color:var(--muted);line-height:1.55}


/* v4: story chains / technical scrap progression */
.storyBadge{display:inline-block;margin:6px 6px 0 0;border:1px solid var(--line);border-radius:999px;padding:4px 7px;font-size:10px;background:rgba(255,255,255,.45)}
.storyBadge.active{border-color:var(--green2);background:rgba(47,107,87,.08)}
.techNote{border:1px solid rgba(182,140,58,.45);background:rgba(182,140,58,.08);padding:9px 11px;border-radius:10px;font-size:12px;margin-top:10px}

/* v3: home / codex / crafting / outposts / settlement */
.homeCard{width:min(920px,100%);padding:30px}
.homeTop{display:flex;justify-content:space-between;align-items:center;gap:16px}
.homeLogo{margin:16px 0 0;font-size:54px!important;letter-spacing:.18em!important}
.homeLead{font-size:17px;max-width:650px}
.homeFacts{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:20px 0}
.homeFact{border:1px solid var(--line);border-radius:12px;padding:13px;background:rgba(255,255,255,.34)}
.homeFact b{display:block;font-size:21px}
.homeFact small{display:block;margin-top:3px;color:var(--muted)}
.homeMenu{display:grid;grid-template-columns:1.5fr repeat(4,1fr);gap:9px;margin-top:18px}
.homeMenu .btn{display:flex;align-items:center;justify-content:center;padding:13px 14px;text-align:center;text-decoration:none}
.homeSeed{display:flex;align-items:center;gap:9px;margin-top:14px;color:var(--muted);font-size:12px}
.homeSeed input{width:140px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:white;color:var(--ink)}
.codexGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:16px 0}
.codexProgressBlock{display:grid;gap:7px;margin-top:14px;font-size:12px;color:var(--muted)}
.codexProgressBar{height:8px;overflow:hidden;border-radius:999px;background:rgba(47,107,87,.14)}
.codexProgressBar i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green),#7aa58f);transition:width .35s ease}
.endingCard{position:relative;border:1px solid var(--line);border-radius:12px;padding:40px 13px 13px;min-height:118px;background:#fffdf7}
.endingCard.locked>:not(.codexRarity){opacity:.48;filter:grayscale(.65)}
.codexRarity{position:absolute;top:10px;right:10px;font-size:9px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}
.endingCard .endingIcon{font-size:22px}
.endingCard b{display:block;margin:6px 0 4px}
.endingCard small{display:block;color:var(--muted);line-height:1.35}
.node.outpost circle{stroke:var(--green);stroke-width:4;stroke-dasharray:2 2}
.craftGrid{display:grid;gap:7px;margin-top:8px}
.craftRow{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fffdf7}
.craftRow b{font-size:13px}.craftRow small{display:block;color:var(--muted);font-size:10px;margin-top:3px;line-height:1.35}
.toolTag{display:inline-block;margin-top:5px;padding:3px 6px;border-radius:999px;background:rgba(47,107,87,.1);font-size:9px;color:var(--green)}
.endingHero{position:relative;padding:18px;padding-top:48px;border:1px solid var(--line);border-radius:14px;background:rgba(122,165,143,.08);margin:12px 0}
.endingHero h2{margin:0 0 7px;font-size:40px}
.endingCornerBadges{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:7px}
.endingCornerBadge{padding:5px 9px;border:1px solid currentColor;border-radius:999px;background:#fffdf8;font-size:10px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.rarity-common{color:#60716a}.rarity-uncommon{color:#2f7a59}.rarity-rare{color:#3468a8}.rarity-legendary{color:#a66a16}.rarity-collecting{color:#85745c}.ending-new-badge{color:#c45038;background:#fff4ed}
.endingOutcomeComparison{margin:2px 2px 10px;color:var(--muted);font-size:11px;line-height:1.5}
.summaryGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}
.summaryMetric{border:1px solid var(--line);border-radius:11px;padding:12px;background:#fffdf8}
.summaryMetric small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.07em}
.summaryMetric b{display:block;font-size:21px;margin-top:4px}
.summaryList{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0}
.summaryLine{border-bottom:1px dashed var(--line);padding:7px 0;font-size:13px;display:flex;justify-content:space-between;gap:12px}
.endButtons{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-top:18px}
.endingPosterCard{width:min(680px,100%)}
.endingPosterHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.endingPosterHead h2{font-size:28px;margin-top:4px}
.endingPosterPreview{display:flex;justify-content:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(16,47,40,.08)}
.endingPosterPreview img{display:block;width:min(100%,420px);height:auto;border-radius:8px;box-shadow:0 18px 45px rgba(22,31,27,.2)}
.endingPosterStatus{min-height:19px;margin:9px 0 0;text-align:center}
.endingPosterActions{justify-content:flex-end}
.endingLeaderboardPanel{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-top:14px;background:rgba(47,107,87,.06)}
.endingLeaderboardPanel small{display:block;color:var(--muted);font-size:10px}.endingLeaderboardPanel b{display:block;font-size:24px}.endingLeaderboardPanel p{margin:0;font-size:12px}
.leaderboardCard{width:min(720px,100%)}.leaderboardHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.leaderboardHead h2{font-size:28px;margin-top:4px}
.leaderboardTabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 10px}.leaderboardTab{border:1px solid var(--line);border-radius:999px;background:#fffdf7;color:var(--ink);padding:8px 12px;cursor:pointer;font-weight:750}.leaderboardTab.active{border-color:var(--green);background:var(--green);color:white}
.leaderboardList{display:grid;gap:7px;margin-top:12px}.leaderboardRow{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fffdf8}.leaderboardRow span b,.leaderboardRow span small{display:block}.leaderboardRow span small{color:var(--muted);font-size:10px;margin-top:2px}.leaderboardEmpty{padding:20px;text-align:center;border:1px dashed var(--line);border-radius:10px}
.outpostNotice{border-left:3px solid var(--green);background:rgba(47,107,87,.07);padding:9px 11px;border-radius:0 9px 9px 0;margin-top:10px;font-size:12px}

/* Island truth finale */
body.truthFinaleOpen{overflow:hidden}
.truthFinaleModal{position:fixed;inset:0;z-index:80;background:#070b09;color:#ece5d1;font-family:Inter,system-ui,sans-serif}
.truthFinaleModal[hidden]{display:none}
.truthFinaleApp{height:100%;min-height:620px;display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(circle at 50% 20%,#1b2722 0,#0a0f0d 56%,#050806 100%)}
.truthFinaleTopbar{height:64px;flex:none;border-bottom:1px solid #3a443d;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 22px;background:rgba(9,14,12,.9)}
.truthFinaleBrand{font-family:Georgia,serif;letter-spacing:.2em;font-size:19px}.truthProtocol{display:flex;gap:8px}.truthProtocol span{width:24px;height:4px;border-radius:999px;background:#374139;transition:background .25s}.truthProtocol span.active{background:#b89550;box-shadow:0 0 12px rgba(184,149,80,.45)}.truthProtocol span.done{background:#789985}
.truthFinaleTopActions{display:flex;justify-content:flex-end;align-items:center;gap:10px}.truthSignalStatus{display:flex;align-items:center;gap:7px;font-size:10px;letter-spacing:.1em;color:#ff7568}.truthSignalStatus i{width:8px;height:8px;border-radius:50%;background:#c34f47;box-shadow:0 0 12px #c34f47;animation:truthPulse 1.8s infinite}.signalOff .truthSignalStatus{color:#b6ccb8}.signalOff .truthSignalStatus i{background:#789985;box-shadow:0 0 10px #789985;animation:none}
@keyframes truthPulse{50%{opacity:.25}}
.truthFinaleShell{flex:1;min-height:0;display:grid;grid-template-columns:310px minmax(0,1fr);gap:12px;padding:12px;max-width:1440px;width:100%;margin:auto}.truthEvidence,.truthConsole{min-height:0;border:1px solid #3a443d;border-radius:16px;background:rgba(19,25,21,.94);box-shadow:0 24px 70px rgba(0,0,0,.38);overflow:hidden}.truthEvidence{display:flex;flex-direction:column}.truthPanelHead{padding:14px 16px;border-bottom:1px solid #3a443d;display:flex;justify-content:space-between;gap:10px}.truthPanelHead b{font-size:12px;letter-spacing:.12em}.truthPanelHead small{font-size:9px;color:#9ca69e}.truthClueList{padding:10px;display:grid;gap:7px;overflow:auto}.truthClueCard{border:1px solid #364139;border-radius:11px;background:#111713;padding:9px 10px;display:grid;grid-template-columns:30px 1fr;gap:8px;transition:.3s}.truthClueCard.active{border-color:#b89550;background:rgba(184,149,80,.09);box-shadow:0 0 0 2px rgba(184,149,80,.1)}.truthClueCard.used{border-color:#50685a;background:rgba(120,153,133,.08)}.truthClueIcon{font-size:19px}.truthClueCard b{font-size:10px;display:block}.truthClueCard p{font-family:Georgia,serif;font-size:9px;line-height:1.5;color:#aeb8af;margin:3px 0 0}.truthEvidenceNote{margin:auto 10px 10px;border-left:3px solid #b89550;background:rgba(184,149,80,.08);padding:8px 9px;border-radius:0 8px 8px 0;font-size:9px;line-height:1.5;color:#c9c1aa}
.truthConsole{position:relative}.truthFinaleScreen{position:absolute;inset:0;padding:clamp(20px,4vw,54px);overflow:auto}.truthFinaleScreen[hidden]{display:none}.truthFinaleScreen.active{display:flex;flex-direction:column;animation:truthScreenIn .35s ease both}@keyframes truthScreenIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.truthKicker{font-size:10px;letter-spacing:.22em;color:#b89550}.truthFinaleScreen h1,.truthFinaleScreen h2{font-family:Georgia,serif;margin:8px 0 10px;line-height:1.16}.truthFinaleScreen h1{font-size:clamp(36px,5vw,70px)}.truthFinaleScreen h2{font-size:clamp(26px,3.2vw,45px)}.truthLead{max-width:760px;color:#adb7af;line-height:1.7;font-size:13px;margin:0}.truthActions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:18px}.truthInstruction{margin:16px 0 12px;padding:10px 12px;border:1px dashed #526058;border-radius:10px;color:#c4ccc5;font-size:11px}.truthFeedback{min-height:24px;margin-top:12px;color:#9ca69e;font-size:11px}.truthFeedback.bad{color:#ef8d84}.truthFeedback.good{color:#a9c5b1}.truthAdvance{animation:truthAdvance .65s ease both}@keyframes truthAdvance{50%{opacity:1;color:#d8e9dc}100%{opacity:.72}}
.truthIntroGraphic{flex:1;min-height:230px;display:grid;place-items:center}.truthDoorMini{width:min(340px,64vw);aspect-ratio:1.25;border:8px solid #202823;border-radius:20px;background:radial-gradient(circle,#281b19,#0d1210 63%);box-shadow:inset 0 0 45px #000,0 25px 60px #000;display:grid;place-items:center;position:relative}.truthDoorMini::before{content:"";position:absolute;inset:18px;border:2px dashed #667069;border-radius:50%}.truthDoorMini::after{content:"";width:12px;height:12px;border-radius:50%;background:#c34f47;box-shadow:0 0 24px #c34f47;animation:truthPulse 1.6s infinite}.truthFiveClues{position:absolute;inset:0}.truthFiveClues span{position:absolute;width:38px;height:38px;border:1px solid #69746c;border-radius:50%;display:grid;place-items:center;background:#17201b}.truthFiveClues span:nth-child(1){left:5%;top:20%}.truthFiveClues span:nth-child(2){right:5%;top:20%}.truthFiveClues span:nth-child(3){left:11%;bottom:14%}.truthFiveClues span:nth-child(4){right:11%;bottom:14%}.truthFiveClues span:nth-child(5){left:calc(50% - 19px);top:2%}
.truthBreakerGrid{margin:auto 0;display:grid;grid-template-columns:repeat(3,minmax(140px,1fr));gap:14px}.truthBreaker{height:210px;border:1px solid #48534c;border-radius:14px;background:linear-gradient(145deg,#202722,#101512);position:relative;padding:14px;text-align:left;color:#ece5d1;cursor:pointer}.truthBreaker:hover{border-color:#7c8d82}.truthBreaker.pulled{border-color:#789985;background:linear-gradient(145deg,#26362c,#111914)}.truthBreaker small{display:block;color:#839087;font-size:9px}.truthBreaker b{display:block;margin-top:6px}.truthBreaker>span{position:absolute;bottom:12px;right:14px;font:40px Georgia;color:#3b453e}.truthLever{position:absolute;left:calc(50% - 12px);top:73px;width:24px;height:82px;border-radius:12px;background:#747b73;border:4px solid #20251f;transform-origin:50% 70%;transition:.3s;box-shadow:0 6px 10px #000}.truthBreaker.pulled .truthLever{transform:rotate(180deg);background:#94aa98}.truthSequence{display:flex;gap:7px;margin-top:12px}.truthSequence i{width:42px;height:6px;border-radius:999px;background:#313a34}.truthSequence i.on{background:#789985}
.truthCircuit{margin:auto 0;max-width:900px;border:1px solid #465249;border-radius:14px;background:#0c1210;padding:14px}.truthCircuit svg{width:100%;height:auto;display:block}.truthNode{fill:#18221d;stroke:#617067;stroke-width:2}.truthNodeText{fill:#dcd6c5;font-size:14px;text-anchor:middle}.truthWire{fill:none;stroke-width:6;stroke-linecap:round;opacity:.68}.truthWire.good{stroke:#719481}.truthWire.target{stroke:#c6564d;filter:drop-shadow(0 0 5px #b74640)}.truthWire.neutral{stroke:#817b66}.truthCircuit.cut .truthWire.target{stroke:#38413b;stroke-dasharray:9 11;filter:none}.truthCableButtons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.truthCableButtons .btn{text-align:left}.truthCableButtons small{display:block;color:#9ca69e;font-size:9px;margin-top:3px}
.truthRadioRig{margin:auto 0;display:grid;grid-template-columns:minmax(250px,420px) minmax(240px,1fr);gap:24px;align-items:center}.truthDial{aspect-ratio:1;border:1px solid #4d5a51;border-radius:50%;background:radial-gradient(circle,#273029 0 12%,#111713 13% 54%,#273029 55% 58%,#0c110e 59%);position:relative;box-shadow:inset 0 0 45px #000}.truthDialTicks{position:absolute;inset:8%;border:2px dashed #758077;border-radius:50%;opacity:.55}.truthNeedle{position:absolute;left:calc(50% - 3px);bottom:50%;width:6px;height:38%;border-radius:6px;background:#ff7568;transform-origin:50% 100%;transform:rotate(var(--truth-needle,-128deg));transition:.16s;box-shadow:0 0 9px #c34f47}.truthDialCenter{position:absolute;inset:37%;border-radius:50%;background:#313a34;border:5px solid #0c100e}.truthFrequencyReadout{position:absolute;left:20%;right:20%;bottom:16%;text-align:center;font:24px Georgia;color:#d8d3c1}.truthFrequencyReadout small{display:block;font:8px Inter;letter-spacing:.15em;color:#7f8b83}.truthRadioControls{display:grid;gap:12px}.truthRadioControls input{width:100%;accent-color:#b89550}.truthFrequencyLabels{display:flex;justify-content:space-between;font-size:9px;color:#9ca69e}.truthIsolateBtn.active{border-color:#789985;background:#28392e;color:#c6ddcc}.truthChannels{display:grid;grid-template-columns:1fr 1fr;gap:8px}.truthChannel{border:1px solid #414b45;border-radius:9px;padding:8px;font-size:9px}.truthChannel b{display:block;font-size:13px;margin:3px 0}.truthChannel.red b{color:#ff7568}.truthChannel.green b{color:#a8c9b1}
.truthDoorStage{margin:auto;display:grid;place-items:center;width:100%;min-height:390px}.truthDoorFrame{width:min(560px,70vw);height:min(440px,58vh);border:14px solid #29312c;border-radius:28px;background:#080c0a;position:relative;overflow:hidden;box-shadow:inset 0 0 70px #000,0 30px 70px #000}.truthDoorHalf{position:absolute;top:0;bottom:0;width:50%;z-index:3;background:linear-gradient(90deg,#171e1a,#303933,#141a17);border:1px solid #4d5750;transition:1.25s cubic-bezier(.5,0,.1,1)}.truthDoorHalf.left{left:0}.truthDoorHalf.right{right:0}.truthDoorFrame.open .truthDoorHalf.left{transform:translateX(-97%)}.truthDoorFrame.open .truthDoorHalf.right{transform:translateX(97%)}.truthDoorSeam{position:absolute;z-index:4;left:calc(50% - 3px);top:0;bottom:0;width:6px;background:#090d0b;box-shadow:0 0 18px #c34f47;transition:opacity .3s}.truthDoorFrame.open .truthDoorSeam{opacity:0}.truthVaultGlow{position:absolute;inset:0;background:radial-gradient(circle at 50% 62%,rgba(205,190,139,.48),rgba(77,105,87,.18) 30%,transparent 68%);opacity:0;transition:opacity 1s .35s}.truthDoorFrame.open .truthVaultGlow{opacity:1}.truthArchiveCase{position:absolute;left:calc(50% - 90px);bottom:55px;width:180px;height:95px;border:4px solid #6f765f;border-radius:8px;background:#1c241e;display:grid;place-items:center;font-size:11px;letter-spacing:.18em;color:#beb89b;transform:translateY(60px);opacity:0;transition:1s .65s}.truthDoorFrame.open .truthArchiveCase{transform:none;opacity:1}
.truthArchiveScreen{justify-content:center}.truthArchiveTop{display:flex;align-items:end;justify-content:space-between;gap:20px;max-width:900px}.truthArchiveCount{font:36px Georgia;color:#697269}.truthFileCard{margin-top:18px;max-width:900px;min-height:330px;border:1px solid #6d684f;border-radius:4px;background:linear-gradient(145deg,rgba(211,198,160,.96),rgba(150,137,101,.96));color:#25251e;padding:clamp(22px,4vw,48px);box-shadow:10px 12px 0 rgba(0,0,0,.2)}.truthFileStamp{display:inline-block;border:3px solid #713c35;color:#713c35;padding:5px 9px;transform:rotate(-4deg);font-weight:800;letter-spacing:.12em;font-size:11px;margin-top:18px}.truthFileCard h3{font:700 clamp(24px,3vw,40px) Georgia,serif;margin:20px 0 10px}.truthFileCard p{font-family:Georgia,serif;font-size:14px;line-height:1.8;color:#25251e}.truthFileMeta{font-size:9px;letter-spacing:.16em;color:#5d5948}.truthArchiveNav{max-width:900px;display:flex;justify-content:flex-end;margin-top:14px}
@media (max-width:700px){
  .homeFacts,.codexGrid,.summaryGrid{grid-template-columns:1fr 1fr}
  .endingLeaderboardPanel{grid-template-columns:1fr 1fr}.endingLeaderboardPanel p{grid-column:1/-1}
  .homeMenu{grid-template-columns:1fr}
  .summaryList{grid-template-columns:1fr}
  .homeLogo{font-size:38px!important}
  .endingPosterCard{padding:16px}.endingPosterPreview{padding:8px}.endingPosterActions{align-items:stretch;flex-direction:column}.endingPosterActions .btn{width:100%}
}

@media (max-width:900px){.truthFinaleApp{overflow:auto;min-height:100%}.truthFinaleTopbar{grid-template-columns:1fr auto}.truthProtocol{display:none}.truthFinaleShell{grid-template-columns:1fr;padding:8px;overflow:visible}.truthEvidence{max-height:240px}.truthConsole{min-height:620px}.truthFinaleScreen{position:relative;min-height:620px}.truthBreakerGrid{grid-template-columns:1fr}.truthBreaker{height:125px}.truthLever{top:48px;height:55px}.truthRadioRig{grid-template-columns:1fr}.truthDial{width:min(360px,80vw);margin:auto}}
@media (max-width:560px){.truthFinaleBrand{font-size:14px}.truthFinaleShell{display:block}.truthEvidence{margin-bottom:8px}.truthFinaleScreen{padding:20px}.truthCableButtons,.truthChannels{grid-template-columns:1fr}.truthDoorFrame{width:88vw}.truthSignalStatus{display:none}}
@media (prefers-reduced-motion:reduce){.truthFinaleModal *, .truthFinaleModal *::before, .truthFinaleModal *::after{animation-duration:.01ms!important;transition-duration:.01ms!important;transition-delay:0s!important}}

@media (max-width:980px){
  .app{padding:10px}
  .topbar{grid-template-columns:1fr}
  .seedbox{justify-content:flex-start}
  .stats{grid-template-columns:repeat(3,1fr)}
  .game{grid-template-columns:1fr}
  .mapPanel,.side{min-height:auto}
  .mapWrap{height:520px}
  .side{grid-template-rows:auto auto auto}
}
@media (max-width:620px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .itemPick{grid-template-columns:1fr 1fr}
  .mapWrap{height:430px}
  .eventArea h2{font-size:22px}
  .brand h1{font-size:25px}
}

/* v5: compact three-column expedition network */
html,body{min-height:100%;overflow-x:hidden}
body{background:#efe9dc}
.app{max-width:1440px;min-height:100vh;height:auto;margin:0 auto;padding:12px;overflow:visible}
.gameShell{height:calc(100vh - 24px);min-height:680px;display:grid;grid-template-columns:220px minmax(620px,1fr) 330px;gap:10px}
.leftRail,.rightRail,.centerStack{min-height:0}
.leftRail,.rightRail{display:flex;flex-direction:column;background:rgba(251,248,239,.96)}
.railBrand{padding:14px 14px 10px;border-bottom:1px solid var(--line)}
.railBrand h1{font-size:23px;letter-spacing:.15em;margin:0}.railBrand p{font-size:10px;margin:4px 0 0;color:var(--muted)}
.railTools{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:9px;border-bottom:1px solid var(--line)}
.railTools .btn{font-size:11px;padding:7px 6px}.railTools .langSwitch{grid-column:1/-1}.railTools .langBtn{flex:1;padding:6px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0;padding:9px}
.stat{padding:8px 9px;border-radius:10px}.stat:first-child,.stat:last-child{grid-column:1/-1}.stat .v{font-size:17px}.bar{margin-top:5px}
.weatherCard{margin:0 9px 8px;padding:9px;border:1px solid var(--line);border-radius:10px;background:#fffdf8}
.weatherCard strong{display:block;font-size:12px}.weatherCard small{display:block;color:var(--muted);font-size:10px;line-height:1.35;margin-top:4px}
.travelBrief{padding:0 9px 9px;display:grid;gap:6px}.travelBrief .btn{font-size:11px;padding:8px}
.centerStack{display:grid;grid-template-rows:minmax(360px,1.2fr) minmax(270px,1fr);gap:10px}
.mapPanel,.eventPanel{min-height:0}.mapPanel{display:flex;flex-direction:column}.mapWrap{height:auto;min-height:0;flex:1}
.eventPanel{display:flex;flex-direction:column}.eventPanel .panelHead{padding:9px 12px}.eventArea{padding:12px 14px;overflow:auto;min-height:0}
.eventArea h2{font-size:22px;margin-bottom:6px}.eventArea p{font-size:12px;line-height:1.42;margin:6px 0}.clue{font-size:11px;padding:7px 9px;margin:7px 0}
.metaGrid{margin:8px 0;gap:6px}.meta{padding:7px}.actions{gap:6px;margin-top:8px}.actionBtn{padding:8px 9px;font-size:12px}.actionBtn .cost{font-size:9px}
.sectionTitle{margin:10px 0 6px}.buildGrid{gap:5px}.buildRow{padding:7px}.buildRow small{display:none}.buildRow .btn{padding:6px 8px;font-size:10px}
.rightRail{overflow:hidden}.rightRail .panelHead{padding:10px 12px}.rightScroll{padding:10px;overflow:auto;min-height:0;flex:1}
.resourceGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.resourceCell{border:1px solid var(--line);border-radius:10px;background:#fffdf8;padding:8px 9px;min-width:0}
.resourceCell small{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.resourceCell b{display:block;font-size:16px;margin-top:2px}.resourceCell .resIcon{float:right;font-size:15px}
.gearSlots{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.gearSlot{aspect-ratio:1;border:1px solid var(--line);border-radius:10px;background:#fffdf8;display:flex;align-items:center;justify-content:center;position:relative;font-size:22px}
.gearSlot.empty{opacity:.35}.gearSlot .slotCount{position:absolute;right:4px;bottom:2px;font-size:9px;font-weight:800;background:var(--ink);color:white;border-radius:999px;padding:1px 4px}
.craftGrid{gap:6px}.craftRow{padding:8px}.craftRow small{font-size:9px}.craftRow .btn{padding:6px 8px;font-size:10px}.recipeToggle{width:100%;margin-top:7px;font-size:10px;padding:7px}
.networkKey{display:grid;grid-template-columns:1fr 1fr;gap:5px;font-size:10px;color:var(--muted)}.networkKey span{border:1px solid var(--line);border-radius:8px;padding:6px;background:#fffdf8}
.coverage{fill:rgba(47,107,87,.045);stroke:#7aa58f;stroke-width:1.4;stroke-dasharray:7 5;pointer-events:none}.coverage.main{fill:rgba(182,140,58,.05);stroke:var(--gold)}
.campBadge,.routeBadge{font-size:14px;text-anchor:middle;pointer-events:none}.routeBadge{font-size:12px}.node.maincamp circle{stroke:var(--gold);stroke-width:4}.node.outpost.damaged circle{stroke:var(--danger)}
.routeFree{color:var(--green);font-weight:750}.stormWarn{color:var(--danger)!important}
.panelHead{padding:10px 12px}.legend{gap:8px;font-size:9px}.node text{font-size:10px}.node .sub{font-size:8px}
.mapHeadTools{display:flex;align-items:center;gap:7px}.zoomTools{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--paper)}
.zoomBtn{width:27px;height:25px;border:0;border-right:1px solid var(--line);background:transparent;cursor:pointer;color:var(--ink);padding:0}.zoomBtn:last-child{border-right:0}.zoomBtn:hover{background:rgba(47,107,87,.08)}
.zoomLevel{min-width:42px;text-align:center;font-size:9px;color:var(--muted)}#mapSvg.dragging{cursor:grabbing}.mapWrap{touch-action:none}
.clueSlots{display:grid;grid-template-columns:1fr 1fr;gap:6px}.clueItem{border:1px solid var(--line);border-radius:10px;background:#fffdf8;padding:7px;min-height:52px;display:grid;grid-template-columns:25px 1fr;gap:6px;align-items:center}
.clueItem.locked{opacity:.42;filter:grayscale(1)}.clueIcon{font-size:20px;text-align:center}.clueItem b{display:block;font-size:10px;line-height:1.2}.clueItem small{display:block;color:var(--muted);font-size:8px;margin-top:2px}.truthSummary{margin-top:7px;border-left:3px solid var(--gold);background:rgba(182,140,58,.08);border-radius:0 9px 9px 0;padding:8px 9px;font-size:10px;line-height:1.45}.truthSummary.complete{border-left-color:var(--green);background:rgba(47,107,87,.08)}
.threadGrid{display:grid;gap:6px}.threadCard{display:grid;grid-template-columns:24px 1fr auto;gap:7px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fffdf8;padding:7px 8px}.threadCard .threadIcon{font-size:18px;text-align:center}.threadCard b{display:block;font-size:10px}.threadCard small{display:block;color:var(--muted);font-size:8px;line-height:1.35;margin-top:2px}.threadStatus{font-size:8px;font-weight:800;border-radius:999px;padding:3px 6px;background:#eee8dc;color:var(--muted);white-space:nowrap}.threadCard.active .threadStatus{background:rgba(182,140,58,.13);color:#785b21}.threadCard.complete{border-color:rgba(47,107,87,.38);background:rgba(47,107,87,.06)}.threadCard.complete .threadStatus{background:rgba(47,107,87,.13);color:var(--green)}
.clueHintList{display:grid;gap:5px;margin-top:7px}.clueHint{border:1px dashed var(--line);border-radius:8px;padding:6px 7px;background:rgba(255,255,255,.35);font-size:9px;line-height:1.4}.investigationNote{margin-top:7px;border-left:3px solid var(--green);background:rgba(47,107,87,.08);border-radius:0 8px 8px 0;padding:7px 8px;font-size:9px;line-height:1.45}.investigationBadge{font-size:15px;text-anchor:middle;pointer-events:none}
.homeTutorial{display:flex;align-items:center;gap:9px;margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.3);font-size:12px;color:var(--muted);cursor:pointer}
.homeTutorial input{accent-color:var(--green);width:16px;height:16px;margin:0}.homeTutorial b{color:var(--ink);font-size:12px}
.tutorialLayer{position:fixed;inset:0;z-index:25;display:none;pointer-events:none}.tutorialLayer.show{display:block}.tutorialDim{position:absolute;inset:0;background:rgba(20,29,25,.38)}
.tutorialFocus{position:relative!important;z-index:26!important;box-shadow:0 0 0 4px rgba(255,244,186,.95),0 18px 55px rgba(0,0,0,.22)!important;transition:box-shadow .18s ease}
.tutorialCard{display:none;position:fixed;z-index:27;width:min(350px,calc(100vw - 28px));padding:16px 17px;border:1px solid rgba(182,140,58,.72);border-radius:15px;background:rgba(251,248,239,.99);box-shadow:0 22px 70px rgba(0,0,0,.28);pointer-events:auto}.tutorialLayer.show + .tutorialCard{display:block}.feedback{z-index:28}
.tutorialKicker{display:flex;justify-content:space-between;gap:10px;color:var(--gold);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.tutorialCard h3{font-size:20px;margin:7px 0 6px}.tutorialCard p{font-size:12px;line-height:1.55;color:#415049;margin:0}.tutorialGoal{margin-top:10px;padding:8px 9px;border-left:3px solid var(--green);border-radius:0 8px 8px 0;background:rgba(47,107,87,.08);font-size:11px;color:var(--ink)}
.tutorialActions{display:flex;gap:7px;justify-content:flex-end;margin-top:13px}.tutorialActions .btn{font-size:11px;padding:7px 9px}
@media (prefers-reduced-motion:reduce){.tutorialFocus{transition:none}.toast{animation:none}}
@media (max-width:1180px){.gameShell{grid-template-columns:200px minmax(520px,1fr) 292px}}
@media (max-width:980px){html,body{overflow:auto}.app{height:auto;overflow:visible}.gameShell{height:auto;grid-template-columns:1fr}.centerStack{grid-template-rows:520px auto}.leftRail,.rightRail{min-height:auto}.stats{grid-template-columns:repeat(3,1fr)}.stat:first-child,.stat:last-child{grid-column:auto}.rightRail{overflow:visible}.rightScroll{overflow:visible}.gameShell .mapWrap{height:470px}}

.about-game,.siteFooter{width:min(920px,calc(100% - 32px));margin:18px auto;color:var(--ink)}
.about-game{border:1px solid var(--line);border-radius:12px;background:rgba(251,248,239,.9);padding:12px 16px}
.about-game summary{cursor:pointer;font-weight:700}
.about-copy{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:14px;font-size:13px;line-height:1.6}
.about-copy h2{font-size:17px}.about-copy h3{font-size:14px;margin-bottom:0}.about-copy p{margin-top:4px;color:#34433d}
.siteFooter{text-align:center;padding:4px 0 24px}.siteFooter a{color:var(--green);font-size:13px}
.next-life-card{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;border:1px solid var(--line);border-radius:12px;padding:13px 14px;background:#fffdf7;text-align:left}
.next-life-copy{min-width:0}.next-life-kicker{display:block;color:var(--gold);font-size:10px;font-weight:800;letter-spacing:.12em}.next-life-title{margin:4px 0;font-size:17px}.next-life-description{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.next-life-action{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-height:42px;border:1px solid var(--green);border-radius:10px;padding:8px 12px;background:var(--green);color:white;text-decoration:none;font-size:12px}
html[lang="zh-CN"] .about-copy [lang="en"],html[lang="en"] .about-copy [lang="zh-CN"]{display:none}
.about-copy{grid-template-columns:1fr}
@media (max-width:640px){.about-game,.siteFooter{width:calc(100% - 20px)}.about-game{padding:10px 12px}.next-life-card{align-items:stretch;flex-direction:column}.next-life-action{width:100%}}
