/* Shared premium shell for Reading and Writing theory hubs. */
*{box-sizing:border-box}
.sr-only{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
html{min-height:100%;background:var(--arena-bg)}
body.theory-course-page{
  min-height:100vh;
  margin:0;
  color:var(--arena-text);
  background:var(--arena-page-bg)!important;
  font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  overflow-x:hidden;
}
body.theory-course-page::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  background:
    linear-gradient(var(--arena-grid-line-a) 1px,transparent 1px),
    linear-gradient(90deg,var(--arena-grid-line-b) 1px,transparent 1px);
  background-size:52px 52px;
  mask-image:radial-gradient(circle at 50% 18%,#000,transparent 78%);
}
body.theory-course-page::after{
  content:"";
  position:fixed;
  z-index:0;
  width:520px;
  height:520px;
  top:-260px;
  right:-180px;
  border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--course-accent,var(--arena-cyan)) 19%,transparent),transparent 68%);
  pointer-events:none;
}
body.reading-course-page{
  --course-accent:#38bdf8;
  --course-accent-2:#60a5fa;
  --course-soft:#a7f3d0;
}
body.writing-center-page{
  --course-accent:var(--arena-gold);
  --course-accent-2:var(--arena-cyan);
  --course-soft:#fef3c7;
}
.th-shell{
  position:relative;
  z-index:1;
  width:min(1240px,calc(100% - 32px));
  margin:0 auto;
}
.th-topbar{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:16px;
  margin-top:18px;
  padding:12px 14px;
  border:1px solid var(--arena-line);
  border-radius:22px;
  background:var(--arena-topbar-bg);
  box-shadow:var(--arena-topbar-shadow);
  backdrop-filter:blur(20px);
}
.th-brand{
  display:flex;
  align-items:center;
  gap:12px;
  min-width:0;
  color:inherit;
  text-decoration:none;
}
.th-mark{
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  flex:0 0 48px;
  border:1px solid color-mix(in srgb,var(--course-accent) 32%,var(--arena-line));
  border-radius:16px;
  color:#07111f;
  background:linear-gradient(145deg,var(--course-accent),var(--course-accent-2));
  box-shadow:0 14px 34px color-mix(in srgb,var(--course-accent) 22%,transparent);
  font-family:Rajdhani,Inter,sans-serif;
  font-size:22px;
  font-weight:900;
}
.th-brand-copy{min-width:0}
.th-brand-title{
  display:block;
  overflow:hidden;
  color:var(--arena-title-text);
  font-family:Rajdhani,Inter,sans-serif;
  font-size:22px;
  font-weight:800;
  line-height:1;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.th-brand-sub{
  display:block;
  margin-top:4px;
  overflow:hidden;
  color:var(--arena-muted);
  font-size:12px;
  font-weight:700;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.th-nav{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.th-btn{
  min-height:42px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:0 14px;
  border:1px solid var(--arena-line);
  border-radius:13px;
  color:var(--arena-title-text);
  background:var(--arena-control-bg);
  font:800 13px/1 Inter,sans-serif;
  text-decoration:none;
  cursor:pointer;
  transition:transform .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease;
}
.th-btn:hover,.th-btn:focus-visible{
  transform:translateY(-1px);
  border-color:color-mix(in srgb,var(--course-accent) 48%,var(--arena-line));
}
.th-btn:focus-visible,.th-filter:focus-visible,.th-search input:focus-visible{
  outline:3px solid color-mix(in srgb,var(--course-accent) 42%,transparent);
  outline-offset:3px;
}
.th-btn.primary{
  border-color:transparent;
  color:#08111f;
  background:linear-gradient(135deg,var(--course-accent),var(--course-accent-2));
  box-shadow:0 14px 32px color-mix(in srgb,var(--course-accent) 17%,transparent);
}
.th-theme-toggle{min-width:88px}
.th-hero{
  display:grid;
  grid-template-columns:minmax(0,1.45fr) minmax(310px,.55fr);
  gap:18px;
  margin-top:22px;
}
.th-panel{
  border:1px solid var(--arena-line);
  border-radius:28px;
  background:var(--arena-card-bg);
  box-shadow:var(--arena-shadow);
}
.th-hero-main{
  position:relative;
  min-height:420px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:clamp(24px,4vw,44px);
  overflow:hidden;
}
.th-hero-main::before{
  content:"";
  position:absolute;
  width:480px;
  height:480px;
  right:-180px;
  bottom:-260px;
  border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--course-accent) 26%,transparent),transparent 68%);
  pointer-events:none;
}
.th-hero-main::after{
  content:"R";
  position:absolute;
  right:clamp(18px,4vw,52px);
  top:clamp(16px,3vw,34px);
  color:color-mix(in srgb,var(--course-accent) 10%,transparent);
  font-family:Rajdhani,Inter,sans-serif;
  font-size:clamp(150px,19vw,260px);
  font-weight:900;
  line-height:.8;
  pointer-events:none;
}
.th-kicker{
  min-height:29px;
  width:max-content;
  max-width:100%;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:0 11px;
  border:1px solid color-mix(in srgb,var(--course-accent) 28%,transparent);
  border-radius:999px;
  color:color-mix(in srgb,var(--course-accent) 76%,var(--arena-title-text));
  background:color-mix(in srgb,var(--course-accent) 10%,transparent);
  font-size:10px;
  font-weight:950;
  letter-spacing:.15em;
  text-transform:uppercase;
}
.th-title{
  position:relative;
  z-index:1;
  max-width:820px;
  margin:18px 0 0;
  color:var(--arena-title-text);
  font-family:Rajdhani,Inter,sans-serif;
  font-size:clamp(48px,7.4vw,88px);
  font-weight:800;
  letter-spacing:-.025em;
  line-height:.86;
}
.th-lead{
  position:relative;
  z-index:1;
  max-width:720px;
  margin:20px 0 0;
  color:var(--arena-lead);
  font-size:15px;
  font-weight:600;
  line-height:1.7;
}
.th-actions{position:relative;z-index:1;display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}
.th-metrics{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-top:30px;
}
.th-metric{
  min-width:0;
  min-height:94px;
  padding:14px;
  border:1px solid var(--arena-line);
  border-radius:18px;
  background:var(--arena-card-soft);
}
.th-metric span{
  display:block;
  color:var(--arena-muted);
  font-size:10px;
  font-weight:950;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.th-metric strong{
  display:block;
  margin-top:8px;
  overflow:hidden;
  color:var(--arena-title-text);
  font-family:Rajdhani,Inter,sans-serif;
  font-size:30px;
  font-weight:800;
  line-height:1;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.th-metric small{display:block;margin-top:6px;color:var(--arena-meta);font-size:11px;font-weight:700}
.th-route{display:flex;flex-direction:column;gap:13px;padding:18px}
.th-route-head{padding:4px 2px 2px}
.th-route-head h2{
  margin:10px 0 0;
  color:var(--arena-title-text);
  font:800 29px/1 Rajdhani,Inter,sans-serif;
}
.th-route-head p{margin:9px 0 0;color:var(--arena-copy);font-size:13px;font-weight:650;line-height:1.55}
.th-route-step{
  display:grid;
  grid-template-columns:40px minmax(0,1fr);
  gap:11px;
  align-items:start;
  padding:13px;
  border:1px solid var(--arena-line);
  border-radius:18px;
  background:var(--arena-card-soft);
}
.th-route-number{
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  border-radius:14px;
  color:#08111f;
  background:linear-gradient(145deg,var(--course-accent),var(--course-accent-2));
  font:900 19px/1 Rajdhani,Inter,sans-serif;
}
.th-route-step strong{display:block;color:var(--arena-title-text);font-size:13px;line-height:1.25}
.th-route-step span:last-child{display:block;margin-top:5px;color:var(--arena-copy);font-size:12px;font-weight:650;line-height:1.45}
.th-reward{
  margin-top:auto;
  padding:15px;
  border:1px solid color-mix(in srgb,var(--arena-gold) 28%,var(--arena-line));
  border-radius:19px;
  background:
    radial-gradient(circle at 100% 0,color-mix(in srgb,var(--arena-gold) 18%,transparent),transparent 42%),
    var(--arena-card-soft);
}
.th-reward strong{display:block;color:var(--arena-title-text);font:800 22px/1 Rajdhani,Inter,sans-serif}
.th-reward p{margin:8px 0 0;color:var(--arena-copy);font-size:12px;font-weight:650;line-height:1.5}
.th-section{margin-top:22px;padding:clamp(18px,3vw,28px)}
.th-section-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:18px;
}
.th-section-copy h2{margin:8px 0 0;color:var(--arena-title-text);font:800 clamp(31px,4vw,45px)/.95 Rajdhani,Inter,sans-serif}
.th-section-copy p{margin:9px 0 0;color:var(--arena-muted);font-size:13px;font-weight:700;line-height:1.5}
.th-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.th-filters{display:flex;gap:7px;flex-wrap:wrap}
.th-filter{
  min-height:37px;
  padding:0 12px;
  border:1px solid var(--arena-line);
  border-radius:999px;
  color:var(--arena-subtle);
  background:var(--arena-control-bg);
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}
.th-filter.is-active{
  border-color:transparent;
  color:#08111f;
  background:linear-gradient(135deg,var(--course-accent),var(--course-accent-2));
}
.th-search{position:relative;display:flex;align-items:center}
.th-search::before{content:"⌕";position:absolute;left:12px;color:var(--arena-muted);font-size:19px;pointer-events:none}
.th-search input{
  width:210px;
  min-height:39px;
  padding:0 12px 0 37px;
  border:1px solid var(--arena-line);
  border-radius:13px;
  color:var(--arena-text);
  background:var(--arena-control-bg);
  font:750 12px Inter,sans-serif;
}
.th-search input::placeholder{color:var(--arena-muted)}
.th-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
.th-card{
  min-width:0;
  min-height:316px;
  display:flex;
  flex-direction:column;
  gap:14px;
  padding:17px;
  border:1px solid var(--arena-line);
  border-radius:23px;
  background:var(--arena-card-bg-strong);
  box-shadow:0 18px 44px color-mix(in srgb,var(--arena-bg) 16%,transparent);
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.th-card:hover{
  transform:translateY(-3px);
  border-color:color-mix(in srgb,var(--course-accent) 42%,var(--arena-line));
  box-shadow:0 25px 58px color-mix(in srgb,var(--course-accent) 10%,transparent);
}
.th-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.th-card-icon{
  width:52px;
  height:52px;
  display:grid;
  place-items:center;
  flex:0 0 52px;
  border:1px solid color-mix(in srgb,var(--course-accent) 26%,var(--arena-line));
  border-radius:17px;
  color:color-mix(in srgb,var(--course-accent) 75%,var(--arena-title-text));
  background:var(--arena-logo-bg);
  font:900 23px/1 Rajdhani,Inter,sans-serif;
}
.th-status{
  min-height:27px;
  display:inline-flex;
  align-items:center;
  padding:0 9px;
  border:1px solid var(--arena-line);
  border-radius:999px;
  color:var(--arena-muted);
  background:var(--arena-status-bg);
  font-size:9px;
  font-weight:950;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.th-status.started{color:color-mix(in srgb,var(--arena-gold) 78%,var(--arena-title-text))}
.th-status.done{color:color-mix(in srgb,var(--arena-emerald) 76%,var(--arena-title-text))}
.th-card h3{
  margin:0;
  color:var(--arena-title-text);
  font:800 28px/1 Rajdhani,Inter,sans-serif;
}
.th-card p{margin:0;color:var(--arena-copy);font-size:12px;font-weight:650;line-height:1.58}
.th-chip-row{display:flex;gap:7px;flex-wrap:wrap}
.th-chip{
  min-height:26px;
  display:inline-flex;
  align-items:center;
  padding:0 8px;
  border:1px solid var(--arena-line);
  border-radius:999px;
  color:var(--arena-subtle);
  background:var(--arena-chip-bg);
  font-size:9px;
  font-weight:900;
}
.th-progress-wrap{margin-top:auto}
.th-progress-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--arena-muted);font-size:10px;font-weight:900}
.th-progress{
  height:8px;
  margin-top:8px;
  overflow:hidden;
  border-radius:999px;
  background:var(--arena-progress-bg);
}
.th-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--course-accent),var(--arena-emerald));transition:width .28s ease}
.th-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}
.th-card-footer .th-btn{flex:1}
.th-empty{
  grid-column:1/-1;
  padding:30px;
  border:1px dashed var(--arena-line);
  border-radius:20px;
  color:var(--arena-muted);
  background:var(--arena-card-soft);
  font-weight:750;
  text-align:center;
}
.th-footer{display:flex;justify-content:space-between;gap:14px;padding:20px 2px 36px;color:var(--arena-muted);font-size:11px;font-weight:700}
body.theory-course-page .wsa-theory-user{
  top:104px;
  right:18px;
  width:50px;
  min-width:50px;
  max-width:50px;
  padding:5px;
  border-radius:16px;
}
body.theory-course-page .wsa-theory-user-frame{width:38px;height:38px;flex-basis:38px}
body.theory-course-page .wsa-theory-user-meta{display:none}

