/* Papel, tinta e pequenos cenários em perspectiva. */
.campaign { padding:28px 0 3px; }
.campaign-head { align-items:center; margin-bottom:23px; }
.campaign-head h2 { font-size:clamp(28px,4vw,43px); letter-spacing:-.06em; }
.campaign-head .eyebrow { font-size:9px; color:#786e53; }
.profile-trigger { display:flex; align-items:center; gap:10px; padding:7px 13px 7px 7px; border:1.5px solid #374752; border-radius:999px; background:#fffaf0; box-shadow:2px 3px 0 #d4c7af; cursor:pointer; font-weight:900; font-size:12px; }
.avatar-mini,.runner-avatar,.profile-avatar,.leader-portrait { position:relative; isolation:isolate; display:grid; place-items:center; overflow:hidden; color:#eae1c7; background:#385364; }
.avatar-mini { width:36px; height:36px; border:1px solid #304550; border-radius:50%; }
.avatar-mini img,.runner-avatar img,.profile-avatar img,.leader-portrait img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1; }
.avatar-initial { font-weight:1000; letter-spacing:-.06em; font-size:1em; }
.hall-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:12px 0 14px; }
.hall-heading h3 { margin:0; font-size:12px; letter-spacing:.14em; color:#354a56; }
.week-switch { display:flex; gap:4px; padding:4px; border:1px solid #b6b3a4; border-radius:999px; background:#e9e3d2; }
.week-switch button { border:0; padding:8px 14px; border-radius:999px; background:transparent; font-size:10px; font-weight:900; color:#65726f; cursor:pointer; }
.week-switch button[aria-pressed="true"] { background:#fffdf4; color:#294b5c; box-shadow:0 2px 3px #64747028; }
.leaderboard { position:relative; overflow:hidden; color:#fff4d9; background:#233d4c; border:2px solid #1b303b; border-radius:20px 26px 18px 23px; box-shadow:0 9px 0 #18313c,0 17px 22px #17364520; }
.leaderboard::before { content:''; position:absolute; pointer-events:none; inset:9px; border:1px dashed #9ab5b130; border-radius:14px 21px 12px 17px; }
.leaderboard::after { content:''; position:absolute; pointer-events:none; inset:0; opacity:.3; background-image:repeating-linear-gradient(135deg,transparent 0 14px,#b9cfbd08 14px 15px); }
.leaderboard[data-period="previous"] { background:#3e4057; box-shadow:0 9px 0 #2b2c42,0 17px 22px #17364520; }
.leader-topline { position:relative; z-index:2; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:23px 30px 0; }
.leader-period { display:flex; align-items:center; gap:7px; font-size:10px; font-weight:900; letter-spacing:.17em; color:#e9bc65; }
.leader-period::before { content:''; width:7px; height:7px; border-radius:50%; background:#e9bc65; box-shadow:0 0 0 4px #e9bc651a; }
.ranking-dates { color:#b5c5c4; font-size:11px; letter-spacing:.05em; }
.leader-main { position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,1.5fr) minmax(180px,.8fr) minmax(110px,.55fr); align-items:center; gap:20px; padding:25px 42px 32px 31px; min-height:235px; }
.leader-copy { min-width:0; }
.leader-kicker { display:inline-block; color:#d0dcd2; border-bottom:1px solid #88a0a3; padding-bottom:7px; font-size:9px; font-weight:900; letter-spacing:.21em; }
.leader-name { color:#fff8e6; margin:13px 0 11px; font-size:clamp(27px,3.6vw,47px); font-weight:1000; line-height:1.08; letter-spacing:-.055em; overflow-wrap:anywhere; text-shadow:2px 3px 0 #101f2d; }
.leader-description { max-width:300px; color:#c3d0c8; font-size:12px; line-height:1.65; margin:0; }
.leader-medallion { position:relative; width:194px; justify-self:center; padding:12px; transform:rotate(4deg); }
.leader-medallion::before { content:''; position:absolute; inset:-20px; background:repeating-conic-gradient(from 10deg,#e7c16c19 0deg 4deg,transparent 4deg 30deg); border-radius:50%; }
.leader-portrait { width:170px; height:170px; border:7px solid #f0d186; outline:2px solid #172e37; border-radius:28% 31% 29% 33%; box-shadow:7px 9px 0 #12283380,inset 0 0 0 3px #293f4d; transform:rotate(-4deg); background:radial-gradient(circle at 35% 25%,#688781,#284d5a); }
.leader-portrait .avatar-initial { font-size:58px; text-shadow:2px 4px #1a3744; }
.leader-portrait.empty { background:radial-gradient(circle at 35% 25%,#63857d,#2d4e5d); }
.leader-crown { position:absolute; z-index:3; width:69px; height:54px; left:65px; top:-24px; transform:rotate(-7deg); filter:drop-shadow(3px 4px 0 #162d3980); }
.leader-ribbon { position:absolute; z-index:3; bottom:0; left:-7px; right:-7px; background:#e8b960; color:#2a3f49; border:2px solid #172e37; padding:8px 4px; text-align:center; font-size:10px; font-weight:1000; letter-spacing:.10em; box-shadow:0 4px 0 #bb8841; transform:rotate(-4deg); }
.leader-score { text-align:center; justify-self:end; }
.leader-score strong { display:block; color:#efd08a; font-size:clamp(49px,6vw,79px); font-weight:1000; letter-spacing:-.06em; line-height:1; text-shadow:3px 4px #172d39; font-variant-numeric:tabular-nums; }
.leader-score span { display:block; margin-top:10px; color:#e4dfca; font-size:10px; font-weight:900; letter-spacing:.13em; line-height:1.5; }
.leader-bottom { position:relative; z-index:2; display:flex; align-items:center; justify-content:space-between; gap:15px; min-height:44px; padding:9px 28px; background:#122b364d; border-top:1px solid #b7ccb123; }
.rank-runners { display:flex; flex-wrap:wrap; align-items:center; gap:9px 24px; }
.runner { display:flex; align-items:center; gap:8px; font-size:10px; }
.runner>b { color:#d8b97b; font-size:12px; }
.runner-avatar { width:24px; height:24px; border-radius:50%; font-size:9px; background:#5f7778; }
.runner-name { max-width:116px; text-overflow:ellipsis; overflow:hidden; white-space:nowrap; }
.runner>strong { color:#bacfc7; font-size:9px; font-weight:500; }
.slideshow-controls { display:flex; align-items:center; gap:5px; margin-left:auto; }
.slideshow-controls button { width:30px; height:30px; border:1px solid #bad0be42; border-radius:7px; color:#efddb4; background:#68848124; cursor:pointer; font-size:14px; }
.slideshow-controls button:hover { background:#8da29755; }
.ranking-note { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:5px; margin:17px 2px 29px; color:#727c76; font-size:10px; min-height:23px; }
.ranking-note .link-btn { font-size:10px; }
.journey-bar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:15px; padding:18px 0; border-top:1px solid #4a5b6130; }
.journey-bar h3 { font-size:25px; margin:4px 0 0; letter-spacing:-.045em; }
.journey-bar .eyebrow { font-size:9px; }
.journey-progress { width:185px; }
.journey-progress>div:first-child { display:flex; justify-content:space-between; font-size:10px; font-weight:900; color:#65746c; margin-bottom:8px; }
.journey-progress strong { color:#395c55; }
.journey-track { height:9px; padding:2px; border:1px solid #65786b; border-radius:6px; background:#e0dbcb; box-shadow:1px 2px 0 #b8beac; }
.journey-track span { display:block; width:0; height:100%; border-radius:3px; background:repeating-linear-gradient(130deg,#6b9580 0 7px,#82ab91 7px 11px); transition:width .4s; }
.campaign-actions { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:2px 0 0; }
.campaign-actions .btn { padding:12px 17px; min-height:43px; font-size:12px; }
.campaign-actions .btn-primary { background:#2f657a; box-shadow:0 4px 0 #183d50; border-color:#263c47; }
.campaign-actions .btn-secondary { background:#fffaf0; box-shadow:0 4px 0 #cbbd9f; }
.online-dot { display:inline-block; width:7px; height:7px; border-radius:50%; background:#719b71; margin-right:7px; box-shadow:0 0 0 3px #719b711a; }
.campaign-room-status { margin:10px 0 0; color:#537889; min-height:18px; font-size:11px; }
.phase-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:22px 17px; margin:18px 0 25px; }
.phase-card { position:relative; min-height:260px; border:2px solid #344750; border-radius:15px 20px 16px 19px; padding:12px 13px 13px; text-align:left; background:linear-gradient(170deg,#fffbee,#efe4cc); box-shadow:0 6px 0 #cbbd9c,2px 11px 14px #37442f17; cursor:pointer; overflow:hidden; transition:transform .18s,box-shadow .18s; animation:card-reveal .45s both; animation-delay:var(--reveal-delay,0ms); }
.phase-card::before { content:''; position:absolute; inset:6px; pointer-events:none; border:1px dashed #63756427; border-radius:10px 15px 11px 14px; }
.phase-card:hover:not(:disabled) { transform:translateY(-5px) rotate(-.5deg); box-shadow:0 10px 0 #bdad8b,3px 17px 20px #37442f24; }
.phase-card:focus-visible,.week-switch button:focus-visible,.profile-trigger:focus-visible,.slideshow-controls button:focus-visible { outline:3px solid #5489bc; outline-offset:4px; }
.phase-card .phase-card-head { display:flex; justify-content:space-between; align-items:center; gap:6px; }
.phase-card .phase-number { font-size:27px; color:#365b68; font-weight:1000; letter-spacing:-.055em; line-height:1; margin:0; }
.phase-card .phase-state { font-size:7px; font-weight:900; letter-spacing:.1em; border:1px solid #60747140; border-radius:999px; padding:5px 6px; margin:0; background:#f7f4e8; color:#596e6e; }
.phase-art { position:relative; height:126px; margin:1px -13px 3px; }
.phase-art>svg { display:block; width:100%; height:100%; overflow:visible; transition:transform .2s; }
.phase-card:hover:not(:disabled) .phase-art>svg { transform:translateY(-3px); }
.phase-card .phase-badge { position:absolute; right:17px; bottom:8px; display:grid; place-items:center; width:29px; height:29px; margin:0; border:1.6px solid #38534f; border-radius:9px 11px 8px 10px; background:#d0e3c1; color:#365d51; font-weight:1000; font-size:18px; box-shadow:2px 3px 0 #34475022; transform:rotate(6deg); }
.phase-badge svg { width:19px; height:19px; }
.phase-card .phase-title { display:block; font-size:13px; color:#324b55; line-height:1.3; letter-spacing:.005em; min-height:34px; max-width:190px; margin:0; }
.phase-footer { border-top:1px solid #596b5d24; margin-top:8px; padding-top:9px; display:flex; align-items:center; gap:5px; justify-content:space-between; }
.phase-card .phase-footer small { color:#66776d; margin:0; font-size:9px; line-height:1.4; max-width:122px; }
.phase-card .phase-go { display:block; margin:0; font-size:8px; color:#4d6e6a; font-weight:1000; white-space:nowrap; }
.phase-card.done { background:linear-gradient(165deg,#f2f6e5,#dfe8cf); border-color:#536e60; box-shadow:0 6px 0 #a4b599,2px 11px 14px #37442f17; }
.phase-card.done .phase-state { color:#466a53; background:#e5eed6; border-color:#91a97b; }
.phase-card.current { border-color:#9e7641; background:linear-gradient(165deg,#fff7dd,#f5dfae); box-shadow:0 6px 0 #c49350,0 12px 22px #c89f5826; }
.phase-card.current .phase-state { color:#fff8dc; background:#3d6976; border-color:#36535b; }
.phase-card.current .phase-number { color:#a5712f; }
.phase-card.current .phase-badge { background:#efba62; color:#624523; border-color:#8c6232; }
.phase-card.current .phase-go { color:#8d5e27; }
.phase-card:disabled { cursor:default; color:#707770; background:linear-gradient(165deg,#f0ede2,#dfdfd3); border-color:#8c9990; box-shadow:0 6px 0 #c2c7bc; }
.phase-card.locked .phase-art>svg { filter:grayscale(.85); opacity:.6; }
.phase-card.locked .phase-state { color:#75817b; background:#e6e8de; }
.phase-card.locked .phase-number,.phase-card.locked .phase-title { color:#75827a; }
.phase-card.locked .phase-badge { color:#536661; background:#d4dfd4; border-color:#72877b; }
.campaign-footer { border-top:1px solid #485d5430; padding-top:15px; justify-content:space-between; font-size:10px; color:#788177; }
.profile-box { margin:18px 0 25px; padding:22px; border:2px solid #405867; border-radius:16px 21px 14px 19px; box-shadow:4px 5px 0 #c3c6b2; background:#faf7eb; }
.profile-box h2 { font-size:23px; }.profile-box p { color:#65716d; font-size:12px; line-height:1.5; }
.profile-layout { display:grid; grid-template-columns:1fr 1fr; gap:28px; }
.photo-editor { display:grid; grid-template-columns:94px minmax(0,1fr); gap:16px; align-items:center; }
.profile-avatar { width:94px; height:94px; border:3px solid #fff7df; outline:2px solid #8e9d8a; border-radius:26px; box-shadow:4px 5px 0 #b5bba580; font-size:32px; }
.photo-editor input[type=file] { width:100%; max-width:300px; font-size:10px; color:#5c726e; }
.photo-editor input[type=file]::file-selector-button { border:1px solid #758d88; border-radius:6px; padding:8px; margin:0 7px 6px 0; background:#e6eddf; color:#33545c; font-weight:700; cursor:pointer; }
.photo-actions { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:10px; }
.photo-actions .btn { padding:8px 11px; font-size:10px; }.photo-actions .link-btn { font-size:10px; }
.photo-zoom { display:flex; gap:8px; align-items:center; font-size:10px; color:#536d6c; margin:8px 0; }
.photo-zoom input { max-width:150px; min-width:70px; width:65%; accent-color:#467985; }
.profile-settings { border-left:1px dashed #879d8a; padding-left:24px; }
.profile-settings .field-label { margin-top:0; }.profile-settings .btn { font-size:10px; padding:9px 12px; }
@keyframes card-reveal { from { opacity:0; translate:0 9px; } to { opacity:1; translate:0 0; } }
@media(max-width:960px) {
  .phase-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .leader-main { grid-template-columns:minmax(0,1.2fr) 164px 95px; gap:15px; padding-right:26px; }
  .leader-medallion { width:164px; }.leader-portrait { width:140px; height:140px; }.leader-crown { left:47px; }
  .leader-name { font-size:32px; }.leader-score strong { font-size:60px; }
  .profile-layout { grid-template-columns:1fr; }.profile-settings { border-left:0; border-top:1px dashed #879d8a; padding:18px 0 0; }
}
@media(max-width:620px) {
  .campaign { padding-top:21px; }.campaign-head { flex-direction:row; align-items:center; gap:9px; }.campaign-head h2 { font-size:29px; }.campaign-head p { font-size:11px; line-height:1.5; }
  .profile-trigger { font-size:0; padding:4px; }.avatar-mini { width:39px; height:39px; font-size:13px; }
  .hall-heading { flex-wrap:wrap; gap:10px; margin:15px 0 10px; }.hall-heading h3 { font-size:10px; }.week-switch button { padding:7px 10px; font-size:9px; }
  .leader-topline { padding:18px 18px 0; }.leader-period { font-size:8px; letter-spacing:.1em; }.ranking-dates { font-size:9px; }
  .leader-main { grid-template-columns:minmax(0,1fr) 132px; gap:15px 10px; padding:24px 18px 21px; min-height:240px; }
  .leader-copy { grid-row:1/3; }.leader-kicker { font-size:8px; letter-spacing:.10em; }.leader-name { font-size:27px; line-height:1.1; margin:12px 0 10px; }.leader-description { font-size:10px; line-height:1.6; }
  .leader-medallion { grid-column:2; width:128px; padding:7px; }.leader-portrait { width:114px; height:114px; border-width:5px; }.leader-portrait .avatar-initial { font-size:39px; }.leader-crown { width:48px; height:39px; left:42px; top:-21px; }.leader-ribbon { font-size:7px; padding:6px 2px; bottom:-5px; }
  .leader-score { display:flex; align-items:center; justify-self:center; gap:7px; grid-column:2; }.leader-score strong { font-size:41px; }.leader-score span { margin:0; font-size:7px; text-align:left; letter-spacing:.05em; }
  .leader-bottom { padding:10px 15px; align-items:flex-end; gap:6px; }.rank-runners { flex-direction:column; align-items:flex-start; gap:8px; }.runner { gap:6px; font-size:9px; }.runner-name { max-width:85px; }.runner>strong { font-size:8px; }.slideshow-controls { gap:3px; }.slideshow-controls button { width:28px; }
  .ranking-note { font-size:9px; line-height:1.4; margin-bottom:20px; }.journey-bar { gap:13px; padding:15px 0; }.journey-bar h3 { font-size:23px; }.journey-progress { width:100%; }.journey-progress>div:first-child { font-size:9px; }
  .campaign-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }.campaign-actions .btn { padding:11px 6px; font-size:10px; }
  .phase-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:19px 11px; margin-top:12px; }
  .phase-card { min-height:244px; padding:10px 10px 12px; }.phase-art { height:112px; margin:0 -10px 3px; }.phase-card .phase-number { font-size:24px; }.phase-card .phase-state { font-size:6px; padding:4px 5px; letter-spacing:0; }.phase-card .phase-title { font-size:11px; min-height:30px; }.phase-card .phase-footer small { font-size:8px; max-width:87px; }.phase-card .phase-go { font-size:7px; }.phase-card .phase-badge { right:11px; bottom:4px; width:25px; height:25px; font-size:15px; }
  .profile-box { padding:17px; }.photo-editor { grid-template-columns:78px minmax(0,1fr); gap:12px; }.profile-avatar { width:78px; height:78px; }.profile-box h2 { font-size:21px; }.campaign-footer { gap:5px; font-size:9px; }
}
@media(max-width:350px) { .leader-main { grid-template-columns:minmax(0,1fr) 112px; padding-left:13px; padding-right:13px; }.leader-name { font-size:24px; }.leader-medallion { scale:.86; }.leader-description { font-size:9px; }.phase-card .phase-state { font-size:5.5px; }.phase-footer { align-items:flex-start; flex-direction:column; } }
@media(prefers-reduced-motion:reduce) { .phase-card { animation:none; }.phase-card,.phase-art>svg,.journey-track span { transition:none; } }

.phase-loading-line { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; color:#596e6e; font-size:11px; min-height:28px; margin:9px 0; }
.phase-loading-line .link-btn { margin-left:auto; font-size:11px; }
.phase-grid[aria-busy="true"] { pointer-events:none; opacity:.55; }
.phase-pagination { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:18px; margin:25px 0; color:#536d6c; font-size:12px; }
.phase-pagination .btn { padding:10px 13px; font-size:11px; }
