/* CAG Community Series: desktop visual theme, grounded in the supplied KV. */
body.desktop-demo {
 --bg:#0b1115; --surface:#121c22; --surface-raised:#1a272e; --line:#2b3a43;
 --text:#eef1f0; --muted:#a0afb6; --accent:#f48646; --accent-dark:#231c17;
 --partner-backdrop:radial-gradient(ellipse at 50% 24%, #2c3c46 0%, #142027 76%);
 min-width:1024px; background:var(--bg); color:var(--text); color-scheme:dark;
 font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif; font-size:14px; line-height:1.65;
}
body.desktop-demo * { box-sizing:border-box; }
body.desktop-demo ::selection { background:#a7502b; color:#fff; }
body.desktop-demo :is(h1,h2,h3,strong) { color:var(--text); }
body.desktop-demo :is(button,.button) { min-height:44px; border:1px solid var(--line); border-radius:2px; padding:10px 20px; background:#19252c; color:var(--text); font:inherit; font-weight:600; cursor:pointer; transition:background .16s,border-color .16s,color .16s,transform .16s; box-shadow:none; }
body.desktop-demo :is(button,.button):hover:not(:disabled) { border-color:#75858c; background:#22323b; }
body.desktop-demo :is(button,.button).primary { background:var(--accent); color:#19150f; border-color:var(--accent); }
body.desktop-demo :is(button,.button).primary:hover:not(:disabled) { background:#ffa36f; border-color:#ffa36f; transform:translateY(-1px); }
body.desktop-demo :is(button,.button):disabled { cursor:not-allowed; opacity:.4; }
body.desktop-demo :is(a,button,input,select,textarea,summary):focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
body.desktop-demo a { color:inherit; text-decoration:none; }
body.desktop-demo a:hover { color:var(--accent); }
body.desktop-demo .text-button { color:var(--muted); background:transparent; border-color:transparent; }
body.desktop-demo .text-button:hover { color:var(--text); background:#1a272e; border-color:transparent; }
body.desktop-demo .small { padding:8px 14px; font-size:12px; }
body.desktop-demo :is(input:not([type=checkbox]),select,textarea) { min-height:48px; border:1px solid #40525e; border-radius:2px; background:#0e171d; color:var(--text); padding:12px 14px; font:inherit; }
body.desktop-demo input::placeholder { color:#72858f; }
body.desktop-demo input[type=checkbox] { accent-color:var(--accent); width:18px; height:18px; }
body.desktop-demo select option { background:var(--surface); color:var(--text); }
body.desktop-demo .badge { background:#233139; color:#bac8ce; border:1px solid #3c4b53; padding:5px 10px; font-size:11px; letter-spacing:.03em; }
body.desktop-demo .badge.dark { color:#ffb183; background:#30251d; border-color:#71503a; }
body.desktop-demo .label { color:var(--muted); font-size:11px; letter-spacing:.12em; }
body.desktop-demo :is(.annotation,.tiny,.mini-status) { color:var(--muted); }
body.desktop-demo .form-error { color:#ffa57d; }
body.desktop-demo .notice { max-width:1180px; margin:20px auto; color:var(--text); background:#243027; border:1px solid #627f5b; }
body.desktop-demo .notice.error { background:#34221c; border-color:#bd7954; }
body.desktop-demo .container { max-width:1320px; padding:42px 48px 60px; }
body.desktop-demo:has(#main[data-page=home]) .container { max-width:none; padding:0; }
body.desktop-demo .skip { background:var(--accent); color:#101719; }

/* Persistent navigation and a deliberately quiet demo switcher. */
body.desktop-demo .demo-dock { background:#172229; border-color:#2b3941; color:var(--muted); padding:0 max(40px,calc((100vw - 1280px)/2)); }
body.desktop-demo .demo-dock>summary { min-height:28px; font-size:10px; letter-spacing:.08em; color:#9babb3; }
body.desktop-demo .demo-dock .prototype-note { color:#a7b6bd; }
body.desktop-demo .demo-dock label { color:#c7d1d6; }
body.desktop-demo .demo-dock .demo-actions { padding-bottom:18px; }
body.desktop-demo .site-header { position:sticky; top:0; z-index:30; border-bottom:1px solid #34414a; background:rgba(11,17,21,.98); }
body.desktop-demo .header-inner { width:100%; max-width:1440px; min-height:78px; margin:auto; padding:0 48px; gap:40px; }
body.desktop-demo .brand { gap:14px; align-items:center; flex-shrink:0; }
body.desktop-demo .brand>b { font-family:Arial,sans-serif; font-weight:900; font-size:31px; font-style:italic; line-height:1; letter-spacing:-2px; color:#f2f2ef; border:0; padding:0; }
body.desktop-demo .brand>b span { color:var(--accent); font-size:29px; }
body.desktop-demo .brand>span { font-size:10px; font-weight:700; letter-spacing:.08em; line-height:1.5; padding-left:13px; border-left:1px solid #45515a; }
body.desktop-demo .brand small { display:block; color:var(--muted); font-size:11px; font-weight:400; letter-spacing:.05em; }
body.desktop-demo .nav { gap:24px; margin-left:auto; }
body.desktop-demo .nav :is(a,.nav-link) { display:inline-flex; align-items:center; height:78px; min-height:0; padding:0; background:transparent; border:0; border-bottom:2px solid transparent; border-radius:0; font-size:13px; color:#aebbc2; white-space:nowrap; font-weight:500; }
body.desktop-demo .nav :is(a,.nav-link):hover { background:transparent; color:#fff; border-bottom-color:#7a604b; }
body.desktop-demo .nav a.active { border-bottom-color:var(--accent); color:#fff; }
body.desktop-demo .account { max-width:180px; display:flex; align-items:center; gap:8px; color:#c6cfd3; font-size:11px; }
body.desktop-demo .account i { width:6px; height:6px; border-radius:50%; background:var(--accent); flex-shrink:0; }

/* Full-width hero. The supplied image is used intact, beneath legibility overlays. */
body.desktop-demo .campaign-home { width:100%; max-width:none; margin:0; }
body.desktop-demo .campaign-home .campaign-kv { width:100%; min-height:695px; display:block; position:relative; overflow:hidden; border:0; padding:0; background:#151e23; }
body.desktop-demo .kv-scene { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 43%; }
body.desktop-demo .kv-shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(7,12,16,.97) 0%,rgba(7,12,16,.91) 23%,rgba(7,12,16,.7) 39%,rgba(7,12,16,.08) 70%),linear-gradient(0deg,#0b1115 0%,rgba(11,17,21,0) 36%); }
body.desktop-demo .kv-layout { max-width:1344px; padding:44px 48px 106px; margin:auto; position:relative; min-height:695px; }
body.desktop-demo .campaign-home .kv-copy { width:470px; padding:0; position:relative; z-index:1; }
body.desktop-demo .kv-eyebrow { font-size:11px; font-weight:700; letter-spacing:.2em; color:#e0a783; display:flex; align-items:center; gap:10px; }
body.desktop-demo .kv-eyebrow i { width:24px; height:2px; background:var(--accent); }
body.desktop-demo .campaign-home .kv-copy h1 { font-size:48px; letter-spacing:-.04em; font-weight:800; line-height:1.25; margin:20px 0 0; color:#f6f4ef; }
body.desktop-demo .kv-copy h1 em { font-style:normal; color:#f6f4ef; }
body.desktop-demo .campaign-home .kv-intro { color:#b9c3c8; font-size:13px; margin-top:14px; letter-spacing:.1em; }
body.desktop-demo .campaign-home ol.kv-route { display:grid; gap:13px; margin:26px 0 0; padding:0; list-style:none; }
body.desktop-demo .campaign-home .kv-route li { display:flex; align-items:flex-start; gap:14px; padding:0; min-height:43px; position:relative; }
body.desktop-demo .campaign-home .route-index { width:30px; height:30px; border:1px solid #52606a; background:#162128; color:#8f9fa8; display:grid; place-items:center; border-radius:0; font:11px/1 Consolas,monospace; flex:0 0 30px; }
body.desktop-demo .campaign-home .kv-route li.current .route-index { background:var(--accent); border-color:var(--accent); color:#11191d; }
body.desktop-demo .campaign-home .kv-route li:not(:last-child):after { content:""; position:absolute; left:15px; top:33px; height:18px; width:1px; background:#3f4c54; }
body.desktop-demo .campaign-home .kv-route strong { display:block; font-size:13px; font-weight:600; color:#e8eeef; line-height:1.5; }
body.desktop-demo .campaign-home .kv-route p { font-size:11px; color:#a3b1b8; line-height:1.6; margin-top:3px; }
body.desktop-demo .hero-actions { display:flex; gap:18px; align-items:center; margin-top:28px; }
body.desktop-demo .hero-cta { min-width:207px; min-height:48px; display:inline-flex; justify-content:space-between; gap:30px; font-size:13px; }
body.desktop-demo .hero-cta span { font-size:21px; line-height:1; }
body.desktop-demo .hero-actions .text-button { font-size:12px; }
body.desktop-demo .hero-caption { position:absolute; right:48px; bottom:114px; text-align:right; display:flex; flex-direction:column; gap:9px; color:#e5e8e6; }
body.desktop-demo .hero-caption>span { font:900 28px/1.1 Arial,sans-serif; font-style:italic; letter-spacing:-.06em; }
body.desktop-demo .hero-caption>small { font:10px/1.4 Arial,sans-serif; letter-spacing:.12em; color:#a7b0b3; }
body.desktop-demo .kv-statusbar { display:flex; align-items:center; gap:28px; min-height:58px; padding:9px max(48px,calc((100vw - 1248px)/2)); position:absolute; bottom:0; left:0; width:100%; background:rgba(19,29,35,.95); border-top:1px solid #3b4549; border-bottom:1px solid #344047; color:#bfccd2; font-size:12px; }
body.desktop-demo .kv-statusbar .status-live { color:#ffa36c; padding-left:13px; border-left:2px solid var(--accent); font-weight:700; }
body.desktop-demo .kv-statusbar small { color:#8798a1; margin-left:12px; font-size:10px; }
body.desktop-demo .kv-statusbar .text-button { margin-left:auto; padding-block:4px; min-height:32px; font-size:12px; }

/* Rewards, squad and calendar retain the approved information order. */
body.desktop-demo .campaign-home :is(.campaign-rewards,.campaign-entry,.campaign-calendar) { max-width:1248px; width:calc(100% - 96px); margin:0 auto; padding:64px 0; scroll-margin-top:95px; }
body.desktop-demo .campaign-home .heading-row { display:block; margin:0 0 24px; }
body.desktop-demo .campaign-home .section-index { display:block; font:11px/1.5 Consolas,monospace; color:var(--accent); letter-spacing:.12em; margin-bottom:12px; }
body.desktop-demo .campaign-home .heading-row h2 { font-size:30px; font-weight:700; letter-spacing:-.025em; line-height:1.4; color:#edf1f0; margin:0; }
body.desktop-demo .campaign-home .heading-row p { color:#97a8b2; font-size:13px; margin-top:9px; }
body.desktop-demo .campaign-home .reward-note { font-size:11px; color:#8d9fa8; line-height:1.7; margin:16px 0; }
body.desktop-demo .campaign-home .reward-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; margin-top:22px; }
body.desktop-demo .campaign-home .reward-stage { position:relative; display:flex; flex-direction:column; border:1px solid #31404a; border-top:2px solid #576b77; background:#141f26; padding:26px; border-radius:0; }
body.desktop-demo .campaign-home .reward-stage:nth-child(3) { border-top-color:var(--accent); background:#192026; }
body.desktop-demo .campaign-home .reward-stage header { min-height:135px; padding-bottom:18px; }
body.desktop-demo .campaign-home .reward-stage-no { display:flex; justify-content:space-between; font:10px/1.5 Consolas,monospace; color:#92a4ae; letter-spacing:.03em; align-items:center; }
body.desktop-demo .reward-stage-no b { color:#758996; font-size:18px; font-weight:400; }
body.desktop-demo .campaign-home .reward-feature { font-size:30px; font-weight:700; color:#f6bd8d; line-height:1.4; margin:17px 0 5px; letter-spacing:-.035em; }
body.desktop-demo .campaign-home .reward-stage h3 { color:var(--text); font-size:15px; font-weight:600; margin-top:4px; }
body.desktop-demo .campaign-home .reward-stage header p { color:#91a3ae; font-size:12px; margin-top:5px; }
body.desktop-demo .campaign-home ul.reward-tiers { display:grid; grid-template-rows:repeat(3,minmax(100px,auto)); padding:0; margin:0; list-style:none; flex:1; }
body.desktop-demo .campaign-home .reward-tiers li { margin:0; padding:16px 0; border-top:1px solid #2b3b46; }
body.desktop-demo .campaign-home .reward-tiers li>strong { color:#dce5e8; font-size:13px; }
body.desktop-demo .campaign-home .reward-items { display:flex; flex-direction:column; gap:5px; margin-top:9px; }
body.desktop-demo .campaign-home .reward-items p { margin:0; display:flex; flex-wrap:wrap; gap:4px 8px; align-items:baseline; }
body.desktop-demo .campaign-home .reward-items span { color:#e4a16e; font-size:11px; background:#2a2926; padding:1px 5px; border:1px solid #4a4339; }
body.desktop-demo .campaign-home .reward-items small { font-size:11px; color:#99aab4; line-height:1.8; }
body.desktop-demo .campaign-home .reward-qualification { border-top:1px solid #3b4a54; min-height:63px; padding-top:17px; margin-top:6px; color:#b1bfc6; font-size:11px; line-height:1.85; }
body.desktop-demo .campaign-home .campaign-entry { border-top:1px solid #293942; }
body.desktop-demo .campaign-home .action-stage { background:#131f26; border:1px solid #364a55; border-radius:2px; padding:30px 38px; }
body.desktop-demo .campaign-home .entry-stage { background:linear-gradient(110deg,#18262e,#101b22); }
body.desktop-demo .campaign-home .campaign-entry .action-stage h3 { color:#e8efef; font-size:24px; line-height:1.5; font-weight:650; }
body.desktop-demo .campaign-home .campaign-entry .action-lead { color:#a4b4bd; font-size:13px; line-height:1.8; margin-top:7px; }
body.desktop-demo .campaign-home .task-progress { margin:28px 0 24px; max-width:750px; }
body.desktop-demo .campaign-home .task-progress li { color:#8096a2; border-color:#334853; font-size:12px; }
body.desktop-demo .campaign-home .task-progress li.current { color:#f6b283; border-color:var(--accent); }
body.desktop-demo .campaign-home .task-progress li.done { border-color:#6b8b90; }
body.desktop-demo .campaign-home .step-dot { background:#182b35; border-color:#486474; color:#aac0cd; }
body.desktop-demo .campaign-home .task-progress li.current .step-dot { background:var(--accent); border-color:var(--accent); color:#182128; }
body.desktop-demo .campaign-home .task-progress strong { color:inherit; }
body.desktop-demo .campaign-home .campaign-entry .squad-visual { max-width:620px; margin:26px auto; }
body.desktop-demo .campaign-home .campaign-entry .avatar { width:54px; height:54px; flex-basis:54px; background:#22353f; border:1px solid #5a737f; border-radius:3px; color:#86a3b3; }
body.desktop-demo .campaign-home .campaign-entry .avatar:empty:before { border-color:#a4b9c5; top:10px; }
body.desktop-demo .campaign-home .campaign-entry .avatar:empty:after { border-color:#a4b9c5; bottom:9px; }
body.desktop-demo .campaign-home .squad-slot strong { color:#ccdae0; font-size:13px; }
body.desktop-demo .campaign-home .squad-slot small { color:#8ea4af; font-size:11px; }
body.desktop-demo .campaign-home .campaign-entry .entry-stage .entry-choices { max-width:none; gap:18px; }
body.desktop-demo .campaign-home .campaign-entry .entry-stage .choice { min-height:124px; background:#1d303a; border:1px solid #49606e; border-radius:2px; padding:22px 26px; }
body.desktop-demo .campaign-home .campaign-entry .entry-stage .choice:hover { background:#293e49; border-color:#d19a70; transform:translateY(-2px); }
body.desktop-demo .campaign-home .campaign-entry .entry-stage .choice strong { font-size:20px; color:#edf2f3; }
body.desktop-demo .campaign-home .campaign-entry .entry-stage .choice span { font-size:12px; color:#a1b5c1; }
body.desktop-demo .campaign-home .campaign-entry .entry-stage .choice b { color:#ffb27e; font-size:12px; }
body.desktop-demo .campaign-home .next-hint { background:#24313a; border-left:2px solid #637d8b; color:#adc0ca; font-size:12px; }
body.desktop-demo .campaign-home .stats { display:flex; gap:40px; margin-top:22px; padding:22px 0; border-block:1px solid #304652; }
body.desktop-demo .campaign-home .stat { background:transparent; border:0; padding:0; color:#8fa9b7; }
body.desktop-demo .campaign-home .stat strong { font:500 36px/1.3 Consolas,monospace; color:#e6b18a; }
body.desktop-demo .campaign-home .soft-info { background:#21343d; border-color:#476674; color:#a6bdc8; }

/* Actual date controls: no extra task list beneath the calendar. */
body.desktop-demo .campaign-home .campaign-calendar { border-top:1px solid #293942; padding-top:64px; }
body.desktop-demo .campaign-calendar .calendar-note { color:#8299a6; font-size:11px; }
body.desktop-demo .campaign-calendar .schedule-key { border-color:var(--accent); color:#dfac89; font-size:12px; margin:12px 0 22px; }
body.desktop-demo .campaign-calendar .season-calendar { background:#13212a; border:1px solid #394e5b; margin-top:0; }
body.desktop-demo .campaign-calendar .week-label { background:#1c2b35; color:#aabac5; border-color:#344b59; padding:10px 15px; font-size:11px; }
body.desktop-demo .campaign-calendar .week-label span { color:#6f8a9a; margin-left:10px; font:10px/1 Consolas,monospace; }
body.desktop-demo .campaign-calendar .calendar-day { padding:0; border-color:#2e4553; background:#14222b; min-height:103px; display:block; }
body.desktop-demo .campaign-calendar .calendar-day button { width:100%; height:100%; min-height:103px; border:0; border-radius:0; background:transparent; display:flex; align-items:flex-start; flex-direction:column; padding:16px 17px; gap:7px; text-align:left; font-weight:400; }
body.desktop-demo .campaign-calendar .calendar-day button:hover { background:#293d47; }
body.desktop-demo .campaign-calendar .calendar-day.past { background:#101b22; }
body.desktop-demo .campaign-calendar .calendar-day.current { background:#2c2a24; outline:1px solid #a77955; outline-offset:-1px; }
body.desktop-demo .campaign-calendar .calendar-day .day-no { color:#829eaf; font:12px/1.4 Consolas,monospace; }
body.desktop-demo .campaign-calendar .calendar-day strong { color:#c4d2da; font-size:12px; font-weight:500; }
body.desktop-demo .campaign-calendar .calendar-day .day-marker { color:#6f8b9b; font-size:10px; }
body.desktop-demo .campaign-calendar .calendar-day.current :is(strong,.day-marker,.day-no) { color:#ffc195; }
body.desktop-demo .campaign-calendar .overview-links { border-color:#2a3e49; color:#a3b7c2; font-size:12px; }
body.desktop-demo .minimal-footer { width:calc(100% - 96px); max-width:1248px; margin:0 auto; padding:30px 0; border-top:1px solid #2a3b44; color:#687f8c; font-size:11px; display:flex; align-items:center; gap:30px; }
body.desktop-demo .minimal-footer>div:first-child { display:flex; flex-direction:column; gap:4px; }
body.desktop-demo .minimal-footer strong { font-size:12px; color:#93a7b2; letter-spacing:.04em; }
body.desktop-demo .footer-links { display:flex; gap:22px; }
body.desktop-demo .minimal-footer a { min-height:30px; }
@media (prefers-reduced-motion:reduce) { body.desktop-demo *,body.desktop-demo *:before,body.desktop-demo *:after { transition:none!important; animation:none!important; scroll-behavior:auto!important; } }