/* Writing v2: keep the existing application logic, refresh hierarchy and add the shared shell. */
body.writing-center-page.writing-hub-v2::after{
  content:"";
  position:fixed;
  z-index:0;
  width:520px;
  height:520px;
  top:-270px;
  right:-170px;
  border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--arena-gold) 18%,transparent),transparent 68%);
  pointer-events:none;
}
body.writing-hub-v2 .wc-shell{width:min(1240px,calc(100% - 32px))}
body.writing-hub-v2 .wc-topbar{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  border-radius:22px;
}
body.writing-hub-v2 .wc-brand-title{font-size:23px}
body.writing-hub-v2 .wc-mark{
  overflow:hidden;
  padding:0;
  background:var(--arena-card-soft);
}
body.writing-hub-v2 .wc-mark img{width:100%;height:100%;display:block;object-fit:cover}
body.writing-hub-v2 .wc-hero{grid-template-columns:minmax(0,1.45fr) minmax(310px,.55fr)}
body.writing-hub-v2 .wc-panel{border-radius:28px}
body.writing-hub-v2 .wc-hero-main{
  min-height:420px;
  padding:clamp(24px,4vw,42px);
  background:
    radial-gradient(circle at 90% 10%,color-mix(in srgb,var(--arena-gold) 13%,transparent),transparent 32%),
    var(--arena-card-bg);
}
body.writing-hub-v2 .wc-title{max-width:820px;font-size:clamp(48px,7.1vw,84px);letter-spacing:-.025em}
body.writing-hub-v2 .wc-side{padding:18px}
body.writing-hub-v2 .wc-task-card,
body.writing-hub-v2 .wc-lesson,
body.writing-hub-v2 .wc-test-card,
body.writing-hub-v2 .wc-essay-card{border-radius:23px}
.wc-route-dock{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-top:18px;
}
.wc-route-link{
  min-width:0;
  display:grid;
  grid-template-columns:42px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  padding:12px;
  border:1px solid var(--arena-line);
  border-radius:18px;
  color:inherit;
  background:var(--arena-card-soft);
  text-decoration:none;
  transition:transform .18s ease,border-color .18s ease;
}
.wc-route-link:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--arena-gold) 42%,var(--arena-line))}
.wc-route-link b{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:14px;
  color:#08111f;
  background:linear-gradient(135deg,var(--arena-gold),var(--arena-cyan));
  font:900 18px/1 Rajdhani,Inter,sans-serif;
}
.wc-route-link strong{display:block;overflow:hidden;color:var(--arena-title-text);font-size:13px;text-overflow:ellipsis;white-space:nowrap}
.wc-route-link small{display:block;margin-top:4px;overflow:hidden;color:var(--arena-muted);font-size:10px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}
.wc-route-link i{color:var(--arena-muted);font-style:normal;font-size:18px}
@media(max-width:1050px){
  .th-hero,body.writing-hub-v2 .wc-hero{grid-template-columns:1fr}
  .th-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .th-route{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .th-route-head,.th-reward{grid-column:1/-1}
}
@media(max-width:760px){
  .th-shell,body.writing-hub-v2 .wc-shell{width:min(100% - 20px,1240px)}
  .th-topbar,body.writing-hub-v2 .wc-topbar{grid-template-columns:1fr;align-items:stretch;border-radius:18px}
  .th-nav,.wc-actions{justify-content:stretch}
  .th-nav .th-btn,.wc-actions .wc-btn{flex:1 1 auto}
  .th-hero-main{min-height:auto;padding:22px}
  .th-title{font-size:clamp(43px,14vw,64px)}
  .th-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .th-route{display:flex}
  .th-section-head{align-items:flex-start;flex-direction:column}
  .th-controls{width:100%;align-items:stretch;justify-content:flex-start;flex-direction:column}
  .th-filters{flex-wrap:nowrap;overflow-x:auto;padding:2px 2px 5px;scrollbar-width:none}
  .th-filters::-webkit-scrollbar{display:none}
  .th-filter{flex:0 0 auto}
  .th-search,.th-search input{width:100%}
  .th-grid{grid-template-columns:1fr}
  .th-card{min-height:auto}
  .th-footer{flex-direction:column}
  .wc-route-dock{display:flex;overflow-x:auto;padding-bottom:5px;scroll-snap-type:x proximity;scrollbar-width:none}
  .wc-route-dock::-webkit-scrollbar{display:none}
  .wc-route-link{flex:0 0 min(82vw,310px);scroll-snap-align:start}
  body.theory-course-page .wsa-theory-user{top:auto;right:12px;bottom:12px}
}
@media(max-width:480px){
  .th-brand-sub{display:none}
  .th-theme-toggle{min-width:46px}
  .th-theme-toggle [data-theme-label]{display:none}
  .th-metrics{grid-template-columns:1fr 1fr}
  .th-metric{min-height:84px;padding:12px}
  .th-metric strong{font-size:26px}
  .th-card-footer{align-items:stretch;flex-direction:column}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
}
