/* pages/landing/sections.css — intro glow, study path, trainer section.
   Split from the pre-#149 monolith — rule ORDER preserved; see docs/architecture.md
   ("CSS layers") for the load-order contract each page's <head> follows. */
#intro::before{
  content:"";position:absolute;z-index:-1;left:50%;top:-6%;translate:-50% 0;
  width:min(1180px,94vw);height:min(560px,42vw);pointer-events:none;
  background:
    radial-gradient(46% 58% at 26% 38%, color-mix(in srgb,var(--accent) 34%,transparent), transparent 68%),
    radial-gradient(44% 56% at 78% 60%, color-mix(in srgb,var(--accent2) 26%,transparent), transparent 70%);
  filter:blur(54px);opacity:.9;
}
/* The light-mode dimming has to be guarded by the media query as well as the
   attribute. `:root:not([data-theme="dark"])` alone also matches the UNSTAMPED
   default — which is what most visitors have — so on a dark OS the glow was
   being dimmed to the light-theme value. A colour whose only guard is
   [data-theme] misfires in exactly that state. */
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]) #intro::before{opacity:.5}
}
:root[data-theme="light"] #intro::before{opacity:.5}

.intro-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:14px;
}
.icard{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:12px;
  min-height:100%;
  padding:22px 20px 20px;
  border-radius:22px;
  border:1px solid var(--line);
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--panel) 92%, transparent), color-mix(in srgb, var(--panel2) 82%, transparent));
  /* Glass: the fill is translucent so the blur has something to sample. */
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  color:var(--ink);
  text-decoration:none;
  box-shadow:0 18px 50px var(--shadow1);
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
/* Without the blur the translucent fill just lets the glow through and the
   card's own text loses its ground, so unsupported browsers get an opaque one. */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .icard{background:var(--panel)}
}
.icard:hover{
  transform:translateY(-4px);
  border-color:var(--accent);
  box-shadow:0 24px 58px color-mix(in srgb, var(--shadow1) 92%, transparent);
}
/* The whole card is the link, so the whole card takes the focus ring. */
.icard:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media (prefers-reduced-motion:reduce){
  .icard{transition:none}
  .icard:hover{transform:none}
}
.ic-top{
  display:flex;
  align-items:center;
  gap:12px;
  justify-content:space-between;
  color:var(--mute);
  font:700 12px var(--display);
  letter-spacing:.05em;
  text-transform:uppercase;
}
.ic-num{display:flex;align-items:center;gap:6px}
.ic-min{
  padding:6px 10px;
  border-radius:999px;
  border:1px solid var(--line);
  background:var(--hover);
}
.icard b{
  font:700 20px/1.15 var(--display);
  letter-spacing:-.03em;
}
.icard p{
  margin:0;
  color:var(--dim);
  font-size:14px;
}
.ic-read{
  margin-top:auto;
  color:var(--accent);
  font:700 13px var(--display);
}

.sets{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
}
.set{
  position:relative;
  display:flex;
  flex-direction:column;
  min-height:100%;
  padding:22px 20px 20px;
  border-radius:22px;
  border:1px solid var(--line);
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--panel) 90%, transparent), color-mix(in srgb, var(--panel2) 80%, transparent));
  color:var(--ink);
  text-decoration:none;
  box-shadow:0 16px 44px var(--shadow1);
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.set::before{
  content:"";
  position:absolute;
  left:20px;
  right:20px;
  top:18px;
  height:1px;
  background:linear-gradient(90deg, var(--accent), transparent 72%);
  opacity:.75;
}
.set:hover{
  transform:translateY(-4px);
  border-color:var(--accent);
  box-shadow:0 24px 52px color-mix(in srgb, var(--shadow1) 92%, transparent);
}
.set .g{
  width:60px;
  height:60px;
  border-radius:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:var(--accent-soft);
  color:var(--accent);
  font:500 30px/1 var(--jp);
  margin-bottom:16px;
}
.set h3{
  margin:0 0 4px;
  font:700 16px var(--display);
}
.set .cnt{
  margin:0 0 10px;
  color:var(--dim);
  font:700 12px var(--display);
  letter-spacing:.05em;
  text-transform:uppercase;
}
.set p.d{
  margin:0;
  color:var(--mute);
  font-size:14px;
  line-height:1.55;
}

.pl-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(340px,.92fr);
  gap:30px;
  align-items:center;
}
.feat{
  list-style:none;
  display:grid;
  gap:16px;
  margin:0 0 30px;
  padding:0;
}
.feat li{
  display:flex;
  gap:14px;
  color:var(--dim);
  font-size:15px;
  line-height:1.65;
}
.feat li::before{
  content:"";
  width:8px;
  height:8px;
  border-radius:50%;
  background:linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent2) 38%, var(--accent)));
  flex:none;
  margin-top:9px;
  box-shadow:0 0 0 4px var(--accent-soft);
}

.pl-win{
  background:linear-gradient(180deg, color-mix(in srgb, var(--panel) 92%, transparent), var(--panel));
  border:1px solid var(--line2);
  border-radius:28px;
  overflow:hidden;
  box-shadow:0 30px 90px color-mix(in srgb, var(--shadow1) 92%, transparent);
}
