:root {
  --paper: #f3ecd9;
  --paper-light: #fffdf6;
  --ink: #202720;
  --muted: #62675d;
  --green: #1f5142;
  --green-dark: #143b31;
  --red: #7c2f2c;
  --blue: #31536f;
  --gold: #b28a3e;
  --line: #c8b995;
  --shadow: 0 12px 34px rgba(43, 38, 25, .12);
  --shadow-soft: 0 8px 22px rgba(43, 38, 25, .1);
  --paper-deep: #e9dfc6;
  --ink-soft: #61665d;
  --gold-light: #e2c985;
  --radius: 4px;
  --serif: Georgia, "Times New Roman", serif;
  --sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { min-width: 300px; scroll-behavior: smooth; scroll-padding-top: 94px; }
html.instant-stage-scroll { scroll-behavior: auto; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); font-size: 17px; line-height: 1.55; }
body::before { content: ""; position: fixed; inset: 0; pointer-events: none; opacity: .25; background-image: repeating-linear-gradient(0deg, transparent, transparent 3px, rgba(69, 55, 31, .025) 4px); }
button, input { font: inherit; }
button { min-height: 44px; color: inherit; }
button:focus-visible, input:focus-visible { outline: 3px solid #d19b2a; outline-offset: 3px; }
[hidden] { display: none !important; }
.skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 100; padding: .7rem 1rem; color: white; background: var(--green-dark); }
.skip-link:focus { top: 1rem; }
.noscript { padding: 1rem; color: white; background: var(--red); text-align: center; }

