/* Magic UI patterns, adapted to the academy's native components:
   Dock, Shimmer Button, Shine Border, Dot Pattern, Animated Circular Progress,
   Number Ticker, Blur Fade / Animated List, Scroll Progress and Confetti. */
:root[data-theme] .experience-ring{position:relative;width:154px;height:154px;background:none!important;box-shadow:none!important;display:grid;place-items:center;isolation:isolate;margin-inline:auto}
:root[data-theme] .experience-ring:before,:root[data-theme] .experience-ring:after{display:none}
:root[data-theme] .experience-ring>svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
:root[data-theme] .experience-ring circle{fill:none;stroke-width:7}
:root[data-theme] .ring-track{stroke:var(--ui-border)}
:root[data-theme] .ring-value{stroke:#2563eb;stroke-linecap:round;animation:ring-draw 900ms cubic-bezier(.2,.8,.2,1) both}
:root[data-theme] .experience-ring strong{position:relative;font-size:2.3rem;font-weight:550;letter-spacing:-.06em;color:var(--ui-text);font-variant-numeric:tabular-nums}
:root[data-theme] .experience-ring small{font-size:.85rem;letter-spacing:0;color:var(--ui-muted);margin-left:4px}
:root[data-theme] [data-count]{font-variant-numeric:tabular-nums}
:root[data-theme] .progress-card:has(.experience-ring){background:radial-gradient(var(--ui-border) .8px,transparent .8px),var(--ui-surface);background-size:17px 17px}
:root[data-theme] .progress-card:has(.experience-ring)>:not(.experience-ring){position:relative}
/* A short highlight when a member chooses a primary action. */
:root[data-theme] :is(.journey-cta,.progress-card>.btn,.watch-controls>.btn){position:relative;overflow:hidden;isolation:isolate}
:root[data-theme] :is(.journey-cta,.progress-card>.btn,.watch-controls>.btn):before{content:'';position:absolute;inset:-60%;pointer-events:none;background:linear-gradient(110deg,transparent 40%,#ffffff45 49%,transparent 58%);transform:translateX(-100%);z-index:2}
:root[data-theme] :is(.journey-cta,.progress-card>.btn,.watch-controls>.btn):is(:hover,:focus-visible):before{animation:button-shimmer 800ms ease-out}
/* Fine luminous edges on the member passport and module progress panel. */
:root[data-theme] :is(.account-passport,.progress-card){position:relative;isolation:isolate}
:root[data-theme] :is(.account-passport,.progress-card):after{content:'';position:absolute;inset:-1px;border-radius:inherit;border:1px solid transparent;pointer-events:none;background:linear-gradient(120deg,transparent 30%,#8bb4ff 47%,#2563eb 53%,transparent 70%) border-box;background-size:300% 100%;mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);mask-composite:exclude;opacity:0}
:root[data-theme] :is(.account-passport,.progress-card):is(:hover,:focus-within):after{opacity:.7;animation:edge-light 2200ms ease-out}
:root[data-theme] .module-lesson.motion-revealed,:root[data-theme] .row-item.motion-revealed{animation:academy-list-in 400ms cubic-bezier(.2,.8,.2,1) var(--reveal-delay,0ms) both}
:root[data-theme] .quick-dialog[open]{animation:command-arrive 200ms ease-out}
:root[data-theme] .quick-dialog::backdrop{background:#0d122075;backdrop-filter:blur(4px)}
:root[data-theme] .academy-dock{display:none}
:root[data-theme] #completion-card{position:relative}
:root[data-theme] .completion-confetti{position:absolute;top:40%;left:50%;pointer-events:none;z-index:5}
:root[data-theme] .completion-confetti i{position:absolute;width:5px;height:9px;border-radius:1px;background:#2563eb;animation:academy-confetti 1100ms ease-out var(--confetti-delay) both}
:root[data-theme] .completion-confetti i:nth-child(3n){background:#9abaff}
:root[data-theme] .completion-confetti i:nth-child(3n+1){background:#c6a05e}
@supports(animation-timeline:scroll()){
 :root[data-theme] .shell:has(.reading):before{content:'';position:fixed;top:0;left:248px;right:0;height:3px;background:#2563eb;transform-origin:left;z-index:80;pointer-events:none;animation:reading-progress linear both;animation-timeline:scroll(root block)}
}
@media(max-width:760px){
 :root[data-theme] .shell:has(.reading):before{left:0}
 :root[data-theme] .academy-dock{display:flex;align-items:center;justify-content:center;gap:4px;position:fixed;z-index:35;bottom:max(12px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);padding:7px;max-width:calc(100% - 28px);width:304px;border:1px solid var(--ui-border);border-radius:20px;background:var(--ui-surface);box-shadow:0 8px 30px #0d122026,0 1px 3px #0d12200d}
 :root[data-theme] .academy-dock :is(a,button){display:flex;flex:1;min-width:0;min-height:52px;align-items:center;justify-content:center;flex-direction:column;gap:4px;padding:6px 10px;border:0;border-radius:13px;background:none;color:var(--ui-muted);font:inherit;transition:background 180ms,transform 180ms,color 180ms;text-decoration:none}
 :root[data-theme] .academy-dock svg{width:20px;height:20px;transition:transform 180ms}
 :root[data-theme] .academy-dock span{font-size:.6rem;line-height:1.3;font-weight:600}
 :root[data-theme] .academy-dock [aria-current=page]{color:var(--ui-blue);background:var(--ui-bluewash)}
 :root[data-theme] .academy-dock :is(a,button):is(:hover,:focus-visible){background:var(--ui-hover);color:var(--ui-blue)}
 :root[data-theme] .academy-dock :is(a,button):active svg{transform:scale(.87)}
 :root[data-theme] .shell .page{padding-bottom:calc(106px + env(safe-area-inset-bottom))}
 :root[data-theme] body:has(.sidebar.open) .academy-dock{visibility:hidden}
 :root[data-theme] #toast{bottom:calc(95px + env(safe-area-inset-bottom))}
}
@keyframes ring-draw{from{stroke-dasharray:0 100}to{stroke-dasharray:var(--ring-value) 100}}
@keyframes button-shimmer{to{transform:translateX(100%)}}
@keyframes academy-list-in{from{opacity:.3;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes command-arrive{from{opacity:.4;transform:translateY(8px) scale(.985);filter:blur(3px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes reading-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes academy-confetti{0%{opacity:0;transform:translate(0,0)}15%{opacity:1}65%{opacity:1}100%{opacity:0;transform:translate(var(--confetti-x),var(--confetti-y)) rotate(var(--confetti-turn))}}
@media(prefers-reduced-motion:reduce){
 :root[data-theme] .ring-value,:root[data-theme] :is(.module-lesson,.row-item).motion-revealed,:root[data-theme] .quick-dialog[open],:root[data-theme] .completion-confetti i{animation:none!important}
 :root[data-theme] :is(.journey-cta,.progress-card>.btn,.watch-controls>.btn):before,:root[data-theme] :is(.account-passport,.progress-card):after,:root[data-theme] .shell:has(.reading):before{display:none}
 :root[data-theme] .academy-dock :is(a,button,svg){transition:none}
}
/* Forecast desk: Bento Grid, Backlight and Interactive Grid patterns. */
:root[data-theme] .forecast-studio{position:relative;isolation:isolate;border:1px solid var(--ui-border);border-radius:22px;background:var(--ui-surface);margin:24px 0 30px;padding:28px;box-shadow:0 16px 48px #17294c0b;overflow:hidden}
:root[data-theme] .forecast-studio:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(500px circle at var(--spot-x,10%) var(--spot-y,0%),#2563eb14,transparent 75%)}
:root[data-theme] .forecast-studio-head{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:24px}
:root[data-theme] .forecast-studio-head .eyebrow{font-size:.75rem;letter-spacing:.12em;color:var(--ui-blue);margin-bottom:10px}
:root[data-theme] .forecast-studio h2{font-size:clamp(1.4rem,2.2vw,2rem);font-weight:550;letter-spacing:-.04em;line-height:1.2;color:var(--ui-text)}
:root[data-theme] .forecast-reference{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:99px;border:1px solid var(--ui-border);background:var(--ui-surface);font-size:.75rem;color:var(--ui-muted);flex:none}
:root[data-theme] .forecast-picker{display:flex;align-items:center;gap:16px;font-size:.875rem;color:var(--ui-muted);margin-bottom:22px}
:root[data-theme] .forecast-picker select{flex:1;min-width:0;max-width:720px;font-size:1rem;min-height:48px;border:1px solid var(--ui-border);background:var(--ui-surface);color:var(--ui-text);border-radius:10px;padding:10px 36px 10px 12px;text-overflow:ellipsis}
:root[data-theme] .forecast-bento{display:grid;grid-template-columns:minmax(190px,.9fr) minmax(240px,1.45fr) minmax(190px,1fr);gap:16px}
:root[data-theme] .forecast-number-tile{position:relative;overflow:hidden;isolation:isolate;padding:24px;border-radius:16px;background:#102547;color:#fff;display:flex;flex-direction:column;min-width:0}
:root[data-theme] .forecast-number-tile:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(125deg,#2563eb55,transparent 65%),linear-gradient(#aac8ff12 1px,transparent 1px),linear-gradient(90deg,#aac8ff12 1px,transparent 1px);background-size:auto,24px 24px,24px 24px;mask-image:linear-gradient(#000,transparent)}
:root[data-theme] .forecast-event-label{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:30px;font-size:.75rem}
:root[data-theme] .forecast-number-tile .news-impact{color:#d9e6ff;font-size:.75rem}
:root[data-theme] .forecast-number-label{color:#bed2f5;font-size:.875rem}
:root[data-theme] .forecast-number{font-size:clamp(2.6rem,4vw,4.1rem);line-height:1.25;letter-spacing:-.06em;font-weight:550;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
:root[data-theme] .forecast-previous{display:flex;gap:9px;flex-wrap:wrap;font-size:.875rem;margin-top:12px;color:#c1d5f6;align-items:center}
:root[data-theme] .forecast-previous b{color:white;font-weight:500;font-variant-numeric:tabular-nums}
:root[data-theme] .forecast-number-tile p{padding-top:24px;margin-top:auto;font-size:1rem;line-height:1.6;color:#d5e2f8}
:root[data-theme] .forecast-explanation{padding:22px 8px;min-width:0}
:root[data-theme] .forecast-case-index{font-size:.75rem;font-weight:600;color:var(--ui-blue);letter-spacing:.08em}
:root[data-theme] .forecast-explanation h3{font-size:1.35rem;line-height:1.3;letter-spacing:-.025em;color:var(--ui-text);margin:14px 0}
:root[data-theme] .forecast-explanation p{font-size:1rem;line-height:1.65;color:var(--ui-muted)}
:root[data-theme] .forecast-explanation .forecast-priced{padding-left:14px;border-left:2px solid #2563eb;margin-top:18px;color:var(--ui-text)}
:root[data-theme] .forecast-near-help{margin-top:18px;color:var(--ui-muted)}
:root[data-theme] .forecast-near-help summary{font-size:.875rem;cursor:pointer;color:var(--ui-blue)}
:root[data-theme] .forecast-near-help p{margin-top:12px}
:root[data-theme] .forecast-outcomes{display:grid;gap:12px;min-width:0}
:root[data-theme] .forecast-outcomes article{background:var(--ui-subtle);padding:20px;border:1px solid var(--ui-border);border-radius:14px}
:root[data-theme] .forecast-outcomes article>span{display:flex;justify-content:space-between;align-items:center;font-size:.75rem;font-weight:600;letter-spacing:.07em;color:var(--ui-muted);margin-bottom:16px}
:root[data-theme] .forecast-outcomes article>span>b{color:var(--ui-blue);font-size:1.4rem;line-height:1}
:root[data-theme] .forecast-outcomes strong{font-size:1rem;font-weight:550;color:var(--ui-text)}
:root[data-theme] .forecast-outcomes p{margin-top:8px;font-size:.875rem;line-height:1.65;color:var(--ui-muted)}
:root[data-theme] .forecast-studio-foot{display:flex;gap:10px;align-items:start;border-top:1px solid var(--ui-border);margin-top:24px;padding-top:18px;font-size:.875rem;line-height:1.6;color:var(--ui-muted)}
:root[data-theme] .forecast-studio-foot svg{flex:none;width:18px;height:18px;margin-top:3px;color:var(--ui-blue)}
:root[data-theme] .forecast-empty{display:flex;gap:12px;align-items:start;padding:20px;background:var(--ui-bluewash);border-radius:12px;color:var(--ui-muted);font-size:1rem;line-height:1.6;margin:20px 0}
:root[data-theme] .forecast-empty svg{width:20px;height:20px;color:var(--ui-blue)}
:root[data-theme] .forecast-event-note{padding:20px;background:var(--ui-bluewash);border:1px solid var(--ui-border);border-left:3px solid #2563eb;border-radius:12px;margin:20px 0;font-size:1rem;line-height:1.65;color:var(--ui-text)}
:root[data-theme] .forecast-event-note p{margin-top:10px;font-size:1rem;color:var(--ui-muted)}
:root[data-theme] .forecast-event-note>div{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px;font-size:.875rem;color:var(--ui-blue)}
:root[data-theme] .event-forecast-chip{display:flex;gap:8px;align-items:center;padding:6px 10px;background:var(--ui-bluewash);border-radius:7px;font-size:.75rem;color:var(--ui-muted);white-space:nowrap}
:root[data-theme] .event-forecast-chip b{font-size:.875rem;color:var(--ui-blue);font-variant-numeric:tabular-nums}
/* A more visible, shared layer of motion across the existing academy. */
:root[data-theme] .page>.heading h1,:root[data-theme] .journey-heading h1{animation:academy-title 500ms cubic-bezier(.2,.8,.2,1) both}
:root[data-theme] .journey-heading .heading-period{background:linear-gradient(100deg,#2563eb,#75a7ff,#2563eb);background-size:200% 100%;background-clip:text;color:transparent;animation:academy-aurora 4s ease-in-out 2}
:root[data-theme] .module-art{overflow:hidden;isolation:isolate}
:root[data-theme] .module-art:before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(115deg,transparent 25%,#fff4 45%,transparent 65%);background-size:300% 100%;background-position:130% 0;opacity:0;transition:opacity 150ms}
:root[data-theme] .module-card:is(:hover,:focus-visible) .module-art:before{opacity:1;animation:edge-light 1000ms ease-out}
:root[data-theme] .nav a{overflow:hidden;isolation:isolate}
:root[data-theme] .nav a:before{content:'';position:absolute;inset:0;background:var(--ui-bluewash);z-index:-1;transform:translateX(-101%);transition:transform 250ms cubic-bezier(.2,.8,.2,1)}
:root[data-theme] .nav a:hover:before,:root[data-theme] .nav a:focus-visible:before{transform:translateX(0)}
:root[data-theme] .nav a.active .nav-active-dot{box-shadow:0 0 0 5px #2563eb13;animation:academy-indicator 900ms ease-out 2}
:root[data-theme] .nav a.active svg{color:var(--ui-blue)}
:root[data-theme] .news-days{scroll-snap-type:x proximity;scroll-padding:5px}
:root[data-theme] .news-day{scroll-snap-align:start;position:relative;overflow:hidden;transition:transform 180ms,border-color 180ms,box-shadow 180ms}
:root[data-theme] .news-day.selected{box-shadow:0 5px 18px #2563eb19}
:root[data-theme] .news-day.selected:after{content:'';position:absolute;left:16px;right:16px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:#2563eb;transform-origin:left;animation:academy-underline 300ms ease-out both}
:root[data-theme] .news-scenario-option{position:relative;transition:background 220ms,color 220ms,box-shadow 220ms,transform 220ms}
:root[data-theme] .news-scenario-option[aria-pressed=true]{box-shadow:0 3px 12px #2563eb20;transform:translateY(-1px)}
:root[data-theme] #news-market-cards>.news-market-card{animation:academy-card-switch 320ms ease-out both}
:root[data-theme] #news-market-cards>.news-market-card:nth-child(2){animation-delay:45ms}
:root[data-theme] .news-market-card{position:relative;overflow:hidden;isolation:isolate}
:root[data-theme] .news-market-card:after{content:'';position:absolute;width:170px;height:170px;right:-70px;bottom:-80px;border:1px solid currentColor;border-radius:50%;box-shadow:0 0 0 22px currentColor,0 0 0 45px currentColor;opacity:.025;pointer-events:none;z-index:-1}
:root[data-theme] .news-event[open] .news-event-body{animation:academy-disclosure 250ms ease-out both}
:root[data-theme] .journal-stat{border-top:2px solid var(--ui-blue);position:relative;overflow:hidden}
:root[data-theme] .journal-stat:after{content:'';position:absolute;width:75px;height:75px;right:-25px;bottom:-35px;background:var(--ui-bluewash);border-radius:18px;transform:rotate(35deg);pointer-events:none}
:root[data-theme] .journal-stat strong{position:relative;z-index:1}
:root[data-theme] .journal-stat:hover{transform:translateY(-3px);box-shadow:0 8px 24px #15213d12}
:root[data-theme] .account-passport{background-image:radial-gradient(circle at 85% 0%,#2563eb18,transparent 55%)}
:root[data-theme] .source-flow.flow-visible .flow-hub-halo{animation:academy-halo 3500ms ease-in-out 2}
:root[data-theme] .forecast-bento>div{animation:academy-card-switch 420ms ease-out both}
:root[data-theme] .forecast-bento>div:nth-child(2){animation-delay:50ms}
:root[data-theme] .forecast-bento>div:nth-child(3){animation-delay:100ms}
:root.theme-transition::view-transition-old(root){animation:none}
:root.theme-transition::view-transition-new(root){mix-blend-mode:normal;animation:academy-theme 480ms ease-out both}
@keyframes academy-theme{from{clip-path:circle(0 at var(--theme-x,90%) var(--theme-y,30px))}to{clip-path:circle(150vmax at var(--theme-x,90%) var(--theme-y,30px))}}
@keyframes academy-title{from{opacity:.4;transform:translateY(12px);filter:blur(3px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes academy-aurora{0%,100%{background-position:0 0}50%{background-position:100% 0}}
@keyframes academy-indicator{from{box-shadow:0 0 0 0 #2563eb35}to{box-shadow:0 0 0 7px #2563eb00}}
@keyframes academy-underline{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes academy-card-switch{from{opacity:.4;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
@keyframes academy-disclosure{from{opacity:.3;transform:translateY(-5px)}to{opacity:1;transform:none}}
@keyframes academy-halo{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.1);opacity:1}}
@media(min-width:1101px){:root[data-theme] .forecast-studio{container-type:inline-size}}
@media(max-width:1200px){:root[data-theme] .forecast-bento{grid-template-columns:minmax(180px,.8fr) minmax(220px,1.3fr)}:root[data-theme] .forecast-outcomes{grid-column:1/-1;grid-template-columns:1fr 1fr}:root[data-theme] .forecast-reference{display:none}}
@media(max-width:760px){:root[data-theme] .forecast-studio{padding:20px;border-radius:16px}:root[data-theme] .forecast-bento{grid-template-columns:minmax(0,1fr)}:root[data-theme] .forecast-outcomes{grid-template-columns:1fr}:root[data-theme] .forecast-number-tile{padding:22px}:root[data-theme] .forecast-event-label{margin-bottom:18px}:root[data-theme] .forecast-number-tile p{padding-top:16px}:root[data-theme] .forecast-explanation{padding:8px 0}:root[data-theme] .forecast-picker{display:block}:root[data-theme] .forecast-picker>span{display:block;margin-bottom:8px}:root[data-theme] .forecast-picker select{width:100%}:root[data-theme] .news-event-name{flex-wrap:wrap}:root[data-theme] .event-forecast-chip{flex-basis:auto}:root[data-theme] .forecast-number{font-size:3.4rem}}
@media(prefers-reduced-motion:reduce){
 :root[data-theme] :is(.page>.heading h1,.journey-heading h1,.journey-heading .heading-period,.module-art:before,.nav-active-dot,.news-day.selected:after,#news-market-cards>.news-market-card,.news-event[open] .news-event-body,.flow-hub-halo,.forecast-bento>div){animation:none!important;filter:none}
 :root[data-theme] .nav a:before,:root[data-theme] .news-scenario-option,:root[data-theme] .news-day{transition:none}
 :root[data-theme] .journal-stat:hover,:root[data-theme] .news-scenario-option[aria-pressed=true]{transform:none}
 :root.theme-transition::view-transition-new(root){animation:none}
}
