/* U31: compact weekly learning pulse. Scope to LessonSky; theme-aware with AA-minded text contrast. */
.sk-shell .sk31-pulse{box-sizing:border-box;max-width:100%;margin:14px 0 22px;padding:clamp(18px,2vw,26px);border:1px solid #cddaf0;border-radius:25px;background:linear-gradient(125deg,#fff 0%,#f5f8ff 70%,#f0faf8 100%);color:#172f51;box-shadow:0 10px 30px #1e35601a}
.sk-shell .sk31-pulse *{box-sizing:border-box}
.sk-shell .sk31-head{display:flex;align-items:center;justify-content:space-between;gap:20px}
.sk-shell .sk31-kicker{color:#5137a6;font-size:11px;font-weight:900;letter-spacing:.09em}
.sk-shell .sk31-head h2{margin:6px 0!important;color:#172e53!important;font-size:clamp(22px,2.2vw,30px)!important;line-height:1.22!important;letter-spacing:-.02em}
.sk-shell .sk31-head p{color:#3e526e!important;margin:0!important;max-width:65ch;font-size:14px;line-height:1.6}
.sk-shell .sk31-main-action{display:inline-flex;align-items:center;justify-content:center;gap:10px;flex-shrink:0;min-height:48px;padding:10px 18px;border-radius:14px;background:#533dc8;color:white!important;text-decoration:none!important;font-weight:850;font-size:14px;box-shadow:0 7px 17px #4b3acc35}
.sk-shell .sk31-main-action:hover{background:#3929a0}
.sk-shell .sk31-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}
.sk-shell .sk31-stat{display:flex;flex-direction:column;gap:5px;border:1px solid #d8e3f5;border-radius:17px;background:#fff;padding:14px;min-width:0}
.sk-shell .sk31-stat strong{color:#283a76;font-size:clamp(22px,2.5vw,29px);font-weight:900;line-height:1.1;font-variant-numeric:tabular-nums}
.sk-shell .sk31-stat span{color:#435774;font-size:12px;line-height:1.4;font-weight:650}
.sk-shell .sk31-stat-checked strong{color:#116d63}.sk-shell .sk31-stat-review strong{color:#9b4c17}
.sk-shell .sk31-progress{margin:16px 0 18px}.sk-shell .sk31-progress-caption{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#253853;font-size:13px}.sk-shell .sk31-progress-caption strong{font-weight:800}
.sk-shell .sk31-track{height:10px;border-radius:999px;overflow:hidden;background:#d7e4f3;margin-top:9px}.sk-shell .sk31-track span{display:block;height:100%;background:linear-gradient(90deg,#5541d5,#1aa8a0);border-radius:inherit}
.sk-shell .sk31-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:15px 0}
.sk-shell .sk31-day{display:flex;flex-direction:column;gap:5px;padding:12px 9px;min-width:0;border:1px solid #dbe6f3;border-radius:14px;background:#fff}
.sk-shell .sk31-day strong{font-size:12px;color:#1e3656}.sk-shell .sk31-day small{font-size:11px;color:#596b84}.sk-shell .sk31-day span{font-size:11px;line-height:1.4;color:#374a68;overflow-wrap:anywhere}
.sk-shell .sk31-day.is-today{border-color:#7462d8;box-shadow:inset 0 0 0 1px #7462d8}.sk-shell .sk31-day.is-done{border-color:#6eb9a9;background:#e8faf4}
.sk-shell .sk31-advice{padding:12px 15px;border-left:4px solid #4e64c7;border-radius:8px;background:#eef2ff;color:#263c69!important;font-size:14px;line-height:1.5}
.sk-shell .sk31-actions{display:flex;flex-wrap:wrap;gap:12px;margin:15px 0}.sk-shell .sk31-actions a{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;background:#fff;border:1px solid #b5c5e7;border-radius:12px;color:#2e3e8a!important;text-decoration:none!important;font-weight:750;font-size:13px}
.sk-shell .sk31-note{margin:0!important;color:#4c5e78!important;font-size:12px;line-height:1.5}
.sk-shell .sk31-observer{margin:10px 0;padding:12px;border-radius:15px;background:#f3f6ff;border:1px solid #ccd9f0;color:#233958;font-size:13px}
.sk-shell .sk31-observer>strong{display:block;margin-bottom:9px;font-size:14px;color:#243979}
.sk-shell .sk31-observer-stats{display:flex;flex-wrap:wrap;gap:10px}.sk-shell .sk31-observer-stats span{background:white;border-radius:9px;padding:7px 10px;color:#314762}.sk-shell .sk31-observer-stats b{color:#223976;font-size:16px}.sk-shell .sk31-observer p{margin:10px 0 5px;color:#334f6b!important}.sk-shell .sk31-observer small{display:block;color:#4a5c73;line-height:1.5}
.sk-shell .sk31-more{margin:9px 0 0;border:1px solid #cfdaee;border-radius:12px;padding:8px 12px}.sk-shell .sk31-more>summary{cursor:pointer;color:#344b8b;font-weight:750;font-size:13px;min-height:32px;display:list-item;align-content:center}
.sk-shell .sk31-pulse a:focus-visible,.sk-shell .sk31-more>summary:focus-visible{outline:3px solid #137eab;outline-offset:3px}
@media(max-width:900px){.sk-shell .sk31-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.sk-shell .sk31-days{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:560px){.sk-shell .sk31-pulse{padding:16px;border-radius:19px}.sk-shell .sk31-head{flex-direction:column;align-items:stretch;gap:14px}.sk-shell .sk31-main-action{width:100%}.sk-shell .sk31-metrics{gap:8px}.sk-shell .sk31-stat{padding:12px}.sk-shell .sk31-days{grid-template-columns:repeat(2,minmax(0,1fr))}.sk-shell .sk31-day{min-height:76px}}
:is(html.lessonsky-dark body,body.lessonsky-dark,html.lessonsky-dim body,body.lessonsky-dim) .sk-shell .sk31-pulse{background:linear-gradient(135deg,#1c2940,#1f3347);border-color:#48637d;color:#e6efff}
:is(html.lessonsky-dark body,body.lessonsky-dark,html.lessonsky-dim body,body.lessonsky-dim) .sk-shell .sk31-pulse :is(.sk31-head h2,.sk31-head p,.sk31-kicker,.sk31-progress-caption,.sk31-note){color:#e5efff!important}
:is(html.lessonsky-dark body,body.lessonsky-dark,html.lessonsky-dim body,body.lessonsky-dim) .sk-shell :is(.sk31-stat,.sk31-day,.sk31-observer-stats span,.sk31-actions a){background:#243951;border-color:#527292;color:#e9f4ff!important}
:is(html.lessonsky-dark body,body.lessonsky-dark,html.lessonsky-dim body,body.lessonsky-dim) .sk-shell :is(.sk31-stat strong,.sk31-stat span,.sk31-day strong,.sk31-day small,.sk31-day span,.sk31-observer-stats b){color:#e9f4ff!important}
:is(html.lessonsky-dark body,body.lessonsky-dark,html.lessonsky-dim body,body.lessonsky-dim) .sk-shell :is(.sk31-observer,.sk31-more){background:#24364c;border-color:#486781;color:#e5efff}
:is(html.lessonsky-dark body,body.lessonsky-dark,html.lessonsky-dim body,body.lessonsky-dim) .sk-shell :is(.sk31-observer strong,.sk31-observer p,.sk31-observer small,.sk31-more>summary){color:#e6efff!important}
:is(html.lessonsky-dark body,body.lessonsky-dark,html.lessonsky-dim body,body.lessonsky-dim) .sk-shell .sk31-advice{background:#293c60;color:#e9efff!important}
@media(forced-colors:active){.sk-shell .sk31-pulse,.sk-shell .sk31-stat,.sk-shell .sk31-day,.sk-shell .sk31-observer{forced-color-adjust:auto;border:1px solid CanvasText;background:Canvas;color:CanvasText}.sk-shell .sk31-track{border:1px solid CanvasText}}
