/* BANKING QUEST — professional interface. Neutral surfaces, one action color. */
:root {
  --bg:#f6f7f9; --surface:#fff; --surface2:#f1f3f5; --text:#182230;
  --muted:#596779; --line:#dfe4eb; --accent:#2457a6; --accent-ink:#fff;
  --good:#246548; --good-bg:#edf5ef; --bad:#a13030; --bad-bg:#faf0f0;
  --warn:#825b21; --warn-bg:#faf5e9; --star:#4b5e79;
  --code-bg:#121b29; --code-ink:#dce5ef;
  color-scheme:light;
}
body,body:has(.sidebar) { background:var(--bg);color:var(--text);--accent:#2457a6;--accent-ink:#fff;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.6; }
a {text-underline-offset:3px;} button,input,select,textarea{font:inherit;}
h1{font-size:clamp(1.6rem,2.4vw,2rem);font-weight:650;letter-spacing:-.035em;line-height:1.25;}
h2{font-size:1.1rem;font-weight:650;letter-spacing:-.02em;} h3{font-weight:600;}
.lead{max-width:74ch;font-size:.94rem;line-height:1.75;}
.ui-icon{display:inline-block;vertical-align:middle;flex:none;}
.ui-avatar{display:inline-grid;place-items:center;width:38px;height:38px;background:var(--surface2);border:1px solid var(--line);border-radius:50%;font-size:12px;font-weight:650;color:var(--muted);flex:none;}
body:has(.sidebar) .top{height:68px;min-height:68px;padding:0 24px;background:var(--surface);color:var(--text);border-bottom:1px solid var(--line);box-shadow:none;gap:24px;}
body:has(.sidebar) .brand{color:var(--text);font-size:.95rem;letter-spacing:.045em;font-weight:750;white-space:nowrap;}
body:has(.sidebar) .brand b{color:var(--text);}
body:has(.sidebar) .hud,body:has(.sidebar) .hud .rank{color:var(--muted);font-size:12px;gap:14px;}
.hud .rank{font-weight:600;}.meter{height:5px;width:80px;background:var(--surface2);}.meter>i{background:var(--accent);}
.goal,.goal.ok{background:var(--surface2);color:var(--muted);font-size:11px;padding:4px 8px;}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:6px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);cursor:pointer;}
.iconbtn:hover,.btn:hover{background:var(--surface2);border-color:#a6b3c4;}.iconbtn[aria-pressed=false]{opacity:.65;}
.menu-toggle{align-items:center;gap:8px;display:inline-flex!important;font-size:12px;min-height:34px;padding:6px 10px;background:var(--surface);color:var(--muted);}
nav.sidebar{top:68px;width:244px;background:var(--surface);border-right:1px solid var(--line);padding:22px 12px;gap:4px;}
nav.sidebar a{padding:10px 12px;gap:12px;font-size:13px;font-weight:500;color:var(--muted);border-radius:6px;min-height:42px;}
nav.sidebar a:hover{background:var(--surface2);color:var(--text);}
nav.sidebar a.on{color:var(--text);background:var(--surface2);box-shadow:none;font-weight:650;}
.nav-section{font-size:9px;letter-spacing:.1em;color:var(--muted);font-weight:650;margin:16px 0 8px;}
.service-dot{color:var(--muted);font-size:11px;font-weight:400;}.service-dot::before{content:"";display:inline-block;width:6px;height:6px;background:var(--good);border-radius:50%;margin-right:7px;vertical-align:middle;}
.nav-more{font-size:12px;padding:12px;color:var(--muted);}.sidebar-foot{font-size:10px;line-height:1.8;color:var(--muted);}
.desktop-workspace{margin-left:244px;grid-template-columns:minmax(0,1fr) 248px;}
.desktop-workspace main{padding:32px;max-width:1440px;}
.context-panel{top:90px;min-height:0;background:transparent;padding:24px 20px;border:0;margin-top:12px;color:var(--muted);}
.context-panel h2,.context-panel h3{color:var(--text);font-size:12px;}.context-title{font-size:12px;color:var(--muted);font-weight:400;}
.context-eyebrow,.dashboard-eyebrow{font-size:9px;color:var(--muted);letter-spacing:.1em;}.context-divider{background:var(--line);margin:22px 0;}
.daily-number{font-size:26px;color:var(--text);font-weight:600;}.daily-number small{font-size:12px;color:var(--muted);}.context-panel progress{accent-color:var(--accent);height:5px;}
.context-link{font-size:12px;}.school-note{font-size:10px;color:var(--muted);}
.card,.stat-card,.phase,.fsec,.journal-detail,.badge,.gl,.frow2,.virtual-desk,.lab-workbench{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:none;}
.card{padding:20px;}.card h3{font-size:.95rem;line-height:1.5;}.card p{color:var(--muted);font-size:13px;line-height:1.7;}
a.card:hover,button.card:hover{transform:none;box-shadow:none;border-color:#9baac0;background:var(--surface);}
.next,.featured-mission,.frow2.st-playable,.frow2.st-done,.evc.deb,.evc.cre,a.card.done{border:1px solid var(--line);box-shadow:none;}
.journal-entry[aria-pressed=true]{background:var(--surface2);box-shadow:none;outline:0;}
.dashboard-hero{border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;padding:8px 0 28px;gap:24px;}
.dashboard-hero h1{font-size:clamp(1.65rem,2.6vw,2.2rem);white-space:normal;line-height:1.2;margin:12px 0;}
.dashboard-hero p{font-size:14px;max-width:70ch;color:var(--muted);}.hero-chip{font-size:11px;background:transparent;padding:0;border-radius:0;color:var(--muted);font-weight:400;}
.hero-monogram,.hero-building{display:none;}.dashboard-eyebrow{margin-bottom:10px;}
.dashboard-stats{margin:24px 0;gap:16px;}.stat-card{padding:18px 20px;gap:8px;}.stat-card small{font-size:10px;color:var(--muted);letter-spacing:.06em;}.stat-card strong{font-size:20px;line-height:1.3;letter-spacing:-.025em;font-weight:600;}.stat-card span{font-size:12px;color:var(--muted);}
.dashboard-columns{gap:28px;grid-template-columns:minmax(0,1.6fr) minmax(220px,1fr);}.dashboard-columns h2{font-size:15px;}.section-head a{font-size:12px;}
.featured-mission h3{margin:10px 0;}.mission-cta{color:var(--accent);font-size:12px;margin-top:20px;font-weight:600;}.news-card{margin-bottom:16px;}.news-card small{font-size:9px;color:var(--muted);}.news-card a{font-size:12px;}
.workspace-icon{color:var(--muted);font-size:16px;margin-bottom:12px;}.workspace-link{margin-bottom:0;}.grid{gap:16px;}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:8px 14px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text);font-size:13px;line-height:1.4;text-decoration:none;font-weight:500;}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:550;}.btn.primary:hover{background:#1b478d;border-color:#1b478d;}.btn:disabled{opacity:.5;cursor:not-allowed;}
input:not([type=checkbox]):not([type=radio]),select,textarea{border-radius:6px;border:1px solid var(--line);padding:9px 12px;background:var(--surface);color:var(--text);min-height:40px;max-width:100%;}
input[type=search]{width:100%;}textarea.sql{background:var(--code-bg);color:var(--code-ink);padding:16px;font:13px/1.7 ui-monospace,monospace;min-height:180px;border-radius:6px;}
.opt{border-radius:6px;font-size:14px;padding:14px 16px;}.chip{border-radius:6px;font-size:12px;}.stars{font-size:11px;font-weight:600;letter-spacing:0;background:var(--surface2);color:var(--muted);border-radius:4px;padding:2px 6px;}
.pill,.lvl{border-radius:4px;font-size:10px;line-height:1.6;padding:3px 7px;font-weight:600;}.pill.available,.pill.st-playable{background:var(--surface2);color:var(--text);}.lvl.lv1,.lvl.lv2,.lvl.lv3,.lvl.lv4{background:var(--surface2);color:var(--muted);}
.lvl,.pill{white-space:nowrap;}.card.locked,.locked,.badge.off{opacity:1;color:var(--muted);}.card.locked{background:var(--surface2);}.badge.off{filter:none;}
.badge{gap:12px;padding:16px;}.badge .ui-icon{color:var(--muted);}.badge small{font-size:12px;}.badge .e:empty,.emo:empty,.mav:empty{display:none;}
.msg{padding:12px 16px;border-radius:6px;font-size:13px;border:1px solid transparent;}.story,.task{font-size:14px;line-height:1.8;}.story{background:var(--surface2);border-radius:6px;}.task{font-weight:550;}
.coach{gap:12px;align-items:flex-start;}.coach-av{padding-top:4px;}.bubble{border:1px solid var(--line);border-radius:6px;background:var(--surface);box-shadow:none;font-size:14px;line-height:1.8;}.bubble::before{display:none;}.coach .who{font-size:11px;margin-bottom:6px;}
.bosscard .boss{display:none;}.bosscard{display:flex;flex-direction:column;gap:8px;text-align:left;}.arena{background:var(--surface2);border-radius:8px;padding:20px;}.fighter .boss{width:64px;height:64px;}.lives{font-size:12px;color:var(--muted);}
.desk-titlebar,.lab-toolbar{background:var(--surface2);color:var(--text);border-bottom:1px solid var(--line);font-size:12px;padding:14px 18px;}.desk-titlebar>span{display:none;}.desk-tabs{padding:12px;gap:8px;}.desk-tabs [aria-selected=true]{background:var(--surface2);border-color:var(--line);color:var(--text);font-weight:650;}.desk-message h3{font-size:14px;}.message-avatar{background:var(--surface2);color:var(--muted);border:1px solid var(--line);}.agenda-line,.ticket-row{font-size:13px;flex-wrap:wrap;}.ticket-row span{overflow-wrap:anywhere;}
.journal-filters{gap:10px;}.journal-filters input{min-width:160px;flex:1 1 240px;}.journal-filters select{flex:1 1 140px;max-width:250px;font-size:12px;}.journal-detail{padding:24px;top:90px;}.journal-entry{padding:16px 18px;gap:5px;}.journal-entry small{color:var(--muted);font-size:10px;}.journal-entry b{font-size:13px;}.journal-detail h2{font-size:1.1rem;}.journal-detail>p{font-size:13px;}.journal-list{border-radius:6px;}
.frow2{padding:12px;}.frow2:hover{border-color:#9baac0;}.frow2.st-playable{border-left-width:1px;}.fsec summary{font-size:13px;}.fsec p{font-size:13px;line-height:1.8;}.phase{padding:16px;}.phase b{font-size:12px;}
.tablewrap{border-radius:6px;max-width:100%;}table.res{font-size:12px;}table.res th{font-size:11px;font-weight:600;}table.res th,table.res td{padding:10px 12px;}.count{font-size:12px;}
.fab{left:auto;right:24px;bottom:20px;border:1px solid var(--line);border-radius:6px;display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--surface);color:var(--text);box-shadow:0 3px 12px #18223012;font-size:13px;}
.tutor{left:auto;right:24px;border-radius:8px;bottom:74px;box-shadow:0 10px 40px #18223020;}.tutor header{background:var(--surface);padding:16px;}.tutor header small{font-size:11px;}.tmsg{border-radius:6px;font-size:13px;}.tin textarea{min-width:0;}.toast{border-radius:6px;font-size:13px;box-shadow:0 4px 16px #18223020;}
.login{max-width:400px!important;border-radius:10px!important;padding:32px!important;margin:12vh auto!important;box-shadow:none;}.login h1{font-size:18px;letter-spacing:.04em;}.login h1 b{color:var(--text)!important;}.login label{font-size:12px;font-weight:600;}.login .lead{font-size:13px;}
.linux-terminal{border-radius:8px;}.linux-terminal .desk-titlebar{background:#172334;color:#dce5ef;border-color:#26374d;}.linux-terminal .btn{background:transparent;color:#dce5ef;border-color:#42536a;}.linux-terminal .linux-prompt .primary{background:#2457a6;border-color:#2457a6;}.linux-output{color:#dce5ef;}.linux-exercises{gap:16px;}
.job-node{border-radius:6px;background:var(--surface2);border-color:var(--line);}.job-node b{font-size:11px;overflow-wrap:anywhere;}.job-ok{background:var(--good-bg);border-color:var(--line);}.job-error{background:var(--bad-bg);border-color:var(--line);}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}.btn:focus-visible,.opt:focus-visible{outline-offset:3px;}
@media(min-width:761px){body.nav-collapsed nav.sidebar{width:72px;}body.nav-collapsed .desktop-workspace{margin-left:72px;}body.nav-collapsed nav.sidebar a{justify-content:center;padding:10px 6px;}}
@media(max-width:1439px){.desktop-workspace{grid-template-columns:minmax(0,1fr);}.context-panel{display:none;}.desktop-workspace main{max-width:1200px;margin:0 auto;}.dashboard-columns{grid-template-columns:minmax(0,1.6fr) minmax(220px,1fr);}}
@media(max-width:1050px){.dashboard-columns{grid-template-columns:1fr;}.dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr));}.job-chain{grid-template-columns:repeat(2,minmax(0,1fr));}.mission-journal{grid-template-columns:minmax(200px,.85fr) minmax(0,1.15fr);}}
@media(max-width:760px){body:has(.sidebar) .top{height:auto;min-height:110px;padding:12px 16px;gap:10px;}.hud{gap:10px!important;width:100%;}.hud .rank{margin-right:auto;}.hud .meter,.hud .goal{display:none;}.hud .iconbtn{width:32px;height:32px;}.menu-toggle{margin-left:auto;}nav.sidebar{top:110px;width:min(288px,85vw);padding-top:16px;}.desktop-workspace{margin-left:0;}.desktop-workspace main{padding:24px 16px 80px;}.dashboard-stats{grid-template-columns:1fr;gap:10px;}.stat-card{padding:16px;}.dashboard-columns .grid{grid-template-columns:1fr;}.dashboard-hero{padding:0 0 20px;}.dashboard-hero h1{font-size:1.65rem;}.dashboard-hero .row .btn{flex:1;}.mission-journal{grid-template-columns:1fr;}.journal-detail{position:static;padding:20px;}.journal-filters select{max-width:none;flex:1 1 45%;}.journal-list{max-height:300px;}.grid,.linux-exercises{grid-template-columns:1fr;}.fab{right:16px;bottom:16px;}.tutor{right:12px;left:12px;width:auto;}.login{margin:6vh 16px!important;}.coach{flex-direction:row;}.coach-av{display:none;}.threecol{grid-template-columns:1fr;}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important;}}
@media(prefers-color-scheme:dark){
 :root{--bg:#10151d;--surface:#171f2b;--surface2:#202b3a;--text:#e3e9f1;--muted:#a3b0c1;--line:#303e51;--accent:#91b6ed;--accent-ink:#12203a;--good:#9acbb1;--good-bg:#1a3028;--bad:#e4a2a2;--bad-bg:#332126;--warn:#d8be87;--warn-bg:#30291c;--star:#a3b0c1;color-scheme:dark;}
 body:has(.sidebar){background:var(--bg);--accent:#91b6ed;--accent-ink:#12203a;}.dashboard-hero{background:none;border-color:var(--line);}.hero-chip,.daily-number,.desk-tabs [aria-selected=true]{color:var(--text);}.desk-tabs [aria-selected=true]{background:var(--surface2);border-color:var(--line);}.journal-entry[aria-pressed=true]{background:var(--surface2);}.lvl.lv1,.lvl.lv2,.lvl.lv3,.lvl.lv4{background:var(--surface2);color:var(--muted);}.btn.primary:hover{background:#a5c4f3;color:#12203a;border-color:#a5c4f3;}a.card:hover,button.card:hover{background:var(--surface);}.iconbtn:hover,.btn:not(.primary):hover{background:var(--surface2);}.news-card small,.stat-card small,.stat-card span,.dashboard-hero p{color:var(--muted);}.job-node{background:var(--surface2);}.job-ok{background:var(--good-bg);}.job-error{background:var(--bad-bg);}.iconbtn:focus-visible{outline-color:var(--accent);}
}
@media print{.sidebar,.context-panel,.menu-toggle,.fab,.tutor,.noprint{display:none!important;}.desktop-workspace{margin:0;display:block;}.desktop-workspace main{padding:0;max-width:none;}.top{display:none!important;}}

@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .lvl.lv1,:root:not([data-theme="light"]) .lvl.lv2,:root:not([data-theme="light"]) .lvl.lv3,:root:not([data-theme="light"]) .lvl.lv4{background:var(--surface2);color:var(--muted);}}
.badge-status{display:block;margin-top:6px;font-weight:600;color:var(--muted);font-size:10px!important;}
.skill{grid-template-columns:minmax(160px,1fr) minmax(100px,1.5fr) auto;padding:10px 0;border-bottom:1px solid var(--line);gap:16px;font-size:13px;}
.learning-history summary{padding:6px;}.learning-history .ticket-row{font-size:12px;}.learning-history .ticket-row small{color:var(--muted);}
.page-loading{padding:24px 0;color:var(--muted);font-size:13px;}
@media(max-width:760px){.skill{grid-template-columns:minmax(0,1fr) auto;gap:8px;}.skill .sbar{grid-column:1/-1;grid-row:2;}.skill small{grid-column:2;grid-row:1;}.learning-history .ticket-row{display:grid;grid-template-columns:1fr;gap:4px;}}
@media(max-width:760px){body:has(nav.sidebar.expanded) .fab{visibility:hidden;}}
/* Colour belongs to the game space, never a stripe along the cards. */
:root{--accent:#3868c4;}
body:has(.sidebar){--accent:#3868c4;}
.dashboard-hero{background:linear-gradient(115deg,#edf3ff 0%,#edf8f5 65%,#fbf4e9 100%);padding:26px;border:1px solid var(--line);border-radius:12px;}
.dashboard-stats .stat-card:nth-child(1){background:#edf3ff;}.dashboard-stats .stat-card:nth-child(2){background:#edf7f3;}.dashboard-stats .stat-card:nth-child(3){background:#f5effb;}
.stat-card{border-color:var(--line);}.workspace-icon{color:#4574c7;}.workspace-link:nth-child(2n) .workspace-icon{color:#148b80;}
.scene-controls,.teaching-tabs{display:flex;align-items:center;flex-wrap:wrap;gap:8px;}.scene-controls label{margin-left:auto;font-size:12px;color:var(--muted);}.scene-controls select{padding:6px 10px;min-height:36px;}
.teaching-tabs{padding:12px;background:var(--surface2);border:1px solid var(--line);border-radius:8px 8px 0 0;}.teaching-tabs [aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
.scenebox{padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0;}.scenecv{aspect-ratio:900/330;max-height:410px;background:#edf3fc;border-color:#d8e4f4;border-radius:10px;}
.scene-progress{display:flex;gap:14px;align-items:center;margin:16px 0;}.scene-progress progress{width:100px;height:7px;flex:none;accent-color:#188f83;}.scene-caption{margin:0;color:var(--text);font-size:13px;line-height:1.7;}
.scene-steps{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 16px;}.scene-step{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);font:inherit;font-size:11px;cursor:pointer;}.scene-step span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--surface2);font-weight:650;}.scene-step[aria-current=step]{background:#edf3ff;color:#2457a6;border-color:#91b4ef;}.scene-step.complete span{background:#e0f1e9;color:#246548;}
.worldbox{box-shadow:0 8px 28px #233c6612;border-color:#c5d7ec;background:#edf3fc;max-height:none;}
@media(max-width:760px){.dashboard-hero{padding:20px;}.scene-controls .btn{flex:1 1 42%;}.scene-controls label{margin-left:0;}.scene-progress{align-items:flex-start;flex-direction:column;gap:8px;}.scenebox{padding:10px;}.scene-step{font-size:10px;padding:6px;}.scene-step span{width:18px;height:18px;}}
@media(prefers-color-scheme:dark){body:has(.sidebar){--accent:#91b6ed;}.dashboard-hero{background:linear-gradient(115deg,#1b2d49,#193733);border-color:var(--line);}.dashboard-stats .stat-card:nth-child(1){background:#1b2d49;}.dashboard-stats .stat-card:nth-child(2){background:#19372e;}.dashboard-stats .stat-card:nth-child(3){background:#302540;}.scene-step[aria-current=step]{background:#1b2d49;color:#a9c8f9;border-color:#4f73ab;}.scene-step.complete span{background:#19372e;color:#9acbb1;}}

/* Player identity and the expandable explorer share the existing neutral controls. */
.hud-player{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:inherit;font-weight:650;max-width:180px}
.hud-player>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.player-avatar{display:block;flex:none}
.profile-editor{margin:20px 0 28px;display:grid;gap:14px;max-width:780px}
.profile-heading{display:flex;align-items:center;gap:20px}
.profile-heading h2{margin-top:0}
.profile-editor>input{width:min(100%,420px);padding:12px;box-sizing:border-box}
.profile-editor fieldset{border:0;padding:0;margin:8px 0}
.profile-editor legend{font-weight:650;margin-bottom:12px}
.avatar-choices{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.avatar-choice{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 6px;background:var(--surface,#fff);color:inherit;border:2px solid var(--border,#dfe4eb);border-radius:12px;cursor:pointer;font:inherit}
.avatar-choice[aria-pressed="true"]{border-color:#367be2;background:#ecf3ff}
.avatar-choice[aria-pressed="true"]>span:after{content:' · choisi';font-size:11px}
.explorer-shell{min-width:0;background:var(--surface,#fff);border:1px solid var(--border,#dfe4eb);border-radius:12px;overflow:hidden}
.explorer-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px;border-bottom:1px solid var(--border,#dfe4eb)}
.explorer-views{display:flex;gap:4px;margin-right:auto}
.explorer-views button[aria-pressed="true"]{color:#fff;background:#2457a6;border-color:#2457a6}
.explorer-shell .worldbox{margin:0;border:0;border-radius:0;height:clamp(400px,56vh,640px);width:100%;position:relative;overflow:hidden;box-shadow:none}
.explorer-shell .worldbox canvas{display:block;width:100%;height:100%}
.explorer-modal{width:calc(100vw - 32px);height:calc(100dvh - 32px);max-width:none;max-height:none;padding:0;border:1px solid #8896a9;border-radius:14px;overflow:hidden;color:inherit;background:var(--surface,#fff)}
.explorer-modal::backdrop{background:rgba(17,28,44,.72)}
.explorer-modal .explorer-shell{height:100%;display:flex;flex-direction:column;border:0;border-radius:0}
.explorer-modal .worldbox{flex:1;height:auto;min-height:0}
.world3d-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.world3d-label{position:absolute;transform:translate(-50%,-100%);white-space:nowrap;font-size:11px;line-height:1.4;padding:3px 7px;border-radius:5px;color:#273950;background:rgba(255,255,255,.94);box-shadow:0 1px 4px #26394f18;font-weight:600}
.world3d-label.room-label{font-size:10px;background:rgba(255,255,255,.7);color:#43566b}
.world3d-label.player-label{background:#2457a6;color:#fff}
.world3d-ui{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;padding:12px}
.world3d-ui button{pointer-events:auto;box-shadow:0 1px 4px #26394f18;background:#fff;color:#273950}
.world3d-ui button.primary{background:#2457a6;color:#fff}
.world3d-camera{display:flex;gap:5px;flex-wrap:wrap;align-self:flex-end}
.world3d-camera .btn{padding:6px 10px;min-height:34px;font-size:12px}
.world3d-bottom{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px}
.world3d-location{padding:6px 10px;border-radius:6px;background:rgba(255,255,255,.95);color:#273950;font-size:12px;font-weight:650;max-width:55%}
.world3d-help{align-self:center;background:rgba(255,255,255,.95);color:#43566b;padding:4px 8px;border-radius:5px;margin-top:8px;font-size:11px}
.explorer-shell .wpop{z-index:10;max-height:75%;overflow:auto}
.explorer-shell button:focus-visible,.avatar-choice:focus-visible{outline:3px solid #367be2;outline-offset:2px}
@media(max-width:600px){
 .avatar-choices{grid-template-columns:repeat(3,minmax(0,1fr))}
 .profile-heading{gap:12px;align-items:flex-start}.profile-heading h2{font-size:19px}
 .hud-player{max-width:125px}.hud-player>span{max-width:85px}
 .explorer-modal{width:100vw;height:100dvh;border-radius:0;border:0}
 .explorer-toolbar{padding:8px;gap:5px}.explorer-toolbar .btn{font-size:12px;padding:8px}
 .world3d-camera{gap:3px}.world3d-camera .btn{padding:5px 7px}
 .world3d-ui{padding:8px}.world3d-label{font-size:10px;padding:2px 4px}.world3d-label.room-label{font-size:9px}
 .world3d-help{font-size:10px}.world3d-bottom{align-items:flex-end}.world3d-location{font-size:10px}
}
@media(prefers-color-scheme:dark){
 .avatar-choice{background:#202c3d;border-color:#435269}.avatar-choice[aria-pressed="true"]{background:#213b60;border-color:#79acff}
 .explorer-shell,.explorer-modal{background:#202c3d;border-color:#435269}.explorer-toolbar{border-color:#435269}
}
.explorer-colleagues{flex:none;border-top:1px solid var(--border,#dfe4eb);padding:10px 14px;background:var(--surface,#fff);max-height:28vh;overflow:auto}
.explorer-colleagues>summary{cursor:pointer;font-size:12px;font-weight:650;padding:3px 0}
.explorer-colleagues .wlist{margin:12px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.explorer-colleagues .wlist .btn{font-size:12px;flex:1 1 200px}
@media(prefers-color-scheme:dark){.explorer-colleagues{background:#202c3d;border-color:#435269}}

/* Operations console: status is always named; cards keep uniform neutral borders. */
.scheduler{margin:18px 0;min-width:0}
.scheduler-feedback:empty{display:none}.scheduler-feedback{margin:12px 0}
.scheduler-header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:20px;background:linear-gradient(120deg,#edf4ff,#eef8f5);border:1px solid #dce5ef;border-radius:10px}
.scheduler-header h2{margin:8px 0}.scheduler-header p{margin-bottom:0}
.scheduler-clock{display:grid;gap:4px;flex:none;text-align:right;color:#40526a}.scheduler-clock b{font-size:28px;color:#2457a6;font-variant-numeric:tabular-nums}.scheduler-clock small{font-size:11px}
.scheduler-time{margin:14px 0}.scheduler-picker{display:grid;gap:10px;margin:20px 0;padding:18px;background:var(--surface,#fff);border:1px solid var(--border,#dfe4eb);border-radius:10px}.scheduler-picker label{font-weight:650}.scheduler-picker select{width:100%;max-width:100%;padding:10px}
.scheduler-objectives{padding:12px 16px;background:var(--surface,#fff);border:1px solid var(--border,#dfe4eb);border-radius:10px;margin:16px 0}.scheduler-objectives h3{margin-top:0}.scheduler-objectives ul{padding:0;margin:0;list-style:none;display:grid;gap:8px}.scheduler-objectives li{display:flex;align-items:center;gap:10px;font-size:13px}.scheduler-objectives li>span{flex:1}.scheduler-objectives small{color:#65748a;white-space:nowrap}.scheduler-objectives .goal-done{color:#21755b}
.scheduler-layout{display:grid;grid-template-columns:minmax(180px,.85fr) minmax(0,1.55fr);gap:16px;align-items:start}
.scheduler-chain{display:grid;gap:9px}.scheduler-job{position:relative;text-align:left;padding:12px;border:1px solid #c7d1df;border-radius:9px;background:var(--surface,#fff);color:inherit;cursor:pointer;display:grid;gap:6px;font:inherit;font-size:12px;min-width:0}.scheduler-job:hover{background:#f3f6fb}.scheduler-job[aria-pressed="true"]{outline:2px solid #367be2;outline-offset:1px}.scheduler-job small{color:#586a81;line-height:1.5}.scheduler-job-title{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-weight:700;font-size:11px;overflow-wrap:anywhere}.scheduler-state{padding:2px 6px;border-radius:4px;background:#edf0f5;color:#536176;font-weight:600}.scheduler-job.ok .scheduler-state{background:#e0f3e9;color:#21684f}.scheduler-job.error .scheduler-state{background:#fce5e4;color:#9b3631}.scheduler-job.running .scheduler-state{background:#e0ecff;color:#2457a6}
.scheduler-detail{border:1px solid var(--border,#dfe4eb);border-radius:10px;padding:18px;min-width:0;background:var(--surface,#fff)}.scheduler-detail>h3:first-child{margin-top:0;overflow-wrap:anywhere}.scheduler-properties{display:grid;grid-template-columns:minmax(100px,.7fr) minmax(0,1.5fr);font-size:12px;gap:8px;margin:12px 0 20px}.scheduler-properties dt{color:#596b82}.scheduler-properties dd{margin:0;overflow-wrap:anywhere}.scheduler-detail .msg li{font-size:12px;line-height:1.6}
.scheduler-log{white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto;font-size:11px;line-height:1.7;min-height:85px}.scheduler-evidence{border:1px solid var(--border,#dfe4eb);border-radius:8px;padding:14px;margin:16px 0;background:var(--surface,#fff);min-width:0}.scheduler-evidence>summary{cursor:pointer;font-weight:650;font-size:13px}.scheduler-evidence .tablewrap{margin-top:14px}.scheduler-actions{margin:20px 0}.scheduler-action-row{display:flex;gap:10px;margin:12px 0;align-items:center}.scheduler-action-row select{flex:1;min-width:0;padding:10px;font-size:12px}.scheduler-submit{padding-top:10px}.scheduler .task{margin:16px 0}
@media(max-width:750px){.scheduler-layout{grid-template-columns:1fr}.scheduler-chain{grid-template-columns:repeat(2,minmax(0,1fr))}.scheduler-header{flex-direction:column;padding:16px}.scheduler-clock{text-align:left;grid-template-columns:1fr;gap:3px}.scheduler-action-row{flex-direction:column;align-items:stretch}.scheduler-action-row select{width:100%}.scheduler-objectives small{font-size:10px}.scheduler-job-title{font-size:10px}.scheduler-job{padding:10px}.scheduler-clock b{font-size:24px}}
@media(prefers-color-scheme:dark){.scheduler-header{background:linear-gradient(120deg,#233751,#223f3b);border-color:#435269}.scheduler-clock,.scheduler-properties dt,.scheduler-job small{color:#bccadd}.scheduler-clock b{color:#92b9ff}.scheduler-job{background:#202c3d;border-color:#52627b}.scheduler-job:hover{background:#28364c}.scheduler-detail,.scheduler-evidence,.scheduler-objectives,.scheduler-picker{background:#202c3d;border-color:#435269}.scheduler-objectives .goal-done{color:#90d8b7}.scheduler-objectives small{color:#bccadd}}
.scheduler-feedback:not(:empty){position:sticky;top:var(--scheduler-offset,78px);z-index:8;box-shadow:0 3px 12px #18223012}
.scheduler [data-control]:focus-visible{outline:3px solid #367be2;outline-offset:2px}

/* Keep the navigation toggle beside the brand, independent of account width. */
body:has(.sidebar) .top{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:24px;}
.header-navigation{display:flex;align-items:center;gap:14px;min-width:0;}
.header-navigation .menu-toggle{margin:0;flex:none;min-height:36px;}
.header-navigation .brand{flex:none;}
body:has(.sidebar) .top .hud{justify-content:flex-end;flex-wrap:nowrap;gap:10px;min-width:0;width:auto;}
.top .hud>span,.top .hud>.iconbtn{flex:none;white-space:nowrap;}
.top .hud-player{min-width:0;max-width:160px;}
@media(min-width:761px) and (max-width:1250px){.top .hud .goal,.top .hud .meter,.top .hud .hud-streak{display:none;}}
@media(min-width:761px) and (max-width:1000px){.top .hud .rank{display:none;}}
@media(max-width:760px){
 body:has(.sidebar) .top{grid-template-columns:minmax(0,1fr);height:110px;min-height:110px;row-gap:8px;padding:12px 16px;align-content:center;}
 .header-navigation{gap:12px;}
 body:has(.sidebar) .top .hud{width:100%;gap:8px!important;justify-content:flex-end;}
 .top .hud .rank,.top .hud .hud-streak{display:none;}
 .top .hud-player{flex:1;max-width:none;}
 .top .hud-player>span{max-width:none;}
 .top .hud>.iconbtn{width:32px;height:32px;}
 .top .hud-xp{font-size:11px;}
}

/* éléments terminés : bien visibles (la règle neutre plus haut les rendait identiques aux autres) */
a.card.done, a.card.lesson.done { background: var(--good-bg); border: 2px solid var(--good); }
a.card.done h3 { color: var(--good); }
.done-pill { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 8px; padding: 2px 10px; border-radius: 99px; background: var(--good); color: var(--bg, #fff); font-size: 12px; font-weight: 700; }
.done-pill::before { content: "\2713"; font-weight: 800; }
.next-pill { display: inline-flex; margin-bottom: 8px; padding: 2px 10px; border-radius: 99px; background: var(--accent); color: var(--accent-ink); font-size: 12px; font-weight: 700; }
progress { width: 100%; height: 10px; }

/* apprentissage mis en avant avant les missions */
.learning-path { margin: 0 0 18px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.learning-path h2 { margin: 0 0 10px; font-size: 16px; }
.path-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.path-step { display: flex; gap: 10px; align-items: center; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; text-decoration: none; color: inherit; }
.path-step b { display: inline-flex; width: 28px; height: 28px; align-items: center; justify-content: center; border-radius: 50%; background: var(--surface2); }
.path-step span { display: grid; } .path-step small { color: var(--muted); }
.path-step.now { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 25%, transparent); } .path-step.now b { background: var(--accent); color: var(--accent-ink); }
.path-step.done { border-color: var(--good); background: var(--good-bg); } .path-step.done b { background: var(--good); color: var(--bg); }
.lesson-advice { margin: 12px 0; padding: 12px 14px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface2); display: grid; gap: 8px; }
.lesson-advice.todo { border-color: var(--accent); } .lesson-advice.done { border-color: var(--good); background: var(--good-bg); }
@media (max-width: 760px) { .path-steps { grid-template-columns: 1fr; } }

/* Ma banque : ville 3D et tableau de bord */
.bank-layout { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 16px; align-items: start; }
.bank3d { position: relative; min-height: 560px; height: 62vh; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #cfe6ff; }
.bank3d canvas { display: block; width: 100%; height: 100%; }
.bank-panel { display: grid; gap: 12px; }
.bank-card { padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); display: grid; gap: 6px; }
.bank-card h3 { margin: 0; } .bank-card p { margin: 0; }
.bank-cash { font-size: 30px; line-height: 1.1; }
.bank-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; counter-reset: s; }
.bank-steps li { counter-increment: s; display: flex; gap: 8px; align-items: center; color: var(--muted); font-size: 13px; }
.bank-steps li::before { content: counter(s); display: inline-flex; width: 20px; height: 20px; align-items: center; justify-content: center; border-radius: 50%; background: var(--surface2); font-size: 11px; font-weight: 700; }
.bank-steps li.done { color: var(--good); } .bank-steps li.done::before { background: var(--good); color: var(--bg); content: "\2713"; }
.bank-steps li.now { color: var(--text); font-weight: 700; } .bank-steps li.now::before { background: var(--accent); color: var(--accent-ink); }
.bank-problems { margin: 6px 0 0; padding-left: 18px; font-size: 13px; } .bank-problems li.ok { color: var(--good); } .bank-problems li.ko { color: var(--bad); }
.bank-card.quest { border-color: var(--accent); } .bank-card.quest.flash { box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 45%, transparent); }
.opt-line { display: block; padding: 4px 0; }
.bank-up { display: flex; justify-content: space-between; gap: 10px; align-items: center; padding: 6px 0; border-top: 1px solid var(--line); } .bank-up small { display: block; }
.world3d-label.bank-warn { background: #b42318; color: #fff; } .world3d-label.bank-ok { background: #1a7f4b; color: #fff; }
.world3d-label.bank-gain { background: #f2c230; color: #3a2a00; font-weight: 700; }
.world3d-label.npc-label { background: #c92a2a; color: #fff; }
.world3d-talk { position: absolute; left: 50%; bottom: 44px; transform: translateX(-50%); pointer-events: auto; }
.bank-banner { position: absolute; top: 12px; left: 50%; transform: translateX(-50%); padding: 8px 16px; border-radius: 99px; background: #1a7f4b; color: #fff; font-weight: 700; }
@media (max-width: 1100px) { .bank-layout { grid-template-columns: 1fr; } .bank3d { min-height: 420px; } }

.bank3d [hidden] { display: none !important; }

/* Ma banque : objectif explicite, aide, dialogue de Koffi */
.bank-goal { margin: 10px 0 12px; padding: 14px 16px; border: 2px solid var(--accent); border-radius: 12px; background: var(--surface); display: grid; gap: 6px; }
.bank-goal strong { font-size: 18px; } .bank-goal p { margin: 0; max-width: 80ch; }
.bank-help { margin: 0 0 12px; padding: 10px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface2); }
.bank-help summary { cursor: pointer; font-weight: 700; }
.bank-howto { margin: 8px 0; padding-left: 20px; display: grid; gap: 6px; max-width: 90ch; }
.bank-stack { display: grid; gap: 8px; }
.bank-hud { position: absolute; top: 56px; left: 12px; max-width: 55%; padding: 7px 12px; border-radius: 10px; background: rgba(36, 87, 166, .94); color: #fff; font-size: 13px; font-weight: 600; pointer-events: none; }
.bank-dialog { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(480px, 92%); max-height: 88%; overflow: auto; padding: 12px; border-radius: 14px; background: var(--surface); color: var(--text); border: 2px solid var(--accent); box-shadow: 0 8px 30px #0006; z-index: 4; }
.bank-dialog-head { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; } .bank-dialog-head .iconbtn { margin-left: auto; }
.bank-dialog .bank-card { border: 0; padding: 0; background: transparent; }

/* Ma banque : plan, plein écran, conseils */
.bank3d.expanded { position: fixed; inset: 0; z-index: 100; height: 100vh; min-height: 0; border-radius: 0; }
.bank3d:fullscreen { height: 100vh; width: 100vw; border-radius: 0; }
.bank-cash-hud { top: 94px; background: rgba(26, 127, 75, .94); }
.bank-mini-wrap { position: absolute; left: 12px; bottom: 44px; display: grid; gap: 2px; padding: 5px; border-radius: 8px; background: rgba(255, 255, 255, .92); color: #273950; pointer-events: auto; }
.bank-mini { display: block; width: 176px; height: 122px; border-radius: 4px; cursor: pointer; } .bank-mini-wrap small { font-size: 10px; text-align: center; }
.world3d-label.npc-info { background: #1d5fae; color: #fff; }
.bank3d .bank-dialog .row { display: flex; gap: 8px; margin-top: 8px; }

/* consigne en cours rappelée sur les pages d'aide */
.task-reminder { margin: 0 0 14px; padding: 12px 14px; border: 2px solid var(--accent); border-radius: 12px; background: var(--surface); display: grid; gap: 6px; }
.task-reminder p { margin: 0; max-width: 85ch; } .context-task { display: grid; gap: 4px; margin: 8px 0; }

/* menu : libellés explicatifs, pastilles de progression, sous-liste des exercices */
nav.sidebar a { gap: 12px; } nav.sidebar a > span { flex: 1; min-width: 0; line-height: 1.25; }
nav.sidebar a small { display: block; font-size: 11px; font-weight: 400; color: var(--muted); }
.nav-badge { flex: none; font-style: normal; font-size: 11px; padding: 1px 8px; border-radius: 99px; background: var(--surface2); color: var(--muted); white-space: nowrap; }
.nav-badge:empty { display: none; }
nav.sidebar a.nav-next .nav-badge { background: var(--accent); color: var(--accent-ink); font-weight: 700; }
nav.sidebar a.nav-done .nav-badge { background: var(--good-bg); color: var(--good); }
.nav-sub { margin: 0 0 4px 30px; font-size: 12px; } .nav-sub summary { cursor: pointer; color: var(--muted); padding: 4px 6px; }
.nav-sub a { padding: 6px 10px !important; font-size: 12px; }
body.nav-collapsed .nav-badge, body.nav-collapsed .nav-sub, body.nav-collapsed nav.sidebar a small { display: none; }

nav.sidebar a small.nav-next-hint { color: var(--accent); font-weight: 700; }
.nav-sub a { padding: 4px 8px !important; min-height: 0 !important; line-height: 1.2; }
.nav-badge { margin-left: 4px; }

/* Revue UX du menu : cibles >= 24px, repères non uniquement colorés, focus visible, libellés lisibles */
.nav-section { font-size: 11px; margin: 18px 0 6px; }
.nav-sub a { min-height: 28px !important; display: flex; align-items: center; }
.nav-sub summary { min-height: 28px; display: flex; align-items: center; }
nav.sidebar a:focus-visible, .nav-sub summary:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
nav.sidebar a.nav-done .nav-badge::before { content: "\2713\00a0"; }
.nav-badge { padding: 1px 6px; margin-left: 0; font-variant-numeric: tabular-nums; }
nav.sidebar a > span { overflow-wrap: anywhere; }
nav.sidebar a { gap: 10px; padding-left: 10px; padding-right: 8px; }

/* Navigation: stable groups, searchable pages and a separate account area. */
body:has(.sidebar){--sidebar-width:248px;}
body.nav-collapsed:has(.sidebar){--sidebar-width:72px;}
body:has(.sidebar) .desktop-workspace{margin-left:var(--sidebar-width);}
nav.sidebar{width:var(--sidebar-width);top:var(--navigation-top,68px);padding:0;gap:0;overflow:visible;}
.nav-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 18px 12px;flex:none;}
.nav-heading b{display:block;font-size:13px;line-height:1.5;}.nav-heading small{display:block;font-size:11px;color:var(--muted);}
#nav-close{display:none;}
.nav-search{padding:0 12px 14px;flex:none;}
.nav-search input{width:100%;min-width:0;font-size:12px!important;min-height:38px;padding:8px 10px!important;}
.nav-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 10px 16px;scrollbar-width:thin;}
.nav-scroll>a{margin:0 0 8px;}
.nav-group{margin:0 0 14px;}
.nav-group .nav-section{font-size:10px;font-weight:650;letter-spacing:.09em;line-height:1.5;padding:0 10px;margin:16px 0 6px;color:var(--muted);}
nav.sidebar a{gap:10px;min-height:42px;padding:9px 10px;font-size:13px;line-height:1.4;margin:2px 0;}
nav.sidebar a>span{overflow-wrap:normal;line-height:1.4;}
nav.sidebar a small{margin-top:2px;font-size:10px;line-height:1.4;}
nav.sidebar a.on{font-weight:650;background:var(--surface2);box-shadow:none;color:var(--text);}
nav.sidebar a.on::after{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;flex:none;}
nav.sidebar a.nav-parent-active{font-weight:600;color:var(--text);}
nav.sidebar a[hidden],.nav-group[hidden],.nav-sub[hidden],.nav-empty[hidden]{display:none!important;}
.nav-sub{margin:0 0 6px 28px;padding:0;}
.nav-sub summary{display:flex;align-items:center;gap:6px;padding:7px 8px;min-height:34px;color:var(--muted);font-size:11px;list-style:none;cursor:pointer;}
.nav-sub summary::-webkit-details-marker{display:none;}
.nav-sub summary::before{content:'';width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);margin-right:3px;flex:none;}
.nav-sub[open]>summary::before{transform:rotate(45deg);}
.nav-sub-links{border-left:1px solid var(--line);margin:2px 0 5px 10px;padding:0 0 0 6px;}
.nav-sub .nav-sub-links a{min-height:36px!important;padding:7px 10px!important;font-size:12px;line-height:1.5;}
.nav-footer{flex:none;padding:10px;border-top:1px solid var(--line);background:var(--surface);}
.nav-footer .sidebar-foot{display:block;padding:8px 10px 2px;margin:0;font-size:9px;line-height:1.5;}
.nav-empty{font-size:12px;line-height:1.7;color:var(--muted);padding:12px 10px;}
.nav-backdrop{position:fixed;inset:var(--navigation-top,110px) 0 0;background:rgba(18,29,45,.4);z-index:39;}
.nav-backdrop[hidden]{display:none;}
@media(min-width:761px){
 body.nav-collapsed nav.sidebar{width:72px;}
 body.nav-collapsed .nav-heading,body.nav-collapsed .nav-search,body.nav-collapsed .nav-section,body.nav-collapsed .nav-footer .sidebar-foot{display:none;}
 body.nav-collapsed .nav-scroll{padding:12px 10px;}
 body.nav-collapsed .nav-group{margin-bottom:10px;padding-top:8px;border-top:1px solid var(--line);}
 body.nav-collapsed nav.sidebar a{min-height:42px;justify-content:center;padding:10px 6px;}
 body.nav-collapsed nav.sidebar a.on::after{display:none;}
 body.nav-collapsed .nav-footer{padding:8px 10px;}
}
@media(max-width:760px){
 body:has(.sidebar){--sidebar-width:0px;}
 nav.sidebar{top:var(--navigation-top,110px);width:min(320px,calc(100vw - 40px));z-index:40;box-shadow:8px 0 24px #17233420;}
 nav.sidebar.expanded{display:flex;}
 body.nav-mobile-open{overflow:hidden;}
 #nav-close{display:inline-flex;}
 .nav-heading{padding:14px 16px 10px;}
 .nav-search{padding-bottom:10px;}
 .nav-sub .nav-sub-links a{min-height:40px!important;}
}

/* Expanded learning catalogue: topics, progress and traceable course references. */
.learning-progress{display:flex;align-items:center;gap:16px;margin:16px 0;font-size:13px;}.learning-progress progress{width:min(320px,55%);height:7px;accent-color:var(--accent);}
.course-filters{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(180px,1fr) minmax(140px,.8fr);gap:10px;margin:24px 0 10px;}.course-filters input,.course-filters select{width:100%;min-width:0;font-size:13px;}
.course-path{margin:14px 0;border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden;}.course-path>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;list-style:none;cursor:pointer;padding:18px 20px;min-height:64px;}.course-path>summary::-webkit-details-marker{display:none;}.course-path summary h2{font-size:16px;line-height:1.5;margin:0;}.course-path summary small{font-size:12px;color:var(--muted);}.course-path-chevron{display:flex;color:var(--muted);flex:none;}.course-path[open] .course-path-chevron{transform:rotate(90deg);}.course-path[open]>summary{border-bottom:1px solid var(--line);}
.course-grid{padding:16px;margin:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}.course-card{min-width:0;display:flex;flex-direction:column;gap:10px;padding:18px;}.course-card h3{margin:0;line-height:1.5;}.course-card p{margin:0;flex:1;font-size:12px;}.course-card-meta{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;flex-wrap:wrap;font-size:10px;color:var(--muted);}.course-card .done-pill,.course-card .next-pill{position:static;display:inline-block;font-size:10px;padding:2px 7px;white-space:nowrap;}.course-card .count{font-size:11px;}.course-empty{padding:24px;}
.lesson-references,.learning-coverage{border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin:16px 0;background:var(--surface);}.lesson-references summary,.learning-coverage>summary{font-size:13px;font-weight:600;cursor:pointer;}.lesson-references li{margin:8px 0;font-size:12px;}.lesson-references .btn{font-size:11px;}.learning-coverage h3{font-size:14px;margin-top:20px;}.learning-coverage li{font-size:12px;margin:10px 0;line-height:1.8;}.learning-coverage li small{color:var(--muted);}.learning-coverage li a{display:inline-block;padding:0 4px;}
@media(max-width:1200px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:760px){.course-filters{grid-template-columns:1fr;}.course-grid{grid-template-columns:1fr;padding:12px;}.course-path>summary{padding:14px;}.course-path summary h2{font-size:14px;}.learning-progress{gap:10px;}.lesson-references .row{align-items:stretch;flex-direction:column;}}

/* Ma banque : ville et console de direction. */
.bank-page-head h1 { margin:4px 0 6px; max-width:28ch; text-wrap:balance; }
.bank-page-head p { margin:0 0 18px; color:var(--muted); }
.bank-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:16px 0; }
.bank-metrics > div { display:grid; gap:7px; padding:16px; background:var(--surface); border:1px solid var(--line); border-radius:12px; }
.bank-metrics strong { font-size:25px; line-height:1.15; font-variant-numeric:tabular-nums; }
.bank-metrics small { color:var(--muted); }
.bank-goal { grid-template-columns:auto minmax(0,1fr) auto; align-items:center; border:1px solid var(--line); padding:12px 16px; }
.bank-goal strong { font-size:15px; }
.bank-workspace { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(340px,1fr); gap:18px; align-items:start; }
.bank-city { min-width:0; position:sticky; top:80px; }
.bank-city .bank3d { height:70vh; min-height:590px; }
.bank-console { min-width:0; }
.bank-sections { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; margin-bottom:12px; }
.bank-sections .btn[aria-pressed="true"], .bank-site-picker .btn[aria-pressed="true"] { background:var(--accent); color:var(--accent-ink); border-color:var(--accent); }
.bank-locations,.bank-site-picker { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0; }
.bank-card { padding:18px; gap:10px; }
.bank-card h2 { font-size:20px; margin:0; }
.bank-card.quest { border-color:var(--line); }
.bank-options { display:grid; gap:10px; }
.bank-option { display:grid; gap:7px; padding:14px; border:1px solid var(--line); border-radius:10px; background:var(--surface2); }
.bank-option h3 { font-size:15px; }
.bank-option p,.bank-option small { font-size:13px; }
.bank-option .btn { margin-top:3px; justify-self:start; }
.bank-objective { display:grid; grid-template-columns:1fr auto; gap:6px; padding:8px 0; }
.bank-objective progress { grid-column:1; width:100%; accent-color:var(--accent); }
.bank-objective small { grid-column:2; grid-row:2; color:var(--muted); }
.bank-log { padding:12px 0; border-top:1px solid var(--line); }
.bank-log small { color:var(--muted); }
.bank-flow { display:grid; gap:10px; padding-left:22px; }
.bank-city .bank-hud:not(.bank-cash-hud) { display:none; }
.bank-city .bank-cash-hud { top:60px; max-width:calc(100% - 24px); background:#173e60ee; }
.bank-city .world3d-help { max-width:100%; font-size:11px; }
@media(min-width:1500px) { .bank-workspace { grid-template-columns:minmax(0,1.7fr) 430px; } }
@media(max-width:1050px) { .bank-workspace { grid-template-columns:1fr; } .bank-city { position:static; } .bank-city .bank3d { min-height:500px; height:65vh; } .bank-sections { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media(max-width:600px) { .bank-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; } .bank-metrics > div { padding:12px; } .bank-metrics strong { font-size:21px; } .bank-goal { grid-template-columns:1fr; } .bank-goal .btn { justify-self:start; } .bank-city .bank3d { height:560px; min-height:0; } .bank-sections { grid-template-columns:repeat(2,minmax(0,1fr)); } .bank-city .bank-mini-wrap { display:none; } }

.desktop-workspace:has(.bank-workspace) { grid-template-columns:minmax(0,1fr); }
.desktop-workspace:has(.bank-workspace) > .context-panel { display:none; }
.desktop-workspace main:has(.bank-workspace) { max-width:none; width:100%; box-sizing:border-box; }
.bank-workspace .bank-city .bank-cash-hud { top:auto; bottom:40px; left:auto; right:12px; max-width:60%; font-size:11px; }
.bank-camera-tools { position:relative; }
.bank-camera-tools summary { cursor:pointer; padding:8px 12px; border:1px solid #d7dfe9; border-radius:6px; background:#fff; color:#273950; font-size:12px; font-weight:600; }
.bank-camera-tools > div { display:grid; grid-template-columns:repeat(2,1fr); gap:6px; position:absolute; top:42px; right:0; padding:10px; min-width:210px; border:1px solid var(--line); border-radius:10px; background:var(--surface); box-shadow:0 8px 24px #142c4822; }
.bank-camera-tools > div .btn:last-child { grid-column:1/-1; }
.bank3d .world3d-ui { z-index:2; }
.bank3d .bank-dialog { z-index:5; }