.topbar { position: sticky; top: 0; z-index: 20; min-height: 74px; display: grid; grid-template-columns: minmax(220px, 1fr) minmax(280px, 560px) minmax(100px, 1fr); align-items: center; gap: 1.5rem; padding: .7rem clamp(1rem, 4vw, 4rem); color: #fff; background: var(--green-dark); border-bottom: 3px solid var(--gold); }
.brand-button { display: flex; gap: .7rem; align-items: center; padding: 0; border: 0; color: #fff; background: transparent; text-align: left; cursor: pointer; }
.brand-button strong, .brand-button small { display: block; }
.brand-button strong { font-family: var(--serif); letter-spacing: .08em; }
.brand-button small { color: #d8d4c4; font-size: .72rem; }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--gold); border-radius: 50%; color: var(--gold); font-family: var(--serif); font-weight: 700; }
.progress-label { display: flex; justify-content: space-between; margin-bottom: .3rem; color: #e8e5dc; font-size: .75rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.progress-track { height: 6px; overflow: hidden; background: rgba(255,255,255,.17); border-radius: 20px; }
.progress-track span { display: block; height: 100%; width: 0; background: var(--gold); transition: width .25s ease; }
.icon-button { justify-self: end; padding: .55rem .8rem; border: 1px solid rgba(255,255,255,.55); color: #fff; background: transparent; cursor: pointer; }
.icon-button:hover, .icon-button[aria-expanded="true"] { color: var(--green-dark); background: var(--paper-light); border-color: var(--paper-light); }
.game-menu { position: absolute; top: calc(100% + 5px); right: clamp(1rem, 4vw, 4rem); z-index: 80; width: 260px; padding: .45rem; color: var(--ink); background: #fffdf6; border: 2px solid var(--gold); box-shadow: 0 16px 38px rgba(20,38,31,.28); opacity: 1; }
.game-menu-title { display: block; padding: .55rem .7rem .45rem; color: var(--red); border-bottom: 1px solid var(--line); font-size: .7rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.game-menu button { width: 100%; min-height: 46px; padding: .75rem .7rem; border: 0; border-bottom: 1px solid #e4dcc7; color: var(--ink); background: #fffdf6; opacity: 1; text-align: left; cursor: pointer; }
.game-menu button:last-child { border-bottom: 0; color: var(--red); }
.game-menu button:hover, .game-menu button:focus-visible { color: #fff; background: var(--green); }
.game-menu button:last-child:hover, .game-menu button:last-child:focus-visible { background: var(--red); }

main { min-height: 100vh; min-height: 100dvh; }
.screen { width: min(1180px, calc(100% - 2rem)); min-height: calc(100dvh - 74px); margin: 0 auto; padding: clamp(2rem, 5vw, 4.5rem) 0 4rem; }
.narrow { width: min(720px, calc(100% - 2rem)); }
.paper-panel { min-height: auto; margin-top: 5vh; padding: clamp(2rem, 6vw, 4.5rem); background: var(--paper-light); border: 1px solid var(--line); box-shadow: var(--shadow); }
h1, h2, p { margin-top: 0; }
h1, h2 { font-family: var(--serif); line-height: 1.12; }
h1 { margin-bottom: 1rem; font-size: clamp(2.2rem, 5vw, 4rem); font-weight: 500; letter-spacing: -.025em; }
h2 { font-size: 1.35rem; }
.eyebrow { margin-bottom: .7rem; color: var(--red); font-size: .76rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.lead { max-width: 760px; color: var(--muted); font-size: 1.08rem; }
.screen-heading { margin-bottom: 2rem; scroll-margin-top: 100px; }
.primary, .secondary, .text-button, .help-button { min-height: 46px; padding: .7rem 1.1rem; border-radius: 2px; font-weight: 800; letter-spacing: .025em; cursor: pointer; }
.primary { border: 1px solid var(--green); color: white; background: var(--green); box-shadow: 3px 3px 0 #b69859; }
.primary:hover { background: var(--green-dark); }
.primary:disabled { color: #777; background: #d7d1c1; border-color: #c3bcab; box-shadow: none; cursor: not-allowed; }
.secondary { border: 1px solid var(--green); color: var(--green-dark); background: transparent; }
.secondary:hover { background: #e5deca; }
.large { min-height: 54px; padding: .9rem 1.4rem; }
.text-button { padding-left: 0; border: 0; color: var(--green); background: transparent; }
.help-button { border: 1px dashed var(--blue); color: var(--blue); background: #f3f5f4; }
.stage-nav { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2.5rem; padding-top: 1.2rem; border-top: 1px solid var(--line); }

.hero { position: relative; isolation: isolate; display: grid; grid-template-columns: 130px minmax(0, 1fr) 310px; align-items: center; gap: clamp(1.5rem, 4vw, 4rem); min-height: 100dvh; padding-top: 3rem; overflow: hidden; }
.hero::after { content: ""; position: absolute; inset: 1.5rem 0; z-index: -1; pointer-events: none; background: linear-gradient(90deg, rgba(243,236,217,.98) 0%, rgba(243,236,217,.9) 39%, rgba(243,236,217,.26) 72%, rgba(243,236,217,.08) 100%); }
.hero-art { position: absolute; inset: 1.5rem 0; z-index: -2; width: 100%; height: calc(100% - 3rem); object-fit: cover; object-position: center; opacity: .66; filter: saturate(.78) contrast(.94); }
.hero-seal { align-self: start; display: grid; place-items: center; width: 116px; aspect-ratio: 1; margin-top: 5rem; border: 2px solid var(--red); outline: 1px solid var(--red); outline-offset: 5px; border-radius: 50%; color: var(--red); font-family: var(--serif); font-weight: 700; transform: rotate(-8deg); }
.hero h1 { margin: 0; max-width: 690px; font-size: clamp(3.4rem, 7vw, 6.4rem); line-height: .85; letter-spacing: -.06em; }
.hero h1 em { display: block; color: var(--green); font-style: normal; }
.author-credit { display: inline-block; margin: .15rem 0 1.35rem; padding: .5rem .8rem; border-left: 4px solid var(--gold); color: var(--green-dark); background: rgba(226,201,133,.3); font-family: var(--serif); font-size: clamp(1.05rem, 1.45vw, 1.2rem); font-weight: 700; letter-spacing: .015em; }
.subtitle { margin: .8rem 0 1.1rem; font-family: var(--serif); font-size: clamp(1.5rem, 3vw, 2.4rem); letter-spacing: .08em; }
.rule { width: 100%; height: 1px; margin-bottom: 1.4rem; background: linear-gradient(90deg, var(--gold), transparent); }
.hero-intro { max-width: 720px; font-size: 1.02rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2rem; }
.hero-actions button small { display: block; margin-top: .15rem; font-weight: 500; letter-spacing: 0; }
.mode-choice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; margin-top: 1.35rem; }
.mode-choice { display: flex; flex-direction: column; align-items: flex-start; min-height: 230px; padding: 1rem; border: 1px solid rgba(76,67,43,.35); background: rgba(255,252,242,.88); box-shadow: 3px 4px 0 rgba(80,62,31,.12); }
.mode-choice.online { border-top: 5px solid var(--blue); }
.mode-choice.individual { border-top: 5px solid var(--green); }
.mode-choice > span, .journey-type > span { color: var(--red); font-size: .68rem; font-weight: 850; letter-spacing: .11em; text-transform: uppercase; }
.mode-choice h2 { margin: .4rem 0 .5rem; font-size: 1.18rem; }
.mode-choice p { color: var(--muted); font-size: .86rem; }
.mode-choice > button, .individual-save-actions { width: 100%; margin-top: auto; }
.individual-save-actions { display: grid; gap: .5rem; }
.individual-save-actions button { width: 100%; }
.journey-type-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.journey-type { display: grid; gap: .45rem; min-height: 175px; padding: 1.2rem; border: 2px solid var(--line); color: var(--ink); background: #fffdf6; text-align: left; cursor: pointer; touch-action: manipulation; }
.journey-type:hover, .journey-type:focus-visible { border-color: var(--green); background: #f0f1e5; }
.journey-type strong { color: var(--green-dark); font: 700 1.25rem/1.15 var(--serif); }
.journey-type small { color: var(--muted); }
.module-card { padding: 2rem; background: rgba(239,230,207,.94); border: 1px solid var(--line); border-top: 6px solid var(--green); box-shadow: 0 14px 38px rgba(43,38,25,.2); transform: rotate(1deg); backdrop-filter: blur(2px); }
.module-card h2 { margin: 1.4rem 0 .5rem; font-size: 1.7rem; }
.module-card ul { padding-left: 1.2rem; }
.folio, .case-label, .column-label, .case-number { color: var(--red); font-size: .72rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.local-note { margin: 1.5rem 0 0; padding-top: 1rem; border-top: 1px solid var(--line); color: var(--muted); font-size: .82rem; }

.student-form { display: grid; gap: 1.3rem; margin-top: 2rem; }
.student-form label { display: grid; gap: .35rem; font-weight: 750; }
.student-form input { width: 100%; padding: .85rem; border: 1px solid #968967; color: var(--ink); background: #fff; border-radius: 2px; }
.student-form select { width: 100%; min-height: 48px; padding: .75rem; border: 1px solid #968967; color: var(--ink); background: #fff; }

.chronology-brief { display: flex; justify-content: space-between; gap: 1.5rem; align-items: center; margin-bottom: 1.2rem; padding: 1rem 1.2rem; color: #fff; background: var(--green-dark); border-bottom: 4px solid var(--gold); }
.chronology-brief span, .activity-section-head > div > span { color: #e2c985; font-size: .68rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.chronology-brief p { max-width: 780px; margin: .2rem 0 0; }
.chronology-brief > strong { flex: none; font-family: var(--serif); font-size: 2rem; }
.chronology-layout { display: grid; grid-template-columns: minmax(280px,.8fr) minmax(520px,1.45fr); gap: 1rem; align-items: start; }
.chronology-pool, .chronology-board { padding: 1rem; background: #e4dbc4; border: 1px solid var(--line); }
.activity-section-head { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: .9rem; }
.activity-section-head h2 { margin: .1rem 0 0; }
.activity-section-head p { max-width: 720px; margin: .25rem 0 0; color: var(--muted); }
.activity-section-head > strong, .activity-section-head > span { flex: none; color: var(--green); font-weight: 850; }
.chronology-cards { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; }
.chronology-card { position: relative; min-height: 106px; display: flex; flex-direction: column; align-items: flex-start; gap: .25rem; padding: .8rem .8rem .75rem 2.3rem; color: var(--ink); background: var(--paper-light); border: 1px solid #a99a76; box-shadow: 3px 4px 0 rgba(80,62,31,.12); text-align: left; cursor: pointer; touch-action: manipulation; }
.chronology-card:hover { border-color: var(--green); transform: translateY(-2px); }
.chronology-card.selected { color: #fff; background: var(--green); outline: 4px solid rgba(178,138,62,.4); }
.chronology-card strong { font-family: var(--serif); font-size: 1.03rem; line-height: 1.2; }
.chronology-card small { margin-top: auto; color: var(--muted); font-size: .7rem; }
.chronology-card.selected small { color: #e8e5d8; }
.card-select-mark { position: absolute; left: .6rem; top: .65rem; display: grid; place-items: center; width: 24px; height: 24px; color: var(--green-dark); border: 1px solid var(--gold); border-radius: 50%; font-weight: 900; }
.chronology-line { position: relative; display: grid; gap: .6rem; padding-left: 2rem; }
.chronology-line::before { content: ""; position: absolute; left: .9rem; top: 1rem; bottom: 1rem; width: 2px; background: var(--gold); }
.chronology-slot { position: relative; min-height: 66px; display: grid; grid-template-columns: minmax(135px,.55fr) minmax(0,1fr) auto; gap: .7rem; align-items: center; padding: .65rem .8rem; color: var(--muted); background: rgba(255,253,246,.62); border: 1px dashed #998963; text-align: left; cursor: pointer; }
.chronology-slot:hover { background: var(--paper-light); border-color: var(--green); }
.chronology-slot.confirmed { color: var(--ink); background: #f7f6eb; border: 1px solid #8da68b; box-shadow: inset 5px 0 var(--green); cursor: default; animation: confirmedCard .35s ease-out; }
.slot-number { position: absolute; left: -2.15rem; display: grid; place-items: center; width: 30px; height: 30px; color: #fff; background: var(--red); border: 4px solid #e4dbc4; border-radius: 50%; font-size: .72rem; font-weight: 850; }
.chronology-slot.confirmed .slot-number { background: var(--green); }
.slot-date { color: var(--red); font-family: var(--serif); font-size: .85rem; font-weight: 750; }
.chronology-slot strong { font-family: var(--serif); font-size: 1.05rem; }
.chronology-slot small { color: var(--green); font-size: .65rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.slot-placeholder { grid-column: 1 / -1; }
.chronology-discard { width: 100%; margin-top: 1rem; padding: .8rem; color: var(--ink); background: repeating-linear-gradient(135deg,#e7ddc7,#e7ddc7 10px,#dfd2b6 10px,#dfd2b6 20px); border: 2px dashed var(--red); }
.chronology-discard.ready { outline: 4px solid rgba(124,47,44,.15); }
.chronology-discard-target { width: 100%; min-height: 58px; display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; align-items: center; padding: .65rem; border: 0; color: var(--ink); background: transparent; text-align: left; cursor: pointer; }
.chronology-discard-target > span { color: var(--red); font-size: .72rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.chronology-discard-target small { color: var(--red); font-weight: 800; }
.discarded-cards { display: flex; flex-wrap: wrap; gap: .5rem; padding-top: .7rem; border-top: 1px solid rgba(124,47,44,.3); }
.discarded-cards button { min-height: 44px; padding: .5rem .7rem; border: 1px solid var(--red); color: var(--ink); background: #fffdf6; text-align: left; cursor: pointer; }
.discarded-cards button span { display: block; color: var(--red); font-size: .65rem; font-weight: 800; text-transform: uppercase; }
.interaction-hint { margin: .65rem 0 0; color: var(--muted); font-size: .78rem; }
.pool-empty { grid-column: 1 / -1; margin: 0; padding: 1rem; color: var(--muted); text-align: center; }
@keyframes confirmedCard { from { opacity: .4; transform: translateX(-10px); } to { opacity: 1; transform: none; } }

.mission-brief { display: flex; justify-content: space-between; gap: 2rem; align-items: center; margin-bottom: 1.5rem; padding: 1rem 1.2rem; background: #e4ddca; border-left: 5px solid var(--gold); }
.mission-brief p { margin: 0; max-width: 760px; }
.mission-brief strong { flex: none; color: var(--green); }
.clue-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.clue-card { position: relative; min-height: 230px; display: flex; flex-direction: column; align-items: flex-start; padding: 1.3rem; overflow: hidden; border: 1px solid var(--line); color: var(--ink); background: var(--paper-light); text-align: left; cursor: pointer; box-shadow: 0 5px 15px rgba(43,38,25,.08); }
.clue-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.clue-card.opened { border-top: 5px solid var(--green); }
.clue-card:focus-visible { transform: translateY(-2px); }
.clue-card strong { margin: .7rem 0; font-family: var(--serif); font-size: 1.35rem; line-height: 1.15; }
.clue-index { color: var(--red); font-size: .68rem; font-weight: 800; letter-spacing: .12em; }
.clue-stamp { position: absolute; right: -15px; top: 18px; padding: .2rem 1rem; border: 1px solid rgba(124,47,44,.4); color: rgba(124,47,44,.7); font-family: var(--serif); font-size: .72rem; transform: rotate(12deg); }
.clue-symbol { display: grid; place-items: center; width: 46px; height: 46px; margin-top: 1rem; color: var(--green-dark); border: 1px solid var(--gold); border-radius: 50%; background: #f2ead5; font-family: var(--serif); font-weight: 800; letter-spacing: .04em; }
.clue-text { color: var(--muted); font-size: .88rem; line-height: 1.45; }
.clue-status { margin-top: auto; padding-top: .8rem; color: var(--green); font-size: .78rem; font-weight: 800; text-transform: uppercase; }
.success-note { display: flex; gap: .4rem 1rem; align-items: center; margin-top: 1.3rem; padding: 1rem 1.2rem; color: var(--green-dark); background: #dbe6db; border: 1px solid #9db19d; }

.clue-dialog { width: min(900px, calc(100% - 1rem)); max-height: calc(100dvh - 1rem); height: min(920px, calc(100dvh - 1rem)); padding: 0; overflow: hidden; color: var(--ink); background: transparent; border: 0; }
.clue-dialog::backdrop { background: rgba(18,30,25,.72); backdrop-filter: blur(2px); }
.clue-dialog-frame { position: relative; display: flex; flex-direction: column; height: 100%; min-height: 0; overflow: hidden; background: var(--paper-light); border: 1px solid var(--gold); border-top: 8px solid var(--green); box-shadow: 0 28px 80px rgba(0,0,0,.38); }
.clue-dialog-close { position: relative; z-index: 3; flex: 0 0 auto; align-self: flex-end; margin: .6rem .6rem 0 0; min-width: 44px; min-height: 44px; padding: .5rem .8rem; color: var(--green-dark); background: #fffdf6; border: 1px solid var(--green); font-weight: 800; cursor: pointer; }
#clueDialogContent { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; scrollbar-gutter: stable; touch-action: pan-y; }
.clue-dialog-close:hover { color: #fff; background: var(--green); }
.clue-document { clear: both; }
.clue-document-header { display: grid; grid-template-columns: 112px 1fr; gap: 1.5rem; align-items: center; padding: 2.2rem clamp(1.2rem, 4vw, 3rem) 1.7rem; background: linear-gradient(110deg, #e9dfc7, #fffdf6 72%); border-bottom: 1px solid var(--line); }
.document-emblem { display: grid; place-items: center; width: 96px; aspect-ratio: 1; color: var(--green-dark); border: 2px solid var(--gold); outline: 1px solid var(--gold); outline-offset: 5px; border-radius: 50%; font-family: var(--serif); transform: rotate(-3deg); }
.document-emblem span { font-size: 1.65rem; font-weight: 800; }
.document-emblem small { font-family: var(--sans); font-size: .58rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.document-kicker { margin-bottom: .4rem; color: var(--red); font-size: .7rem; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
.clue-document-header h2 { margin-bottom: .5rem; font-size: clamp(2rem, 5vw, 3.4rem); font-weight: 500; }
.document-subtitle { max-width: 660px; margin: 0; color: var(--muted); font-size: 1.05rem; }
.document-body { padding: 1.8rem clamp(1.2rem, 4vw, 3rem); }
.document-summary { max-width: 760px; margin-bottom: 1.6rem; font-family: var(--serif); font-size: 1.22rem; line-height: 1.55; }
.document-body section { display: grid; grid-template-columns: 44px 1fr; gap: 1rem; padding: 1.15rem 0; border-top: 1px solid var(--line); }
.document-body section:last-child { border-bottom: 1px solid var(--line); }
.document-body section h3 { margin: 0 0 .35rem; color: var(--green-dark); font-family: var(--serif); font-size: 1.25rem; }
.document-body section p { margin: 0; color: var(--muted); }
.document-section-number { color: var(--red); font-size: .72rem; font-weight: 850; letter-spacing: .1em; }
.document-footer { display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding: 1rem clamp(1.2rem, 4vw, 3rem) 1.4rem; }
.document-footer > span { color: var(--green); font-size: .8rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }


.feedback-box { min-height: 0; margin-top: 0; padding: 0; border: 0; }
.feedback-box.visible { min-height: 52px; margin-top: 1rem; padding: .8rem 1rem; color: var(--blue); background: #e5ebef; border-left: 4px solid var(--blue); }
.question-value { display: flex; justify-content: space-between; gap: .75rem; align-items: center; margin: .9rem 0; padding: .7rem .85rem; border: 2px solid var(--gold); background: #fff7dc; color: var(--ink); font-size: .78rem; font-weight: 800; letter-spacing: .06em; }
.question-value strong { color: var(--red); }
.answer-incorrect, .investigation-mechanic button.answer-incorrect { border-color: var(--red) !important; color: #7a211d !important; background: #f7e2de !important; box-shadow: inset 5px 0 0 var(--red); cursor: not-allowed; opacity: .78; }
.answer-incorrect::after { content: "✕ INCORRETA"; font-size: .68rem; font-weight: 900; letter-spacing: .08em; }
.answer-resolution { display: grid; gap: .65rem; max-width: 680px; margin: 1.25rem auto; padding: 1.25rem; border: 3px solid var(--green); background: #e5efe1; text-align: center; }
.answer-resolution strong { color: var(--green-dark); font-size: 1.25rem; letter-spacing: .06em; }
.answer-resolution p { margin: 0; font-weight: 750; }
.answer-resolution .primary { justify-self: center; min-width: min(100%, 260px); min-height: 52px; }

/* Missão final: gabinete em 2.5D, composto somente por camadas e CSS. */
.imperial-council { position: relative; min-height: min(760px, 100dvh); overflow: visible; padding: clamp(1rem,3vw,2rem); perspective: 1000px; background: linear-gradient(155deg,#27362d 0 37%,#b9a57a 38% 42%,#5f4c38 43% 100%); box-shadow: inset 0 0 80px rgba(16,14,10,.55); }
.council-backdrop i { position: absolute; inset: 0; pointer-events: none; }
.council-backdrop i:nth-child(1) { background: repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 2px,transparent 2px 120px); transform: translateZ(-80px) scale(1.12); }
.council-backdrop i:nth-child(2) { top: 36%; background: linear-gradient(90deg,transparent 0 7%,rgba(38,28,20,.58) 7% 9%,transparent 9% 91%,rgba(38,28,20,.58) 91% 93%,transparent 93%); }
.council-backdrop i:nth-child(3) { top: 42%; background: linear-gradient(160deg,#69513a,#30251d); clip-path: polygon(0 9%,100% 0,100% 100%,0 100%); }
.council-intro { position: relative; z-index: 4; max-width: 760px; margin: 0 auto 1rem; padding: 1rem; color: #fff9ea; text-align: center; text-shadow: 0 2px 3px #16120e; }
.council-intro > span { color: #e8cc7b; font-size: .72rem; font-weight: 900; letter-spacing: .13em; }
.council-intro h1 { margin: .3rem 0; font-size: clamp(1.6rem,4vw,2.8rem); }
.council-intro p { max-width: 64ch; margin: 0 auto; }
.council-intro .question-value { margin: .9rem auto 0; max-width: 360px; text-shadow: none; }
.council-room { position: relative; z-index: 2; min-height: 440px; max-width: 1050px; margin: 0 auto; transform-style: preserve-3d; }
.council-object { position: absolute; z-index: 3; display: grid; place-items: center; gap: .2rem; width: 130px; min-height: 104px; padding: .6rem; border: 2px solid #d6bd79; color: #fff9df; background: linear-gradient(135deg,#5a4330,#2e2821); box-shadow: 8px 10px 0 rgba(20,14,10,.27); cursor: pointer; transform: translateZ(18px); }
.council-object:hover, .council-object:focus-visible { transform: translateZ(34px) translateY(-4px); border-color: #fff0ae; }
.council-object > span { font-size: 1.55rem; color: #e8cc7b; }.council-object strong { font-size: .68rem; letter-spacing: .08em; }.council-object small { font-size: .62rem; font-weight: 900; }.council-object.investigated { border-color: var(--green); background: #294535; }.council-object.investigated small { color: #bfe7b9; }
.council-object.portrait { left: 6%; top: 7%; min-height: 145px; }.council-object.map { left: 28%; top: 5%; width: 175px; }.council-object.newspaper { right: 25%; top: 12%; }.council-object.law { right: 6%; top: 6%; }.council-object.letter { left: 9%; bottom: 14%; }.council-object.report { right: 8%; bottom: 14%; }.council-object.document { left: 35%; bottom: 5%; }
.council-table { position: absolute; z-index: 4; left: 50%; bottom: 7%; display: grid; gap: .35rem; width: min(56%,520px); min-height: 165px; padding: 1.2rem; color: #fff4d4; background: linear-gradient(145deg,#755232,#37251b); border: 8px solid #2d2019; box-shadow: 0 20px 0 rgba(18,12,8,.32), inset 0 0 0 2px #b79757; text-align: center; transform: translateX(-50%) rotateX(51deg) translateZ(24px); transform-origin: center bottom; }.council-table span { color: #e9ca76; font-size: .68rem; font-weight: 900; letter-spacing: .12em; }.council-table button { justify-self: center; transform: rotateX(-51deg); }
.council-evidence-list { position: relative; z-index: 5; display: grid; grid-template-columns: repeat(auto-fit,minmax(210px,1fr)); gap: .7rem; max-width: 1050px; margin: 1rem auto 0; }.council-evidence-list article { padding: .75rem; border-left: 4px solid var(--gold); background: #fff9ed; box-shadow: 2px 3px 0 rgba(25,17,10,.18); }.council-evidence-list article p { margin: .35rem 0 0; font-size: .84rem; }
.imperial-council.case-open .council-intro { transform: translateZ(40px) scale(1.02); }.council-case { position: relative; z-index: 5; max-width: 930px; margin: 1rem auto; padding: 1rem; background: rgba(255,249,235,.96); box-shadow: 0 18px 44px rgba(20,14,9,.35); animation: council-focus .35s ease-out; }.case-table { position: static; width: auto; min-height: 0; margin: 0 0 1rem; transform: none; }.case-table b { display: inline-block; margin: .18rem; padding: .3rem .45rem; color: #33271c; background: #efe0b6; font-size: .64rem; }.council-case h2 { font-size: clamp(1.2rem,3vw,1.7rem); }.council-relations { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .7rem; }.council-relations button { display: grid; gap: .35rem; min-height: 105px; padding: .8rem; border: 2px solid #8c7753; background: #fffdf6; text-align: left; cursor: pointer; }.council-relations button.selected { border-color: var(--green); background: #e2eee0; box-shadow: inset 6px 0 var(--green); }.council-case > .primary { display: block; min-height: 52px; margin: 1rem auto 0; }
@keyframes council-focus { from { opacity: .4; transform: scale(.96) translateY(12px); } to { opacity: 1; transform: none; } }
@media (max-width: 720px) { .imperial-council { min-height: 850px; }.council-room { min-height: 520px; }.council-object { width: 100px; min-height: 88px; font-size: .75rem; }.council-object.map { left: 31%; width: 126px; }.council-object.newspaper { right: 18%; top: 23%; }.council-object.law { right: 3%; }.council-object.document { left: 35%; bottom: 18%; }.council-table { width: 76%; bottom: 2%; }.council-relations { grid-template-columns: 1fr; } }
.power-phase-strip { display: grid; grid-template-columns: repeat(2,1fr); gap: .6rem; margin: 0 0 1rem; padding: 0; list-style: none; }
.power-phase-strip li { display: flex; gap: .6rem; align-items: center; min-height: 48px; padding: .55rem .75rem; color: var(--muted); background: #ded5bd; border: 1px solid var(--line); font-size: .78rem; font-weight: 800; text-transform: uppercase; }
.power-phase-strip li span { display: grid; place-items: center; width: 27px; height: 27px; color: #fff; background: #8b887d; border-radius: 50%; }
.power-phase-strip li.current { color: var(--red); background: var(--paper-light); border: 2px solid var(--red); }
.power-phase-strip li.current span { background: var(--red); }
.power-phase-strip li.done { color: var(--green); }
.power-phase-strip li.done span { background: var(--green); }
.power-discovery, .power-placement, .power-relations, .power-complete { padding: 1.15rem; background: #e5dcc5; border: 1px solid var(--line); box-shadow: inset 0 0 38px rgba(65,49,25,.06); }
.power-dossier-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: .8rem; }
.power-dossier-card { padding: 0; color: var(--ink); background: transparent; border: 0; text-align: left; cursor: pointer; }
.power-dossier-card:hover .power-piece { transform: translateY(-3px); box-shadow: var(--shadow); }
.power-dossier-card.examined .power-piece { box-shadow: inset 0 -5px var(--green); }
.power-piece { position: relative; min-height: 104px; display: flex; gap: .8rem; align-items: center; padding: .85rem; color: var(--ink); background: var(--paper-light); border: 2px solid var(--green); box-shadow: 3px 4px 0 rgba(62,48,24,.14); text-align: left; }
button.power-piece { width: 100%; cursor: grab; }
.power-piece.crown { border-color: var(--gold); background: #fff9e8; }
.power-piece.parliament { border-color: var(--blue); background: #f2f6f8; }
.power-piece.council { border-color: var(--red); background: #fbf3ef; }
.power-piece.action { border-style: dashed; background: #f7f2e5; }
.power-piece.selected { color: #fff; background: var(--green); outline: 4px solid rgba(178,138,62,.4); }
.power-piece-icon { flex: none; display: grid; place-items: center; width: 58px; aspect-ratio: 1; color: var(--green-dark); background: #eee3c9; border: 1px solid var(--gold); outline: 1px solid rgba(178,138,62,.5); outline-offset: 3px; border-radius: 50%; font-family: var(--serif); font-size: 1rem; font-weight: 850; }
.power-piece.parliament .power-piece-icon { color: var(--blue); border-radius: 3px; }
.power-piece.council .power-piece-icon { color: var(--red); transform: rotate(-2deg); }
.power-piece.action .power-piece-icon { border-radius: 45% 45% 8% 8%; }
.power-piece-copy { min-width: 0; }
.power-piece-copy strong, .power-piece-copy small { display: block; }
.power-piece-copy strong { font-family: var(--serif); font-size: 1.05rem; line-height: 1.15; }
.power-piece-copy small { margin-top: .2rem; color: var(--muted); font-size: .68rem; }
.piece-status { position: absolute; right: .45rem; bottom: .3rem; color: var(--green); font-size: .58rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.power-piece-pool { display: grid; grid-template-columns: repeat(3,1fr); gap: .7rem; margin-bottom: 1rem; padding: .8rem; background: rgba(255,253,246,.45); border: 1px dashed #9c8b64; }
.power-palace { display: grid; grid-template-columns: repeat(6,1fr); grid-template-areas: "crown crown government government parliament parliament" "council council action action action action"; gap: .8rem; padding: 1rem; background: linear-gradient(180deg,#d8cba9,#eee5d1); border: 4px double #9c7940; box-shadow: inset 0 0 40px rgba(69,50,21,.1); }
.power-zone { min-height: 170px; padding: .7rem; background: rgba(255,253,246,.7); border: 2px dashed #95855f; }
.power-zone[data-power-zone] { cursor: pointer; }
.power-zone[data-power-zone]:focus-visible { outline: 4px solid #d19b2a; outline-offset: 3px; }
.power-zone.ready { background: #fffdf6; outline: 4px solid rgba(178,138,62,.22); }
.power-zone:nth-child(1) { grid-area: crown; border-color: var(--gold); }
.power-zone:nth-child(2) { grid-area: government; border-color: var(--green); }
.power-zone:nth-child(3) { grid-area: parliament; border-color: var(--blue); }
.power-zone:nth-child(4) { grid-area: council; border-color: var(--red); }
.power-zone:nth-child(5) { grid-area: action; border-color: #776746; }
.power-zone > header { display: flex; gap: .5rem; align-items: center; margin-bottom: .6rem; padding-bottom: .4rem; border-bottom: 1px solid var(--line); }
.power-zone > header span { display: grid; place-items: center; width: 25px; height: 25px; color: #fff; background: var(--green-dark); border-radius: 50%; font-family: var(--serif); font-size: .7rem; }
.power-zone h3 { margin: 0; color: var(--green-dark); font-family: var(--serif); font-size: 1rem; }
.power-zone > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; }
.power-zone .power-piece { min-height: 82px; padding: .55rem; box-shadow: none; }
.power-zone .power-piece-icon { width: 40px; font-size: .78rem; }
.zone-placeholder { grid-column: 1 / -1; display: grid; place-items: center; min-height: 92px; color: var(--muted); border: 1px dashed var(--line); font-size: .76rem; text-align: center; }
.power-palace.compact .power-zone { min-height: 128px; }
.power-palace.compact .power-piece { min-height: 66px; }
.power-palace.compact .piece-status { display: none; }
.relation-workbench { display: grid; grid-template-columns: 220px 1fr; gap: 1rem; margin-top: 1rem; }
.relation-label-pool { display: flex; align-content: flex-start; flex-wrap: wrap; gap: .6rem; padding: .8rem; background: #d7ccb0; border: 1px solid var(--line); }
.relation-token { flex: 1 1 90px; min-height: 48px; padding: .5rem; color: var(--green-dark); background: var(--paper-light); border: 1px solid var(--green); box-shadow: 2px 3px 0 rgba(52,42,24,.14); font-weight: 800; cursor: grab; }
.relation-token span { display: block; color: var(--red); font-size: .58rem; }
.relation-token.selected { color: #fff; background: var(--green); outline: 3px solid var(--gold); }
.relation-slots { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.relation-slot { min-height: 68px; display: grid; grid-template-columns: 1fr minmax(100px,.7fr) 1fr; gap: .55rem; align-items: center; padding: .55rem; color: var(--ink); background: var(--paper-light); border: 1px solid var(--line); cursor: pointer; }
.relation-slot > span { padding: .35rem; color: var(--red); background: #eee3cb; border: 1px dashed var(--red); font-size: .72rem; font-weight: 800; text-align: center; }
.relation-slot strong { font-family: var(--serif); font-size: .88rem; }
.relation-slot.confirmed { border-color: var(--green); box-shadow: inset 4px 0 var(--green); animation: confirmedCard .35s ease-out; }
.relation-slot.confirmed > span { color: #fff; background: var(--green); border-style: solid; }
.relation-slot small { grid-column: 1 / -1; color: var(--green); font-size: .58rem; font-weight: 850; text-transform: uppercase; }
.power-complete-heading { display: flex; gap: 1rem; align-items: center; margin-bottom: 1rem; padding: 1rem; color: #fff; background: var(--green-dark); border-bottom: 4px solid var(--gold); }
.power-complete-heading p, .power-complete-heading h2 { margin: 0; }
.power-complete-heading p { color: #e2c985; font-size: .7rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.complete-seal { display: grid; place-items: center; width: 54px; height: 54px; color: var(--green-dark); background: #e6d19d; border-radius: 50%; font-size: 1.5rem; font-weight: 900; }
.complete-relations { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; margin-top: 1rem; }
.complete-relations > div { display: grid; grid-template-columns: 1fr auto 1fr; gap: .5rem; align-items: center; padding: .6rem; background: var(--paper-light); border-left: 4px solid var(--green); font-size: .78rem; }
.complete-relations span { color: var(--red); font-weight: 800; }
.review-dossiers { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-top: 1rem; }
.review-dossiers > span { width: 100%; color: var(--red); font-size: .68rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.review-dossiers button { padding: .45rem .65rem; color: var(--green-dark); background: var(--paper-light); border: 1px solid var(--green); cursor: pointer; }

.comparison-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; }
.comparison-grid article { padding: 1.5rem; background: var(--paper-light); border: 1px solid var(--line); }
.comparison-grid article.imperial-case { border-top: 6px solid var(--green); }
.flow-row { display: flex; align-items: stretch; gap: .5rem; margin-top: 1.3rem; }
.flow-row span:not(.flow-arrow) { flex: 1; display: grid; place-items: center; min-height: 76px; padding: .6rem; color: var(--green-dark); background: #e8e1ce; border: 1px solid var(--line); font-size: .82rem; font-weight: 750; text-align: center; }
.flow-arrow { display: grid; place-items: center; color: var(--red); font-size: 1.3rem; }
.concept-note { margin-top: 1.2rem; padding: 1.4rem 1.5rem; background: #f9f6eb; border-left: 6px solid var(--red); }
.concept-note h2 { margin-bottom: .5rem; }
.concept-note p:last-child { margin-bottom: 0; }
.nuance { display: flex; flex-wrap: wrap; gap: .8rem 1.2rem; margin-top: 1rem; padding: 1rem 1.2rem; border: 1px solid var(--line); }
.nuance strong { width: 100%; }
.nuance span { color: var(--green); font-size: .9rem; }

.party-columns { display: grid; grid-template-columns: 1fr 1fr 1.25fr; gap: 1rem; margin-bottom: 1.5rem; }
.party-columns article { padding: 1.2rem; background: var(--paper-light); border-top: 5px solid var(--blue); }
.party-columns article:nth-child(2) { border-color: var(--red); }
.party-columns article.shared { border-color: var(--gold); }
.party-columns ul { margin-bottom: 0; padding-left: 1.2rem; }
.party-columns li { margin-bottom: .45rem; }
.classification { padding: 1.4rem; background: #ded5bd; border: 1px solid var(--line); text-align: center; }
.classification-progress { color: var(--muted); font-size: .78rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.sort-card { width: min(420px, 100%); margin: 1rem auto; padding: 1.2rem; background: var(--paper-light); border: 1px solid #a29472; box-shadow: 4px 5px 0 rgba(95,75,37,.18); }
.sort-card span, .sort-card strong { display: block; }
.sort-card span { color: var(--red); font-size: .68rem; font-weight: 800; letter-spacing: .12em; }
.sort-card strong { margin-top: .45rem; font-family: var(--serif); font-size: 1.4rem; }
.sort-targets { display: grid; grid-template-columns: repeat(3, 1fr); gap: .8rem; }
.sort-targets button { min-height: 74px; padding: .7rem; border: 1px solid var(--green); background: var(--paper-light); cursor: pointer; }
.sort-targets button:hover { color: white; background: var(--green); }
.sort-targets strong { display: block; }
.classification .help-button { margin-top: 1rem; }

.figure-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: .8rem; }
.figure-card { min-height: 180px; display: flex; flex-direction: column; align-items: center; padding: .65rem .5rem; border: 1px solid var(--line); background: var(--paper-light); cursor: pointer; }
.figure-card.selected { border: 3px solid var(--green); background: #e0e9df; }
.figure-card strong { margin-top: auto; font-size: .88rem; }
.figure-card small { color: var(--green); font-weight: 750; }
.character-portrait { position: relative; display: block; width: min(100%, 116px); aspect-ratio: 4 / 5; margin: 0 auto .55rem; overflow: hidden; border: 1px solid #b9ad93; background: #e7dfce; }
.character-portrait img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 42%; }
.character-portrait .silhouette { display: none; position: absolute; inset: 0; }
.character-portrait.portrait-fallback .silhouette { display: block; }
.character-portrait .silhouette::before { content: ""; position: absolute; left: calc(50% - 13px); top: 15%; width: 26px; height: 26px; background: #566056; border-radius: 50%; }
.character-portrait .silhouette::after { content: ""; position: absolute; left: calc(50% - 25px); bottom: 10%; width: 50px; height: 57px; background: #566056; border-radius: 45% 45% 10% 10%; clip-path: polygon(22% 0, 78% 0, 100% 100%, 0 100%); }
.activity-actions { display: flex; justify-content: center; gap: 1rem; margin-top: 1.3rem; }

.case-file { position: relative; max-width: 900px; margin: 0 auto; padding: clamp(1.4rem, 4vw, 2.5rem); background: var(--paper-light); border: 1px solid var(--line); border-top: 7px solid var(--red); box-shadow: var(--shadow); }
.case-file h2 { margin: .8rem 0 1.5rem; font-size: clamp(1.4rem, 3vw, 2rem); }
.option-list { display: grid; gap: .7rem; }
.option-list button { min-height: 58px; display: grid; grid-template-columns: 38px 1fr; align-items: center; gap: .8rem; padding: .65rem 1rem; border: 1px solid var(--line); background: #f8f4e8; text-align: left; cursor: pointer; }
.option-list button:hover { border-color: var(--green); background: #e6ecdf; }
.option-list button span { display: grid; place-items: center; width: 32px; height: 32px; color: white; background: var(--green); border-radius: 50%; font-weight: 800; }
.interaction-instruction { margin: .75rem 0 1rem; padding: .65rem .8rem; border-left: 4px solid var(--gold); color: var(--ink-soft); background: var(--paper-deep); font-size: .92rem; }
.interaction-options button { grid-template-columns: minmax(72px,auto) 1fr; min-height: 64px; }
.interaction-options button span { width: auto; min-width: 62px; height: auto; min-height: 34px; padding: .35rem .5rem; border-radius: 2px; font-size: .66rem; letter-spacing: .04em; text-align: center; }
.interaction-options button strong { font-weight: 650; }
.interaction-evidence { border-top-color: var(--blue); }
.interaction-evidence .interaction-options button { border-left: 4px solid var(--blue); background: #f2f5f5; }
.interaction-decision .interaction-options { grid-template-columns: repeat(2,minmax(0,1fr)); }
.interaction-decision .interaction-options button { min-height: 94px; align-content: center; border-top: 4px solid var(--red); }
.interaction-sequence .interaction-options button { border-left: 5px solid var(--gold); }
.interaction-connection .interaction-options button { border-style: dashed; border-width: 2px; }
.interaction-verification .interaction-options { grid-template-columns: repeat(2,minmax(0,1fr)); }
.interaction-verification .interaction-options button { min-height: 84px; }
.investigation-mechanic { max-width: 980px; overflow: hidden; }
.investigation-mechanic button { touch-action: manipulation; }
.investigation-mechanic button:focus-visible { outline: 4px solid rgba(31,82,62,.34); outline-offset: 2px; }
.investigation-mechanic.source-2 { background-image: linear-gradient(rgba(255,252,241,.94),rgba(255,252,241,.94)), repeating-linear-gradient(0deg,transparent 0 27px,rgba(61,76,70,.08) 28px); }
.investigation-mechanic.source-3 { box-shadow: 0 14px 34px rgba(40,34,22,.16), inset 0 0 0 7px rgba(176,142,69,.09); }
.investigation-action { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1rem; padding: .9rem; border-left: 5px solid var(--gold); background: var(--paper-deep); }
.investigation-action p { max-width: 58ch; margin: 0; }
.investigation-stamp { justify-self: start; padding: .35rem .6rem; border: 2px solid var(--red); color: var(--red); font-size: .68rem; font-weight: 900; letter-spacing: .12em; transform: rotate(-1deg); }

/* Dossiê: fichas soltas que precisam ser separadas antes do parecer. */
.mechanic-evidence_dossier { border-top-color: var(--blue); }
.evidence-dossier-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .8rem; }
.evidence-slip { position: relative; display: grid; gap: .55rem; min-height: 138px; padding: 1rem 1.15rem; border: 1px solid #9a8c6d; border-left: 5px solid var(--blue); color: var(--ink); background: #fbfaf3; text-align: left; cursor: pointer; box-shadow: 4px 5px 0 rgba(70,62,44,.1); }
.evidence-slip:nth-child(even) { transform: rotate(.25deg); }
.evidence-slip > span { color: var(--blue); font-size: .64rem; font-weight: 900; letter-spacing: .12em; }
.evidence-slip > strong { font: 700 1.02rem/1.4 var(--serif); }
.evidence-slip > small { align-self: end; color: var(--ink-soft); font-weight: 750; }
.evidence-slip.selected { border-color: var(--green); border-left-color: var(--green); background: #e8eee4; outline: 3px solid rgba(31,82,62,.18); }
.dossier-verdict { display: grid; gap: 1rem; padding: 1rem; border: 1px solid var(--line); background: #e6dcc3; }
.dossier-verdict p { margin: 0; font-weight: 750; }
.verdict-list { display: grid; gap: .7rem; }
.verdict-list button { display: grid; gap: .35rem; min-height: 74px; padding: .8rem 1rem; border: 1px solid var(--green); color: var(--ink); background: #fffdf7; text-align: left; cursor: pointer; }
.verdict-list span { color: var(--red); font-size: .62rem; font-weight: 900; letter-spacing: .1em; }

/* Caça: o enunciado vira cabeçalho de um documento, e as linhas são alvos de leitura. */
.mechanic-evidence_hunt { border-top-color: var(--gold); background: #e5dbc2; }
.source-document { max-width: 820px; margin: 0 auto; padding: clamp(1.2rem,3vw,2rem); border: 1px solid #8f805f; background: #fffdf5; box-shadow: 8px 9px 0 rgba(75,59,28,.13); }
.source-document header { padding-bottom: 1rem; border-bottom: 3px double #74684f; text-align: center; }
.source-document header span { display: block; color: var(--red); font-size: .66rem; font-weight: 900; letter-spacing: .16em; }
.source-document header strong { display: block; margin-top: .55rem; font: 700 clamp(1.25rem,2.5vw,1.8rem)/1.25 var(--serif); }
.document-direction { margin: 1rem 0; color: var(--ink-soft); font-style: italic; }
.source-lines { counter-reset: source-line; }
.source-lines button { position: relative; display: grid; grid-template-columns: 42px 1fr auto; gap: .75rem; align-items: center; width: 100%; min-height: 66px; padding: .75rem; border: 0; border-bottom: 1px solid #c3b79c; color: var(--ink); background: transparent; text-align: left; cursor: crosshair; }
.source-lines button:hover, .source-lines button:focus-visible { background: #f1ead7; }
.source-lines button > span { color: var(--red); font-family: var(--serif); }
.source-lines button > small { color: var(--green); font-size: .62rem; font-weight: 900; text-transform: uppercase; }
.source-document footer { padding-top: 1rem; color: var(--ink-soft); font-size: .68rem; text-align: right; }

/* Painel de interesses: lentes fixas e hipóteses móveis, sem depender apenas de cor. */
.mechanic-stakeholder_balance { border-top-color: var(--red); background: #f4eedf; }
.impact-board { display: grid; gap: 1rem; }
.impact-question { padding: 1rem; border-left: 7px solid var(--red); background: var(--green-dark); color: #fff; }
.impact-question span { color: #ddc376; font-size: .65rem; font-weight: 900; letter-spacing: .13em; }
.impact-question h3 { margin: .4rem 0 0; font: 700 clamp(1.25rem,2.4vw,1.8rem)/1.25 var(--serif); }
.impact-lenses { display: grid; grid-template-columns: repeat(4,1fr); gap: .45rem; }
.impact-lenses span { display: grid; grid-template-columns: 30px 1fr; align-items: center; gap: .4rem; min-height: 50px; padding: .45rem; border: 1px solid var(--line); background: #fff; font-size: .67rem; font-weight: 850; text-transform: uppercase; }
.impact-lenses b { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; color: #fff; background: var(--red); }
.impact-files { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .65rem; }
.impact-files button { display: grid; gap: .45rem; min-height: 106px; padding: .85rem; border: 2px solid #9a8d70; color: var(--ink); background: #fffdf8; text-align: left; cursor: pointer; }
.impact-files button span { color: var(--red); font-size: .62rem; font-weight: 900; letter-spacing: .09em; }
.impact-files button.selected { border-color: var(--green); background: #e2eadf; box-shadow: inset 6px 0 0 var(--green); }
.impact-confirm { justify-self: end; }

/* Caso: revelação progressiva das pistas, sem temporizador artificial. */
.mechanic-historical_case { border-top-color: var(--green); background: linear-gradient(90deg,#ece3cc 0 36px,#fffaf0 36px); }
.historical-case { display: grid; gap: 1rem; }
.case-context { padding: 1rem 1rem 1rem 1.25rem; border-left: 5px solid var(--green); background: #fff; }
.case-context > span, .case-interpretations > span { color: var(--red); font-size: .66rem; font-weight: 900; letter-spacing: .13em; }
.case-context h3 { margin: .4rem 0 0; font: 700 clamp(1.3rem,2.6vw,1.9rem)/1.3 var(--serif); }
.case-investigation-steps { display: grid; grid-template-columns: repeat(2,1fr); gap: .7rem; margin: 0; padding: 0; list-style: none; }
.case-investigation-steps li { min-height: 116px; padding: .9rem; border: 1px dashed #8d8167; background: rgba(255,255,255,.55); }
.case-investigation-steps li.opened { border-style: solid; border-left: 5px solid var(--gold); background: #f1ead8; }
.case-investigation-steps li > span { display: block; color: var(--green); font-size: .65rem; font-weight: 900; letter-spacing: .12em; }
.case-investigation-steps p { margin: .6rem 0 0; line-height: 1.5; }
.case-investigation-steps button { min-height: 48px; margin-top: .7rem; padding: .55rem .75rem; border: 1px solid var(--green); color: var(--green); background: #fff; font-weight: 850; cursor: pointer; }
.case-investigation-steps small { display: block; margin-top: .7rem; color: var(--ink-soft); }
.case-interpretations { display: grid; gap: .55rem; padding-top: 1rem; border-top: 3px double var(--line); }
.case-interpretations button { display: grid; grid-template-columns: 34px 1fr; gap: .7rem; align-items: center; min-height: 60px; padding: .65rem; border: 1px solid var(--line); color: var(--ink); background: #fff; text-align: left; cursor: pointer; }
.case-interpretations b { display: grid; place-items: center; width: 32px; height: 32px; color: #fff; background: var(--green); }
.case-waiting { margin: 0; padding: .75rem; border-left: 4px solid var(--gold); color: var(--ink-soft); background: var(--paper-deep); }
.case-file .help-button { margin-top: 1rem; }
.large-note { flex-direction: column; max-width: 800px; margin: 2rem auto; padding: 2rem; text-align: center; }
.large-note strong { font-family: var(--serif); font-size: 2rem; }

.dossier-head { display: flex; justify-content: space-between; align-items: center; padding: 1.3rem 1.5rem; color: white; background: var(--green-dark); border-bottom: 5px solid var(--gold); }
.dossier-head span, .mastery span { font-size: .68rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.dossier-head h2 { margin: .25rem 0; font-size: 2rem; }
.dossier-head p { margin: 0; }
.dossier-seal { padding: .7rem 1rem; border: 1px solid var(--gold); color: #e6d19d; text-align: center; transform: rotate(2deg); }
.score-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 1rem 0; }
.score-grid article { padding: 1.4rem; background: var(--paper-light); border: 1px solid var(--line); text-align: center; }
.score-grid span { color: var(--red); font-size: .7rem; font-weight: 800; letter-spacing: .15em; }
.score-grid strong { display: block; margin: .2rem 0; color: var(--green); font-family: var(--serif); font-size: 3.2rem; }
.score-grid p { margin: 0; color: var(--muted); font-size: .85rem; }
.mastery { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.mastery div { padding: 1rem 1.2rem; background: #e4ddca; border-left: 4px solid var(--green); }
.mastery div:last-child { border-color: var(--red); }
.mastery strong { display: block; margin-top: .25rem; }
.map-section { margin-top: 2rem; }
.final-map { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-areas: ". emperor emperor ." ". moderator moderator ." "president president senate senate" "ministers government chamber council" "parties parties parties parties" "elites elites elites elites" "limited limited limited limited"; gap: .7rem; padding: 1.5rem; background: #ded5bd; border: 1px solid var(--line); }
.final-map button { min-height: 72px; padding: .7rem; border: 1px solid var(--green); background: var(--paper-light); font-weight: 800; cursor: pointer; }
.final-map button small { display: block; color: var(--muted); font-weight: 500; }
.final-map button:nth-child(1) { grid-area: emperor; border-color: var(--gold); }
.final-map button:nth-child(2) { grid-area: moderator; border-color: var(--gold); }
.final-map button:nth-child(3) { grid-area: president; }
.final-map button:nth-child(4) { grid-area: senate; border-color: var(--blue); }
.final-map button:nth-child(5) { grid-area: ministers; }
.final-map button:nth-child(6) { grid-area: government; }
.final-map button:nth-child(7) { grid-area: chamber; border-color: var(--blue); }
.final-map button:nth-child(8) { grid-area: council; border-color: var(--red); }
.final-map button:nth-child(9) { grid-area: parties; background: #e8e3d5; }
.final-map button:nth-child(10) { grid-area: elites; background: #e8e3d5; }
.final-map button:nth-child(11) { grid-area: limited; color: white; background: var(--red); border-color: var(--red); }
.map-explanation { min-height: 68px; padding: 1rem 1.2rem; color: var(--green-dark); background: #f9f6eb; border-left: 5px solid var(--gold); }
.dossier-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: .8rem; margin-top: 1.5rem; }
.print-report { display: none; }
.toast { position: fixed; left: 50%; bottom: -100px; z-index: 50; width: min(480px, calc(100% - 2rem)); padding: .8rem 1rem; color: white; background: var(--green-dark); text-align: center; box-shadow: var(--shadow); transform: translateX(-50%); transition: bottom .2s ease; }
.toast.show { bottom: 1rem; }

@media (max-width: 980px) {
  .hero { grid-template-columns: 1fr 280px; }
  .hero-seal { display: none; }
  .hero::after { background: linear-gradient(90deg, rgba(243,236,217,.98), rgba(243,236,217,.78) 62%, rgba(243,236,217,.25)); }
  .clue-grid { grid-template-columns: repeat(2, 1fr); }
  .party-columns { grid-template-columns: 1fr 1fr; }
  .party-columns .shared { grid-column: 1 / -1; }
  .figure-grid { grid-template-columns: repeat(3, 1fr); }
  .flow-row { flex-direction: column; }
  .flow-arrow { transform: rotate(90deg); }
  .chronology-layout { grid-template-columns: 1fr; }
  .power-dossier-grid, .power-piece-pool { grid-template-columns: repeat(2,1fr); }
}

@media (min-width: 821px) and (max-height: 800px) {
  .game-screen { padding-top: 2.2rem; }
  .screen-heading { margin-bottom: 1.35rem; }
  .screen-heading h1 { font-size: clamp(2.4rem, 4vw, 3.35rem); }
  .chronology-card { min-height: 92px; }
  .case-file { padding: 1.4rem 2rem; }
  .case-file h2 { margin-bottom: 1rem; font-size: 1.55rem; }
  .option-list { gap: .5rem; }
  .option-list button { min-height: 50px; }
}

@media (max-width: 820px) {
  html { scroll-padding-top: 122px; }
  body { font-size: 16px; }
  .topbar { grid-template-columns: 1fr auto; gap: .7rem; padding: .55rem 1rem; }
  .progress-wrap { grid-column: 1 / -1; grid-row: 2; }
  .screen { min-height: calc(100dvh - 105px); padding-top: 2rem; }
  .hero { display: block; padding-top: 3rem; }
  .hero-art { object-position: 68% center; opacity: .38; }
  .hero::after { background: linear-gradient(180deg, rgba(243,236,217,.96) 0%, rgba(243,236,217,.72) 62%, rgba(243,236,217,.92) 100%); }
  .hero h1 { font-size: clamp(3.2rem, 17vw, 6rem); }
  .mode-choice-grid { grid-template-columns: 1fr; }
  .module-card { margin-top: 2rem; transform: none; }
  .mission-brief { align-items: flex-start; flex-direction: column; gap: .6rem; }
  .chronology-brief { align-items: flex-start; }
  .chronology-slot { grid-template-columns: minmax(120px,.45fr) minmax(0,1fr) auto; }
  .power-palace { grid-template-columns: 1fr 1fr; grid-template-areas: "crown government" "parliament council" "action action"; }
  .relation-workbench { grid-template-columns: 1fr; }
  .relation-label-pool { justify-content: center; }
  .relation-token { flex: 0 1 150px; }
  .relation-slots, .complete-relations { grid-template-columns: 1fr; }
  .comparison-grid { grid-template-columns: 1fr; }
  .sort-targets { grid-template-columns: 1fr; }
  .figure-grid { grid-template-columns: repeat(2, 1fr); }
  .score-grid { grid-template-columns: 1fr; }
  .score-grid article { display: grid; grid-template-columns: 1fr 1fr; align-items: center; text-align: left; }
  .score-grid strong { grid-row: 1 / span 2; grid-column: 2; text-align: right; }
  .mastery { grid-template-columns: 1fr; }
  .final-map { grid-template-columns: 1fr 1fr; grid-template-areas: "emperor emperor" "moderator moderator" "president senate" "ministers government" "chamber council" "parties parties" "elites elites" "limited limited"; }
}

@media (max-width: 520px) {
  .brand-button strong { font-size: .8rem; }
  .clue-grid, .party-columns, .chronology-cards, .power-dossier-grid, .power-piece-pool { grid-template-columns: 1fr; }
  .journey-type-grid { grid-template-columns: 1fr; }
  .chronology-brief, .chronology-discard-target { grid-template-columns: 1fr; }
  .chronology-slot { grid-template-columns: 1fr; }
  .chronology-slot strong, .chronology-slot small { grid-column: 1; }
  .slot-placeholder { grid-column: 1 / -1; }
  .power-phase-strip { grid-template-columns: 1fr; }
  .power-palace { grid-template-columns: 1fr; grid-template-areas: "crown" "government" "parliament" "council" "action"; }
  .power-zone > div { grid-template-columns: 1fr; }
  .relation-slot { grid-template-columns: 1fr; text-align: center; }
  .relation-slot small { grid-column: 1; }
  .complete-relations > div { grid-template-columns: 1fr; text-align: center; }
  .party-columns .shared { grid-column: auto; }
  .figure-card { min-height: 155px; }
  .stage-nav { flex-direction: column-reverse; }
  .stage-nav button { width: 100%; }
  .dossier-head { align-items: flex-start; gap: 1rem; }
  .dossier-seal { font-size: .7rem; }
  .clue-dialog { width: calc(100% - 1rem); max-height: calc(100dvh - 1rem); }
  .clue-dialog-frame { max-height: calc(100dvh - 1rem); }
  .clue-document-header { grid-template-columns: 1fr; padding-top: 1.3rem; }
  .document-emblem { width: 72px; }
  .document-body section { grid-template-columns: 32px 1fr; }
  .document-footer { align-items: stretch; flex-direction: column; }
}

.progress-label b { color: var(--gold); font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; }
.points-gain { display: inline-block; margin-left: .35rem; color: var(--green); animation: pointRise .55s ease-out; }
@keyframes pointRise { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
.teacher-link, .button-link { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; text-decoration: none; }
.teacher-link { margin-top: .8rem; color: var(--green); font-weight: 800; font-size: .82rem; text-transform: uppercase; letter-spacing: .06em; }
.dossier-callout { display: block; margin: 1.2rem auto 0; }
.dossier-quiz { max-width: 760px; }
.quiz-chance { display: flex; justify-content: space-between; gap: 1rem; margin: .7rem 0 1rem; padding: .7rem .9rem; border-left: 4px solid var(--gold); background: var(--paper-deep); }
.quiz-chance strong { color: var(--green); }
.quiz-chance span { color: var(--red); font-weight: 900; }
.quiz-rule { margin-top: 1rem; padding-top: .8rem; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: .82rem; }
.power-quiz-shelf { margin-top: 1rem; border: 1px solid var(--line); background: rgba(255,253,248,.86); }
.power-quiz-shelf summary { display: grid; grid-template-columns: 1fr auto; gap: .2rem 1rem; align-items: center; padding: .85rem 1rem; cursor: pointer; }
.power-quiz-shelf summary span { color: var(--green); font: 800 1.05rem var(--serif); }
.power-quiz-shelf summary strong { color: var(--red); font-size: .8rem; }
.power-quiz-shelf summary small { grid-column: 1 / -1; color: var(--ink-soft); }
.power-quiz-list { display: grid; grid-template-columns: repeat(3,1fr); gap: .5rem; padding: 0 1rem 1rem; }
.power-quiz-list button { display: grid; grid-template-columns: 38px 1fr; gap: .15rem .55rem; align-items: center; min-height: 58px; padding: .5rem; border: 1px solid var(--line); background: #fff; text-align: left; cursor: pointer; }
.power-quiz-list button > span { grid-row: 1 / span 2; display: grid; place-items: center; width: 36px; aspect-ratio: 1; border: 1px solid var(--gold); border-radius: 50%; color: var(--green); font-size: .72rem; font-weight: 900; }
.power-quiz-list button strong, .power-quiz-list button small { min-width: 0; }
.power-quiz-list button strong { font-size: .83rem; }
.power-quiz-list button small { color: var(--red); font-size: .68rem; font-weight: 800; }
.power-quiz-list button.completed { border-color: var(--green); background: #edf3e9; }

.archive-document { min-height: min(680px, 82vh); }
.dossier-tabs { display: flex; gap: .35rem; padding: .7rem 1.6rem; overflow-x: auto; border-block: 1px solid var(--line); background: rgba(244,237,217,.72); scrollbar-width: thin; }
.dossier-tabs button { flex: 0 0 auto; padding: .65rem .8rem; border: 1px solid transparent; border-radius: 2px; background: transparent; color: var(--ink-soft); font: 800 .72rem/1.2 var(--sans); letter-spacing: .04em; text-transform: uppercase; cursor: pointer; }
.dossier-tabs button:hover, .dossier-tabs button:focus-visible { border-color: var(--gold); background: #fffdf7; }
.dossier-tabs button.active { border-color: var(--green); color: var(--green); background: #fff; box-shadow: inset 0 -3px var(--green); }
.attempt-scale { display: grid; gap: .55rem; margin: 1.25rem 0; }
.attempt-scale span { display: grid; grid-template-columns: 1fr auto auto; gap: 1rem; align-items: center; padding: .75rem 1rem; border: 1px solid var(--line); background: #fffdf6; }
.attempt-scale small { color: var(--green); font-weight: 800; }
.briefing-value { display: grid; gap: .35rem; margin: 1rem 0; padding: .9rem 1rem; border-left: 4px solid var(--gold); background: #f5eedb; }
.archive-body { padding: 1.5rem 2rem 2rem; }
.archive-section { max-width: 840px; margin: 0 auto; }
.archive-section h3 { margin: .3rem 0 1rem; color: var(--green); font: 700 clamp(1.6rem,3vw,2.3rem)/1.05 var(--serif); }
.archive-section p { max-width: 70ch; line-height: 1.7; }
.portrait-layout { display: grid; grid-template-columns: minmax(170px, 220px) minmax(0, 1fr); gap: 1.5rem; align-items: start; }
.archive-portrait { margin: 0; padding: .4rem; background: #e8dcc0; border: 1px solid var(--line); box-shadow: 5px 6px 0 rgba(91,69,32,.12); transform: rotate(-.7deg); }
.archive-portrait img { display: block; width: 100%; height: auto; aspect-ratio: 2 / 3; object-fit: cover; object-position: center top; filter: saturate(.84) contrast(.96); }
.archive-portrait figcaption { padding: .55rem .35rem .25rem; color: var(--ink-soft); font-size: .72rem; line-height: 1.35; }
.archive-label { color: var(--red); font-size: .72rem; font-weight: 900; letter-spacing: .14em; }
.archive-graphic { display: flex; align-items: center; gap: 1rem; width: min(480px,100%); margin-top: 1.5rem; padding: 1rem; border: 1px solid var(--line); background: linear-gradient(135deg,#f6edd6,#fffdf8); }
.archive-graphic span { display: grid; place-items: center; width: 62px; aspect-ratio: 1; border-radius: 50%; background: var(--green); color: #fff; font-weight: 900; }
.archive-graphic i { flex: 1; height: 1px; background: var(--gold); }
.bio-timeline { display: grid; grid-template-columns: repeat(7,1fr); gap: .45rem; margin: 1.6rem 0; }
.bio-timeline button { min-height: 105px; padding: .75rem .4rem; border: 1px solid var(--line); border-top: 4px solid var(--gold); background: #fffdf8; cursor: pointer; }
.bio-timeline button strong, .bio-timeline button span { display: block; }
.bio-timeline button strong { color: var(--red); font-family: var(--serif); font-size: 1.25rem; }
.bio-timeline button span { margin-top: .4rem; font-size: .78rem; }
.bio-timeline button.selected { outline: 3px solid rgba(30,82,62,.22); border-color: var(--green); }
.timeline-disclosure { min-height: 62px; padding: 1rem; border-left: 4px solid var(--gold); background: var(--paper-deep); }
.timeline-disclosure p { margin: .3rem 0 0; }
.option-list.compact button { min-height: 48px; }
.cabinet-flow { display: flex; align-items: stretch; gap: .55rem; margin: 2rem 0; }
.cabinet-flow span { flex: 1; display: grid; place-items: center; min-height: 80px; padding: .7rem; border: 1px solid var(--line); background: #fff; text-align: center; font-weight: 800; }
.cabinet-flow i { align-self: center; color: var(--gold); font-style: normal; font-size: 1.5rem; }
.cabinet-table { padding: 1.2rem; border: 1px solid var(--line); background: radial-gradient(circle at center,#f7efd9,#e7dcc0); }
.cabinet-president { width: fit-content; margin: 0 auto 1rem; padding: .85rem 1.3rem; background: var(--green); color: #fff; font-weight: 900; text-align: center; }
.cabinet-ministries { display: grid; grid-template-columns: repeat(3,1fr); gap: .65rem; }
.cabinet-ministries button { min-height: 76px; padding: .65rem; border: 1px solid #a79670; background: #fffdf8; cursor: pointer; }
.cabinet-ministries button strong, .cabinet-ministries button small { display: block; }
.cabinet-ministries button small { margin-top: .25rem; color: var(--ink-soft); }
.cabinet-ministries button.confirmed { border-color: var(--green); box-shadow: inset 0 0 0 2px var(--green); }
.function-card { max-width: 520px; margin: 1rem auto 0; padding: 1rem; border-left: 5px solid var(--red); background: #fff; box-shadow: var(--shadow-soft); }
.function-card span { color: var(--red); font-size: .7rem; font-weight: 900; letter-spacing: .12em; }
.function-card strong { display: block; margin: .4rem 0; font-size: 1.08rem; }

.special-question { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 1rem; margin-bottom: 1rem; padding: .8rem 1rem; border-left: 5px solid var(--gold); background: var(--paper-deep); }
.special-question span { color: var(--red); font-size: .7rem; font-weight: 900; letter-spacing: .1em; }
.special-question p { margin: 0; font: 700 1.05rem/1.4 var(--serif); }
.special-layout { display: grid; grid-template-columns: 235px minmax(0,1fr); gap: 1rem; align-items: start; }
.special-file-tabs { display: grid; gap: .4rem; position: sticky; top: 88px; }
.special-file-tabs button { display: grid; grid-template-columns: 24px 1fr; gap: .4rem; align-items: center; min-height: 48px; padding: .55rem .7rem; border: 1px solid var(--line); background: #f7f0df; color: var(--ink); text-align: left; font-weight: 800; cursor: pointer; }
.special-file-tabs button span { color: var(--green); }
.special-file-tabs button.active { border-color: var(--green); background: var(--green); color: #fff; }
.special-file-tabs button.active span { color: var(--gold-light); }
.special-file { min-height: 480px; padding: clamp(1.2rem,3vw,2rem); border: 1px solid var(--line); background: rgba(255,253,248,.94); box-shadow: var(--shadow-soft); }
.special-file > h2 { margin: .3rem 0 .7rem; color: var(--green); font: 700 clamp(1.8rem,3.3vw,2.6rem)/1 var(--serif); }
.special-file > h3 { color: var(--red); }
.special-file > p { max-width: 75ch; line-height: 1.65; }
.special-visual { position: relative; margin: 1rem 0 1.25rem; overflow: hidden; background: var(--paper-deep); border: 1px solid var(--line); }
.special-visual img { display: block; width: 100%; height: clamp(150px, 20vw, 220px); object-fit: cover; object-position: center; filter: saturate(.78) contrast(.96); }
.special-visual figcaption { padding: .55rem .75rem; color: var(--ink-soft); background: #f4eddc; border-top: 1px solid var(--line); font-size: .74rem; line-height: 1.35; }
.file-seal { display: inline-block; padding: .25rem .45rem; border: 1px solid var(--red); color: var(--red); font-size: .7rem; font-weight: 900; letter-spacing: .1em; }
.special-timeline { display: grid; grid-template-columns: repeat(5,1fr); gap: .5rem; margin: 1.2rem 0; }
.special-timeline button { position: relative; min-height: 120px; padding: .8rem .5rem; border: 1px solid var(--line); border-top: 5px solid var(--gold); background: #fff; cursor: pointer; }
.special-timeline button strong, .special-timeline button span { display: block; }
.special-timeline button strong { color: var(--red); font: 700 1.4rem var(--serif); }
.special-timeline button span { margin-top: .5rem; font-weight: 800; }
.special-timeline button.selected { border-color: var(--green); outline: 3px solid rgba(30,82,62,.18); }
.special-flow { display: grid; place-items: center; gap: .35rem; max-width: 570px; margin: 1.5rem auto; text-align: center; }
.special-flow strong { width: 100%; padding: .75rem; border: 1px solid var(--line); background: var(--paper-deep); }
.special-flow span { color: var(--red); font-size: 1.4rem; }
.embedded-question { margin-top: 1.6rem; padding: 1rem; border-top: 3px double var(--gold); background: rgba(244,237,217,.45); }
.embedded-question > span { color: var(--red); font-size: .7rem; font-weight: 900; letter-spacing: .12em; }
.embedded-question h3 { margin: .45rem 0 .8rem; font-family: var(--serif); font-size: 1.35rem; }
.trend-chart { margin: 1.5rem 0; padding: 1rem; border: 1px solid var(--line); background: #fff; }
.trend-chart figcaption { margin-bottom: .8rem; font-weight: 900; }
.trend-chart > div { display: grid; grid-template-columns: 125px minmax(80px,1fr) 185px; gap: .7rem; align-items: center; margin: .55rem 0; }
.trend-chart i { width: var(--bar); max-width: 100%; height: 18px; background: linear-gradient(90deg,var(--red),#ad6a5f); }
.trend-chart strong { font-size: .83rem; }
.trend-chart small { display: block; margin-top: .8rem; color: var(--ink-soft); }
.land-impact { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; margin: 1.2rem 0; }
.land-impact div { padding: .8rem; border-left: 4px solid var(--green); background: var(--paper-deep); }
.land-impact div:last-child { border-left-color: var(--red); }
.land-impact span, .land-impact strong { display: block; }
.land-impact span { margin-bottom: .3rem; color: var(--ink-soft); font-size: .68rem; font-weight: 900; letter-spacing: .08em; }
.character-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: .55rem; }
.character-grid article { padding: .7rem; border: 1px solid var(--line); background: #fff; }
.character-grid article > span { float: left; display: grid; place-items: center; width: 35px; aspect-ratio: 1; margin-right: .5rem; border-radius: 50%; background: var(--green); color: #fff; font-weight: 900; }
.character-grid h4 { margin: .4rem 0; }
.character-grid p { clear: both; margin: .7rem 0 0; font-size: .82rem; line-height: 1.45; }
.internal-map { display: grid; grid-template-columns: 1fr minmax(180px,.7fr) 1fr; gap: .7rem; align-items: center; margin: 2rem 0; text-align: center; }
.internal-map > div { padding: 1.2rem; border: 1px solid var(--line); background: #fff; }
.internal-map strong, .internal-map small { display: block; }
.internal-map > span { color: var(--red); font-size: .75rem; font-weight: 900; }
.internal-map i { display: block; color: var(--gold); font-style: normal; font-size: 2rem; }
.connection-challenge { max-width: 680px; margin: 1rem auto; text-align: center; }
.measure-card { padding: 1.4rem; border: 2px solid var(--green); background: var(--paper-deep); color: var(--green); font: 800 1.7rem var(--serif); }
.meaning-options { display: grid; gap: .5rem; }
.meaning-options button { min-height: 52px; padding: .7rem; border: 1px solid var(--line); background: #fff; cursor: pointer; }
.measure-summary { display: grid; grid-template-columns: repeat(3,1fr); gap: .6rem; margin: 1rem 0; }
.measure-summary div { padding: .8rem; border-top: 4px solid var(--green); background: var(--paper-deep); }
.measure-summary strong, .measure-summary span { display: block; }
.measure-summary span { margin-top: .4rem; font-size: .85rem; }

.challenge-meta { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; margin-bottom: .55rem; }
.challenge-meta span, .challenge-meta strong { padding: .3rem .55rem; border: 1px solid var(--line); background: #fff; font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; }
.challenge-meta strong { margin-left: auto; color: var(--green); }
.challenge-progress { height: 7px; margin-bottom: 1rem; overflow: hidden; background: #ddd2b9; }
.challenge-progress i { display: block; height: 100%; background: var(--green); transition: width .25s ease; }
.guided-hint { margin-top: .8rem; padding: .7rem; border-left: 4px solid var(--gold); background: var(--paper-deep); }
.archive-complete { padding: 2rem; text-align: center; border: 1px solid var(--line); background: #fff; }
.question-summary { display: grid; grid-template-columns: repeat(auto-fit,minmax(170px,1fr)); gap: .6rem; margin: 1rem 0; }
.question-summary > div { padding: .8rem; border: 1px solid var(--line); border-top: 4px solid var(--green); background: #fff; }
.question-summary span, .question-summary strong, .question-summary small { display: block; }
.question-summary span { min-height: 2.2em; color: var(--ink-soft); font-size: .72rem; font-weight: 900; text-transform: uppercase; }
.question-summary strong { margin: .25rem 0; color: var(--green); font: 700 1.5rem var(--serif); }
.performance-section { margin: 1.2rem 0; }
.score-grid.v2 { grid-template-columns: repeat(4,1fr); }
.dossier-actions { flex-wrap: wrap; }

@media (max-width: 980px) {
  .bio-timeline { grid-template-columns: repeat(4,1fr); }
  .portrait-layout { grid-template-columns: 150px minmax(0,1fr); gap: 1rem; }
  .special-layout { grid-template-columns: 1fr; }
  .special-file-tabs { position: static; grid-template-columns: repeat(3,1fr); }
  .special-timeline { grid-template-columns: repeat(3,1fr); }
  .character-grid { grid-template-columns: repeat(2,1fr); }
  .score-grid.v2 { grid-template-columns: repeat(2,1fr); }
  .power-quiz-list { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 650px) {
  .dossier-tabs { padding-inline: .7rem; }
  .archive-body { padding: 1rem; }
  .portrait-layout { grid-template-columns: 1fr; }
  .archive-portrait { width: min(230px, 100%); margin-inline: auto; }
  .bio-timeline, .special-file-tabs, .special-timeline, .cabinet-ministries, .measure-summary { grid-template-columns: 1fr 1fr; }
  .cabinet-flow { flex-direction: column; }
  .cabinet-flow i { transform: rotate(90deg); }
  .trend-chart > div { grid-template-columns: 95px 1fr; }
  .trend-chart strong { grid-column: 1 / -1; }
  .land-impact, .internal-map { grid-template-columns: 1fr; }
  .power-quiz-list { grid-template-columns: 1fr; }
  .quiz-chance { align-items: flex-start; flex-direction: column; }
  .internal-map i { transform: rotate(90deg); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

@media (pointer: coarse), (hover: none) {
  button, .power-zone[role="button"] { min-height: 48px; }
  .chronology-card:hover, .clue-card:hover, .mission-path-card:hover { transform: none; }
  .chronology-card, button.power-piece, .relation-token, .chronology-slot, .power-zone[role="button"] { touch-action: manipulation; }
  .clue-dialog-frame, .performance-dialog, .live-leaderboard-dialog { -webkit-overflow-scrolling: touch; }
}

.ranking-page { min-height: 100vh; min-height: 100dvh; }
.ranking-header { display: flex; justify-content: space-between; align-items: center; gap: 2rem; min-height: 76px; padding: .7rem clamp(1rem,4vw,4rem); border-bottom: 1px solid var(--line); background: rgba(247,241,224,.96); }
.ranking-header > div { max-width: 550px; text-align: right; }
.ranking-header > div span { color: var(--red); font-size: .68rem; font-weight: 900; letter-spacing: .13em; }
.ranking-header > div p { margin: .15rem 0 0; font-size: .82rem; }
.ranking-main { width: min(1180px,calc(100% - 2rem)); margin: 0 auto; padding: 2.3rem 0 4rem; }
.import-panel { display: grid; grid-template-columns: 1fr minmax(320px,.8fr); gap: 1.2rem; align-items: center; padding: 1.4rem; border: 1px solid var(--line); background: #fffdf8; box-shadow: var(--shadow-soft); }
.import-panel h2, .ranking-toolbar h2 { margin: .3rem 0; color: var(--green); font-family: var(--serif); font-size: 1.8rem; }
.drop-zone { display: grid; place-items: center; min-height: 145px; padding: 1rem; border: 2px dashed var(--gold); background: var(--paper-deep); text-align: center; cursor: pointer; }
.drop-zone input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.drop-zone span { color: var(--green); font: 800 1.15rem var(--serif); }
.drop-zone strong { margin-top: .35rem; font-size: .82rem; }
.drop-zone:hover, .drop-zone:focus-within, .drop-zone.dragging { outline: 3px solid rgba(30,82,62,.18); border-color: var(--green); }
.ranking-feedback { min-height: 2.5rem; padding: .7rem 0; color: var(--green); font-weight: 700; }
.ranking-section { border: 1px solid var(--line); background: rgba(255,253,248,.94); }
.ranking-toolbar { display: grid; grid-template-columns: 1fr auto; gap: .8rem 1.5rem; align-items: end; padding: 1rem 1.2rem; border-bottom: 1px solid var(--line); }
.ranking-toolbar label { display: grid; gap: .3rem; font-size: .72rem; font-weight: 900; text-transform: uppercase; }
.ranking-toolbar select { min-width: 190px; min-height: 42px; padding: .5rem; border: 1px solid var(--line); background: #fff; }
.ranking-actions { grid-column: 1 / -1; display: flex; gap: .5rem; flex-wrap: wrap; }
.danger-button { min-height: 42px; padding: .65rem 1rem; border: 1px solid var(--red); background: transparent; color: var(--red); font-weight: 900; cursor: pointer; }
.ranking-table-wrap { overflow-x: auto; }
.ranking-table { width: 100%; border-collapse: collapse; }
.ranking-table th, .ranking-table td { padding: .8rem .7rem; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.ranking-table th { color: var(--ink-soft); background: var(--paper-deep); font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; }
.ranking-table tbody tr { cursor: pointer; }
.ranking-table tbody tr:hover, .ranking-table tbody tr:focus-visible { outline: 2px solid var(--gold); outline-offset: -2px; background: #f8f0dc; }
.ranking-table td:first-child strong { color: var(--green); font: 700 1.2rem var(--serif); }
.ranking-empty { padding: 2rem; text-align: center; color: var(--ink-soft); }
.performance-dialog { width: min(850px,calc(100% - 1rem)); max-height: calc(100dvh - 1rem); padding: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; scrollbar-gutter: stable; touch-action: pan-y; border: 1px solid var(--gold); background: #fdf9ee; box-shadow: 0 20px 80px rgba(31,27,20,.35); }
.performance-dialog::backdrop { background: rgba(20,27,22,.66); }
.individual-dossier { padding: 2rem; }
.individual-dossier h2 { margin: .3rem 0; color: var(--green); font: 700 2.3rem var(--serif); }
.individual-metrics { display: grid; grid-template-columns: repeat(3,1fr); gap: .7rem; margin: 1.2rem 0; }
.individual-metrics div { padding: .8rem; border: 1px solid var(--line); background: #fff; }
.individual-metrics span, .individual-metrics strong { display: block; }
.individual-metrics span { color: var(--ink-soft); font-size: .7rem; font-weight: 900; text-transform: uppercase; }
.individual-metrics strong { margin-top: .25rem; color: var(--green); font: 700 1.6rem var(--serif); }
.review-note { padding: 1rem; border-left: 5px solid var(--red); background: var(--paper-deep); }
.review-note span, .review-note strong { display: block; }
.review-note span { color: var(--red); font-size: .7rem; font-weight: 900; letter-spacing: .1em; }
.review-note strong { margin-top: .35rem; }

/* Sessões ao vivo: estados discretos, legíveis e sem transformar o jogo em um HUD. */
.topbar-actions { justify-self: end; display: flex; align-items: center; justify-content: flex-end; gap: .45rem; flex-wrap: wrap; }
.connection-pill { display: inline-flex; align-items: center; min-height: 28px; padding: .3rem .5rem; border: 1px solid rgba(255,255,255,.4); color: #f5ead0; font-size: .62rem; font-weight: 900; letter-spacing: .08em; }
.connection-pill.live::before, .connection-pill.connecting::before, .connection-pill.reconnecting::before, .connection-pill.offline::before { content: ""; width: 7px; height: 7px; margin-right: .35rem; border-radius: 50%; background: #7bc49d; }
.connection-pill.connecting::before, .connection-pill.reconnecting::before { background: var(--gold); }
.connection-pill.offline::before { background: #d98278; }
.live-ranking-button { min-height: 34px; padding: .45rem .65rem; border: 1px solid var(--gold); color: #fff; background: transparent; font-size: .68rem; font-weight: 900; cursor: pointer; }
.live-ranking-button:hover, .live-ranking-button:focus-visible { color: var(--green-dark); background: var(--gold); }
.session-timer { display: inline-flex; align-items: center; min-height: 34px; padding: .42rem .65rem; border: 1px solid rgba(255,255,255,.45); color: #fff7df; background: rgba(0,0,0,.14); font-size: .7rem; font-weight: 900; letter-spacing: .06em; font-variant-numeric: tabular-nums; }
.session-timer.ending { color: #21180c; background: #e9c66c; border-color: #e9c66c; }
.session-timer.paused { color: #2d2414; background: #d8c89b; }
.session-timer.overtime, .session-timer.expired { color: #fff; background: var(--red); border-color: #db978e; }
.live-system-notice { position: sticky; top: 0; z-index: 40; padding: .55rem 1rem; color: #302619; background: #efdca8; border-bottom: 1px solid #b9933e; text-align: center; font-weight: 800; }
.session-gate { position: fixed; inset: 0; z-index: 80; display: grid; place-items: center; padding: 1rem; overflow-y: auto; overscroll-behavior: contain; background: rgba(17,43,35,.88); }
.session-gate[hidden] { display: none; }
.session-gate > div { width: min(560px,100%); padding: 2rem; border: 1px solid var(--gold); color: var(--paper-light); background: var(--green-dark); text-align: center; box-shadow: var(--shadow); }
.session-gate span { color: var(--gold); font: 800 1.5rem var(--serif); }
.live-leaderboard-dialog { width: min(560px,calc(100% - 1rem)); max-height: calc(100dvh - 1rem); padding: 1.4rem; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; scrollbar-gutter: stable; touch-action: pan-y; border: 1px solid var(--gold); color: var(--ink); background: var(--paper-light); }
.live-leaderboard-dialog::backdrop { background: rgba(16,32,27,.7); }
.live-leaderboard-head span { color: var(--red); font-size: .7rem; font-weight: 900; letter-spacing: .1em; }
.live-leaderboard-head h2 { margin: .25rem 0; color: var(--green); font: 700 2.1rem var(--serif); }
.live-leaderboard-list { margin: 1rem 0; padding: 0; list-style: none; }
.live-leaderboard-list li { display: grid; grid-template-columns: 46px 1fr auto; gap: .6rem; align-items: center; padding: .75rem; border-bottom: 1px solid var(--line); }
.live-leaderboard-list li.current { border-left: 5px solid var(--gold); background: #f4ead0; }
.live-leaderboard-self { padding: .8rem; border: 1px solid var(--green); background: #fff; }
.live-leaderboard-self span, .live-leaderboard-self strong { display: block; }
.mode-message { display: flex; gap: .7rem; padding: .8rem; border-left: 4px solid var(--gold); background: var(--paper-deep); }
.mode-message strong { color: var(--green); }
.form-feedback { min-height: 1.3em; color: var(--red); font-weight: 750; }
.student-form label small { color: var(--ink-soft); font-weight: 500; }
.home-support-links { display: flex; gap: 1rem; flex-wrap: wrap; }
.live-home-session { display: grid; padding: .7rem; border-left: 4px solid var(--green); background: #fff; }
.waiting-room { width: min(860px,calc(100% - 2rem)); margin-inline: auto; }
.waiting-status { margin: 1.5rem 0; padding: 1rem; border-left: 5px solid var(--green); background: #fff; }
.connection-dot { display: inline-block; width: 10px; height: 10px; margin-right: .45rem; border-radius: 50%; background: #4a946d; }
.waiting-players { display: flex; gap: .5rem; flex-wrap: wrap; margin: 1rem 0 2rem; }
.waiting-players span { padding: .55rem .75rem; border: 1px solid var(--line); background: #fff; font-weight: 750; }
.loading-panel { display: grid; gap: .4rem; place-items: center; min-height: 220px; padding: 2rem; border: 1px solid var(--line); background: #fff; text-align: center; }

/* Caminhos livres de investigação e mapa individual das questões. */
.mission-map-screen { position: relative; isolation: isolate; width: min(1280px,100%); padding-top: clamp(1.2rem,3vw,2.4rem); }
.mission-map-screen::before { content: ""; position: absolute; inset: 0 0 auto; z-index: -1; height: min(620px,75vh); background: linear-gradient(rgba(244,237,217,.48),rgba(244,237,217,.96)), url("../assets/images/mapa-investigacao-v3.webp") center/cover no-repeat; }
.mission-map-hero { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 2rem; align-items: end; min-height: 250px; padding: clamp(1.4rem,4vw,3rem); border: 1px solid rgba(126,102,56,.45); background: rgba(255,251,239,.87); box-shadow: 0 18px 55px rgba(42,35,21,.18); backdrop-filter: blur(2px); }
.mission-map-hero h1 { max-width: 800px; margin: .25rem 0 .7rem; color: var(--green-dark); font: 700 clamp(2.7rem,6vw,5.7rem)/.94 var(--serif); letter-spacing: -.035em; }
.mission-map-hero p:last-child { max-width: 720px; font-size: 1.05rem; line-height: 1.65; }
.mission-counter { display: grid; min-width: 155px; padding: 1rem; border: 1px solid var(--gold); background: rgba(31,70,54,.94); color: #fff; text-align: center; }
.mission-counter strong { color: var(--gold); font: 700 2.8rem var(--serif); }
.mission-counter span { font-size: .7rem; font-weight: 800; text-transform: uppercase; }
.mission-path { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .8rem; margin: 1.2rem 0; }
.mission-path-card { display: grid; grid-template-columns: 50px 1fr; gap: .35rem .7rem; min-height: 210px; padding: 1rem; border: 1px solid var(--line); border-top: 5px solid var(--red); color: var(--ink); background: rgba(255,253,248,.97); text-align: left; cursor: pointer; box-shadow: var(--shadow-soft); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.mission-path-card:hover, .mission-path-card:focus-visible { transform: translateY(-4px); border-color: var(--gold); box-shadow: 0 14px 30px rgba(42,35,21,.18); }
.mission-path-card.completed { border-top-color: var(--green); background: #f2f4e9; }
.mission-path-card .mission-order { grid-column: 1 / -1; color: var(--red); font-size: .64rem; font-weight: 900; letter-spacing: .12em; }
.mission-path-card i { grid-row: 2 / 4; display: grid; place-items: center; width: 46px; height: 46px; border: 1px solid var(--gold); border-radius: 50%; color: var(--green); background: var(--paper-deep); font: 700 1.1rem var(--serif); }
.mission-path-card strong { align-self: end; color: var(--green-dark); font: 700 1.35rem/1.08 var(--serif); }
.mission-path-card small { grid-column: 2; color: var(--ink-soft); line-height: 1.45; }
.mission-path-card b { grid-column: 1 / -1; align-self: end; padding-top: .7rem; border-top: 1px solid var(--line); color: var(--green); font-size: .7rem; letter-spacing: .04em; text-transform: uppercase; }
.mission-map-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.2rem; border-left: 5px solid var(--gold); background: rgba(255,253,248,.94); }
.mission-map-footer p { margin: 0; }
.question-map { display: grid; grid-template-columns: repeat(auto-fit,minmax(62px,1fr)); gap: .45rem; margin-bottom: 1.1rem; padding: .8rem; border: 1px solid var(--line); background: var(--paper-deep); }
.question-map button { display: grid; place-items: center; min-height: 58px; padding: .35rem; border: 1px solid #a79772; color: var(--ink); background: #fff; cursor: pointer; }
.question-map button span { color: var(--green); font: 700 1.25rem var(--serif); }
.question-map button small { font-size: .55rem; font-weight: 900; letter-spacing: .04em; }
.question-map button.current { outline: 3px solid rgba(128,39,35,.2); border-color: var(--red); background: #fff8ec; }
.question-map button.skipped { border-style: dashed; border-color: var(--red); }
.question-map button.complete { color: #fff; background: var(--green); opacity: 1; }
.question-map button.complete span { color: var(--gold); }
.skip-question { width: 100%; margin-top: .8rem; }

/* Painel docente */
.teacher-main { width: min(1240px,calc(100% - 2rem)); margin: 0 auto; padding: 2rem 0 4rem; }
.teacher-login { width: min(600px,100%); margin: 4vh auto; }
.teacher-connection { display: flex; align-items: center; gap: .7rem; }
.compact { min-height: 34px; padding: .4rem .65rem; }
.teacher-welcome { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.2rem; }
.teacher-welcome h1 { margin: .2rem 0; color: var(--green); font: 700 clamp(2rem,4vw,3.4rem) var(--serif); }
.teacher-grid { display: grid; grid-template-columns: 280px minmax(0,1fr); gap: 1rem; align-items: start; }
.teacher-grid .paper-panel { margin: 0; padding: 1.2rem; }
.session-list { display: grid; gap: .5rem; }
.session-list button { display: grid; gap: .2rem; padding: .75rem; border: 1px solid var(--line); background: #fff; text-align: left; cursor: pointer; }
.session-list button.selected { border-color: var(--green); border-left-width: 5px; background: #f6efdc; }
.session-list button span, .session-list button small { color: var(--ink-soft); }
.session-detail-head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--line); padding-bottom: 1rem; }
.session-detail-head h2 { margin: .4rem 0; color: var(--green); font: 700 2rem var(--serif); }
.room-code { min-width: 190px; padding: .7rem; border: 2px solid var(--gold); text-align: center; background: #fff; }
.room-code span, .room-code strong { display: block; }
.room-code span { font-size: .68rem; font-weight: 900; letter-spacing: .08em; }
.room-code strong { color: var(--green); font: 700 2.4rem var(--serif); letter-spacing: .08em; }
.status-badge, .presence { display: inline-block; padding: .25rem .45rem; border: 1px solid currentColor; font-size: .68rem; font-weight: 900; text-transform: uppercase; }
.status-badge.active, .presence.online { color: #1f694a; }
.status-badge.paused { color: #8a6417; }
.status-badge.finished, .presence.offline { color: #8d4a43; }
.session-controls, .teacher-report-head, .teacher-report-head > div { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.session-controls { margin: 1rem 0 1.5rem; }
.teacher-report-head { justify-content: space-between; margin-bottom: .8rem; }
.teacher-report-head h3 { margin: .2rem 0; }
.teacher-table td:first-child strong, .teacher-table td:first-child small { display: block; }
.teacher-table tbody tr { cursor: default; }
.teacher-clock-panel { display: grid; grid-template-columns: repeat(4,1fr); gap: .55rem; margin: 1rem 0; }
.teacher-clock-panel > div { display: grid; gap: .3rem; padding: .8rem; border: 1px solid var(--line); background: #fff; }
.teacher-clock-panel span { color: var(--ink-soft); font-size: .62rem; font-weight: 900; letter-spacing: .07em; }
.teacher-clock-panel strong { color: var(--green); font: 700 1.05rem var(--serif); }
.teacher-clock-panel .teacher-clock-live { background: var(--green-dark); }
.teacher-clock-panel .teacher-clock-live span { color: #d9c584; }
.teacher-clock-panel .teacher-clock-live strong { color: #fff; font-size: 1.45rem; font-variant-numeric: tabular-nums; }
.teacher-clock-panel strong.ending { color: #f0c65b; }
.teacher-dialog { padding: 2rem; }

/* Ranking ao vivo para projeção */
.projector-main { width: min(1320px,calc(100% - 3rem)); }
.projector-title { display: flex; align-items: end; justify-content: space-between; gap: 1rem; padding-bottom: 1rem; border-bottom: 3px double var(--gold); }
.projector-title h1 { margin: .2rem 0; color: var(--green); font: 700 clamp(2.6rem,5vw,5rem) var(--serif); }
.projector-count { display: grid; text-align: right; }
.projector-count strong { color: var(--red); font: 700 2.8rem var(--serif); }
.projector-leaderboard { display: grid; gap: .55rem; margin: 1.2rem 0; padding: 0; list-style: none; counter-reset: none; }
.projector-leaderboard li { position: relative; display: grid; grid-template-columns: 90px minmax(0,1fr) 130px auto; align-items: center; min-height: 66px; padding: .65rem 1.1rem; border: 1px solid var(--line); border-left: 7px solid var(--green); background: rgba(255,253,248,.96); box-shadow: var(--shadow-soft); }
.projector-leaderboard li:nth-child(-n+3) { border-left-color: var(--gold); }
.projector-leaderboard li > strong { color: var(--green); font: 700 2rem var(--serif); }
.projector-leaderboard li > span { font: 700 1.45rem var(--serif); }
.projector-leaderboard li > span small { display: block; color: var(--ink-soft); font: 500 .75rem var(--sans); }
.projector-leaderboard li > b { color: var(--red); font-size: 1.55rem; text-align: right; }
.projector-leaderboard li > b::after { content: " pts"; font-size: .65em; }
.projector-leaderboard li.moved { animation: rank-move .65s ease-out; }
@keyframes rank-move { from { transform: translateY(7px); background: #f2e3b8; } to { transform: translateY(0); } }
.projector-update { color: var(--ink-soft); text-align: right; }
.live-setup { width: min(680px,100%); margin-inline: auto; }
.offline-ranking { margin-top: 2rem; border-top: 1px solid var(--line); }
.offline-ranking > summary { padding: 1rem 0; color: var(--green); font-weight: 800; cursor: pointer; }
.offline-ranking .screen-heading { padding-top: 1rem; }

@media (max-width: 760px) {
  .ranking-header { align-items: flex-start; flex-direction: column; }
  .ranking-header > div { text-align: left; }
  .import-panel, .ranking-toolbar { grid-template-columns: 1fr; }
  .ranking-actions { grid-column: auto; }
  .individual-metrics { grid-template-columns: 1fr; }
  .teacher-grid { grid-template-columns: 1fr; }
  .session-detail-head, .projector-title { align-items: stretch; flex-direction: column; }
  .projector-count { text-align: left; }
  .projector-leaderboard li { grid-template-columns: 55px minmax(0,1fr) auto; }
  .projector-leaderboard li > small { grid-column: 2 / -1; }
  .topbar-actions { grid-column: 1 / -1; justify-self: stretch; justify-content: space-between; }
  .interaction-decision .interaction-options, .interaction-verification .interaction-options { grid-template-columns: 1fr; }
  .evidence-dossier-grid, .impact-files, .case-investigation-steps { grid-template-columns: 1fr; }
  .impact-lenses { grid-template-columns: repeat(2,1fr); }
  .investigation-action { align-items: stretch; flex-direction: column; }
  .source-lines button { grid-template-columns: 34px 1fr; }
  .source-lines button > small { grid-column: 2; }
}

@media (max-width: 980px) {
  .mission-path { grid-template-columns: repeat(2,1fr); }
  .teacher-clock-panel { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 650px) {
  .mission-map-hero { grid-template-columns: 1fr; }
  .mission-counter { justify-self: start; }
  .mission-path { grid-template-columns: 1fr; }
  .mission-map-footer { align-items: stretch; flex-direction: column; }
  .teacher-clock-panel { grid-template-columns: 1fr; }
}

@page { size: A4; margin: 18mm; }
@media print {
  body { color: #000; background: #fff; font-size: 11pt; }
  body::before, .topbar, .screen-heading, .dossier-head, .score-grid, .mastery, .map-section, .dossier-actions, .stage-nav, .toast, .clue-dialog { display: none !important; }
  main, .screen { width: 100%; min-height: 0; margin: 0; padding: 0; }
  .print-report { display: block; }
  .print-report h1 { margin: 0 0 4mm; padding-bottom: 3mm; border-bottom: 2px solid #000; font-size: 22pt; }
  .print-report h2 { margin: 0 0 8mm; font-size: 15pt; }
  .print-report dl { display: grid; grid-template-columns: 55mm 1fr; margin: 0; border-top: 1px solid #777; }
  .print-report dt, .print-report dd { margin: 0; padding: 3mm; border-bottom: 1px solid #aaa; }
  .print-report dt { font-weight: 700; }
}

@media print {
  .ranking-page .ranking-header, .ranking-page .screen-heading, .ranking-page .import-panel, .ranking-page .ranking-feedback, .ranking-page .ranking-actions, .ranking-page .performance-dialog { display: none !important; }
  .ranking-page .ranking-main { width: 100%; padding: 0; }
  .ranking-page .ranking-section { border: 0; }
  .ranking-page .ranking-toolbar { display: block; padding: 0 0 5mm; border: 0; }
  .ranking-page .ranking-toolbar label { display: none; }
  .ranking-page .ranking-toolbar h2::before { content: "Brasil em Disputa — Painel da turma\A"; white-space: pre; font-size: 18pt; }
  .ranking-page .ranking-table th, .ranking-page .ranking-table td { padding: 2.5mm 2mm; font-size: 9pt; }
  .ranking-page .live-setup, .ranking-page .offline-ranking, .ranking-page .projector-update { display: none !important; }
  .ranking-page .live-projector { display: block !important; }
  .ranking-page .projector-title h1 { font-size: 24pt; }
  .ranking-page .projector-leaderboard { gap: 2mm; }
  .ranking-page .projector-leaderboard li { min-height: 0; padding: 2.5mm; box-shadow: none; break-inside: avoid; }
  .teacher-page .ranking-header, .teacher-page .teacher-welcome, .teacher-page .teacher-session-list, .teacher-page .session-controls, .teacher-page .teacher-report-head button, .teacher-page .toast { display: none !important; }
  .teacher-page .teacher-main, .teacher-page .teacher-grid { display: block; width: 100%; margin: 0; padding: 0; }
  .teacher-page .teacher-session-detail { border: 0; box-shadow: none; }
  .teacher-page .ranking-table th, .teacher-page .ranking-table td { padding: 2mm; font-size: 8.5pt; }
}
