/* learn.css — 課程進度軌 + 學習表（pattern table） */
/* level map: 進度軌，連住圓點一行 */
.level-rail{display:flex;gap:0;overflow-x:auto;padding:6px 28px 10px;margin-bottom:14px;scrollbar-width:thin;scroll-snap-type:x proximity}
.lm-track{display:flex;margin:0 auto}
.lm-node{scroll-snap-align:center;flex:0 0 auto;position:relative;width:64px;display:flex;flex-direction:column;align-items:center;padding:0;border:none;background:transparent;cursor:pointer}
.lm-node+.lm-node::before{content:"";position:absolute;top:18.5px;right:32px;left:-32px;height:3px;border-radius:2px;background:var(--rule)}
.lm-node.link-done::before{background:var(--memo-fg)}
.lm-dot{position:relative;z-index:1;width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--rule);color:var(--ink-faint);border:2px solid var(--rule);font-weight:800;font-size:.85rem;transition:transform .15s ease,background .15s ease}
.lm-node.some .lm-dot{background:var(--card);border-color:var(--rule-strong);color:var(--ink-soft)}
.lm-node.full .lm-dot{background:var(--memo-bg);border-color:var(--memo-fg);color:var(--memo-fg)}
.lm-node[aria-current="true"] .lm-dot{background:var(--tint);border-color:var(--accent);color:var(--tint-deep);box-shadow:var(--shadow);transform:scale(1.12)}
.lm-name{margin-top:6px;font-size:.68rem;font-weight:800;color:var(--ink-soft);text-align:center;line-height:1.25}
.lm-node[aria-current="true"] .lm-name{color:var(--tint-deep)}
.lm-stars{display:inline-flex;gap:1px;margin-top:3px}
.lm-stars .star-on{color:var(--accent)}
.lm-stars .star-off{color:var(--rule)}

/* study table: tidy rows */
.pattern-list{list-style:none;margin:0 0 4px;padding:0;display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r-input);overflow:hidden}
.pattern-row{display:grid;grid-template-columns:6.5rem 1.2fr 1.2fr 1.2fr;gap:8px;align-items:center;padding:9px 12px;background:var(--card)}
.pattern-row+.pattern-row{border-top:1px solid var(--rule)}
.pattern-row.cols-1{grid-template-columns:6.5rem 1fr}
.pattern-row.cols-2{grid-template-columns:6.5rem 1fr 1fr}
.pattern-row.cols-4{grid-template-columns:6.5rem 1fr 1fr 1fr 1fr}
.pattern-list.num-wide .pattern-row{grid-template-columns:8.5rem 1.2fr 1.2fr 1.2fr}
.pattern-list.num-wide .pattern-row.cols-1{grid-template-columns:8.5rem 1fr}
.pattern-list.num-wide .pattern-row.cols-2{grid-template-columns:8.5rem 1fr 1fr}
.pattern-list.num-wide .pattern-row.cols-4{grid-template-columns:8.5rem 1fr 1fr 1fr 1fr}
.pattern-list.num-wide .pat-num{font-size:.9rem}
/* 窄幕 overflow：數字留住自己格（最左），其他語言疊喺下一個欄 */
@media (max-width:640px){
  .pattern-row.cols-4,.pattern-list.num-wide .pattern-row.cols-4{grid-template-columns:6.5rem 1fr}
  .pattern-list.num-wide .pattern-row.cols-4{grid-template-columns:8.5rem 1fr}
  .pattern-row.cols-4 .pat-cell{grid-column:2}
}
@media (max-width:520px){
  .pattern-row.cols-3,.pattern-list.num-wide .pattern-row.cols-3{grid-template-columns:6.5rem 1fr}
  .pattern-list.num-wide .pattern-row.cols-3{grid-template-columns:8.5rem 1fr}
  .pattern-row.cols-3 .pat-cell{grid-column:2}
}
.pattern-row:nth-child(even){background:var(--paper)}
.exp-btn{width:26px;height:26px;margin-left:-4px;padding:0;border:1px solid var(--rule);border-radius:999px;background:var(--card);color:var(--ink-soft);font-size:.72rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.exp-btn:hover{background:var(--tint);color:var(--tint-deep);border-color:var(--tint-deep)}
.pattern-sub{grid-column:1/-1;list-style:none;margin:4px 0 2px;padding:0;border:1px dashed var(--rule);border-radius:var(--r-input);overflow:hidden;background:var(--card)}
.pattern-sub .pattern-row{padding:6px 12px}
.pattern-sub .pattern-row:nth-child(even){background:transparent}
.pat-num{display:flex;align-items:center;gap:6px;font-weight:800;font-variant-numeric:tabular-nums;font-size:1rem;letter-spacing:-.02em;min-width:0;overflow-wrap:anywhere}
.pat-cell{display:flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0}
.pat-en,.pat-zh,.pat-ja,.pat-fr{font-weight:700;font-size:.88rem;overflow-wrap:anywhere;line-height:1.3}
.pat-zh{color:var(--accent-deep)}
.pat-cell.zh{flex-wrap:wrap}
.pat-upper{flex:1 0 100%;margin-top:1px;font-size:.74rem;font-weight:700;color:var(--ink-soft);line-height:1.4;overflow-wrap:anywhere}
.pat-ja{color:var(--memo-fg)}
.pat-fr{color:var(--notice-fg)}
@media (max-width:560px){
  .pattern-row{grid-template-columns:5rem 1fr 1fr;grid-auto-rows:auto}
  .pattern-row.cols-1{grid-template-columns:5rem 1fr}
  .pattern-row.cols-4{grid-template-columns:5rem 1fr}
  .pattern-row.cols-3 .pat-cell.ja{grid-column:2/4}
}
