.fp{--fp-radius: .625rem;--fp-border: 1px solid var(--sl-color-gray-5);--fp-success: #2f9e44;--fp-success-soft: #b2f2bb;--fp-orange: #e8590c;--fp-blue: #1971c2;--fp-purple: #9c36b5;margin:1.5rem 0;font-size:.95rem}.fp-head{padding:1rem 1.25rem 1.125rem;margin:0 0 1.5rem;background:linear-gradient(180deg,color-mix(in srgb,var(--sl-color-accent) 9%,var(--sl-color-bg)) 0%,var(--sl-color-bg) 100%);border:1px solid color-mix(in srgb,var(--sl-color-accent) 22%,transparent);border-radius:var(--fp-radius)}.fp-eyebrow{margin:0 0 .25rem;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--sl-color-accent)}.fp-title{margin:0 0 .25rem;font-size:1.35rem;line-height:1.2;color:var(--sl-color-text)}.fp-subtitle{margin:0 0 .75rem;font-size:.9rem;color:var(--sl-color-gray-3);line-height:1.35}.fp-stats{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.875rem 1.25rem;font-size:.8rem;color:var(--sl-color-gray-3)}.fp-stats li{display:inline-flex;align-items:baseline;gap:.25rem}.fp-stats strong{color:var(--sl-color-text);font-weight:700;font-size:.95rem}.fp-progress{position:sticky;top:4rem;z-index:5;margin:0 0 1.25rem;padding:.75rem 1rem .875rem;background:var(--sl-color-bg);border:var(--fp-border);border-radius:var(--fp-radius);box-shadow:0 4px 12px #0000000a}.fp-progress-row{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.5rem;font-size:.85rem;color:var(--sl-color-gray-3);flex-wrap:wrap}.fp-progress-label{font-weight:600;color:var(--sl-color-text)}.fp-progress-value{font-variant-numeric:tabular-nums}.fp-progress-value strong{color:var(--sl-color-text);font-weight:700}.fp-progress-pct{margin-left:.375rem;color:var(--sl-color-accent);font-weight:700}.fp-bar{height:.5rem;background:var(--sl-color-gray-5);border-radius:999px;overflow:hidden}.fp-bar-fill{height:100%;background:linear-gradient(90deg,var(--fp-success) 0%,color-mix(in srgb,var(--fp-success) 70%,var(--fp-success-soft)) 100%);transition:width .3s ease;border-radius:999px}.fp-actions{display:flex;gap:.5rem;margin-top:.625rem;flex-wrap:wrap}.fp-action{padding:.25rem .625rem;background:transparent;border:1px solid var(--sl-color-gray-5);border-radius:.375rem;color:var(--sl-color-gray-2);font-size:.7rem;cursor:pointer;transition:all .15s ease}.fp-action:hover{background:var(--sl-color-gray-6);color:var(--sl-color-text);border-color:var(--sl-color-gray-4)}.fp-action-reset{margin-left:auto;color:var(--sl-color-gray-3)}.fp-modules{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.fp-module{border:var(--fp-border);border-radius:var(--fp-radius);background:var(--sl-color-bg);transition:border-color .15s ease}.fp-module:hover{border-color:color-mix(in srgb,var(--sl-color-accent) 35%,var(--sl-color-gray-5))}.fp-module.is-complete{border-color:color-mix(in srgb,var(--fp-success) 50%,var(--sl-color-gray-5));background:color-mix(in srgb,var(--fp-success) 4%,var(--sl-color-bg))}.fp-module-summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:var(--fp-radius)}.fp-module-summary::-webkit-details-marker{display:none}.fp-module-summary:hover{background:var(--sl-color-gray-6)}.fp-module-index{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:var(--sl-color-accent);color:#fff;border-radius:.375rem;font-weight:700;font-size:.8rem;flex-shrink:0}.fp-module.is-complete .fp-module-index{background:var(--fp-success)}.fp-module-meta{min-width:0;display:flex;flex-direction:column;gap:.125rem}.fp-module-title{font-size:.95rem;font-weight:600;line-height:1.25;color:var(--sl-color-text)}.fp-module-count{font-size:.75rem;color:var(--sl-color-gray-3);font-variant-numeric:tabular-nums}.fp-module-count strong{color:var(--sl-color-text);font-weight:700}.fp-module-chevron{color:var(--sl-color-gray-3);transition:transform .2s ease;flex-shrink:0}.fp-module-details[open] .fp-module-chevron{transform:rotate(180deg)}.fp-lessons{list-style:none;margin:0 0 .5rem 1.875rem;padding:0;border-left:1px solid var(--sl-color-gray-5);border-top:1px solid color-mix(in srgb,var(--sl-color-gray-5) 60%,transparent)}.fp-lesson{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.625rem;padding:.5rem 1rem;border-bottom:1px solid color-mix(in srgb,var(--sl-color-gray-5) 40%,transparent);transition:background-color .15s ease}.fp-lesson:last-child{border-bottom:none}.fp-lesson:hover{background:color-mix(in srgb,var(--sl-color-accent) 4%,transparent)}.fp-lesson.is-done{background:color-mix(in srgb,var(--fp-success) 5%,transparent)}.fp-check{display:inline-flex;align-items:center;justify-content:center;width:1.125rem;height:1.125rem;padding:0;background:transparent;border:1.5px solid var(--sl-color-gray-4);border-radius:.25rem;color:transparent;cursor:pointer;flex-shrink:0;transition:all .15s ease}.fp-check:hover{border-color:var(--sl-color-accent)}.fp-lesson.is-done .fp-check{background:var(--fp-success);border-color:var(--fp-success);color:#fff}.fp-lesson-link{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:.625rem;text-decoration:none;color:var(--sl-color-text);min-width:0}.fp-lesson-link:hover .fp-lesson-title{color:var(--sl-color-accent);text-decoration:underline}.fp-lesson-type{display:inline-block;padding:.125rem .4rem;border-radius:.25rem;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;line-height:1.25;flex-shrink:0}.fp-lesson-type-cours{background:color-mix(in srgb,var(--fp-blue) 12%,transparent);color:var(--fp-blue)}.fp-lesson-type-lab{background:color-mix(in srgb,var(--fp-orange) 12%,transparent);color:var(--fp-orange)}.fp-lesson-type-quiz{background:color-mix(in srgb,var(--fp-purple) 12%,transparent);color:var(--fp-purple)}.fp-lesson-type-reference{background:var(--sl-color-gray-6);color:var(--sl-color-gray-2)}.fp-lesson-title{font-size:.875rem;font-weight:500;line-height:1.35;overflow:hidden;text-overflow:ellipsis}.fp-lesson.is-done .fp-lesson-title{color:var(--sl-color-gray-3);text-decoration:line-through}.fp-lesson-duration{font-size:.72rem;color:var(--sl-color-gray-3);white-space:nowrap;font-variant-numeric:tabular-nums;flex-shrink:0}@media(max-width:50rem){.fp{margin:1rem 0;font-size:.9rem}.fp-head{padding:.875rem 1rem}.fp-title{font-size:1.15rem}.fp-subtitle{font-size:.85rem}.fp-stats{gap:.5rem .875rem;font-size:.75rem}.fp-stats strong{font-size:.85rem}.fp-progress{top:3.5rem;padding:.625rem .875rem .75rem}.fp-actions{gap:.375rem}.fp-module-summary{padding:.625rem .75rem;gap:.625rem}.fp-module-index{width:1.75rem;height:1.75rem;font-size:.72rem}.fp-module-title{font-size:.9rem}.fp-lessons{margin-left:1.625rem}.fp-lesson{padding:.4rem .625rem;gap:.5rem}.fp-lesson-link{grid-template-columns:auto 1fr;grid-template-rows:auto auto;row-gap:.125rem}.fp-lesson-type{grid-row:1;grid-column:1}.fp-lesson-title{grid-row:1;grid-column:2}.fp-lesson-duration{grid-row:2;grid-column:2}}.lp{margin:0 0 1.25rem;padding:.625rem .875rem;background:linear-gradient(90deg,color-mix(in srgb,var(--sl-color-accent) 10%,var(--sl-color-bg)) 0%,var(--sl-color-bg) 100%);border:1px solid color-mix(in srgb,var(--sl-color-accent) 22%,transparent);border-left:3px solid var(--sl-color-accent);border-radius:.5rem;font-size:.85rem}.lp-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.lp-context{display:inline-flex;align-items:center;gap:.375rem;color:var(--sl-color-gray-2);min-width:0;flex-wrap:wrap}.lp-context a{color:var(--sl-color-accent);text-decoration:none;font-weight:600}.lp-context a:hover{text-decoration:underline}.lp-context .lp-module-name{font-weight:600;color:var(--sl-color-text)}.lp-context .lp-position{color:var(--sl-color-gray-3);font-variant-numeric:tabular-nums}.lp-mark{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;background:transparent;border:1.5px solid var(--sl-color-gray-4);border-radius:999px;color:var(--sl-color-gray-2);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s ease;flex-shrink:0}.lp-mark:hover{border-color:var(--sl-color-accent);color:var(--sl-color-accent)}.lp.is-done .lp-mark{background:var(--fp-success, #2f9e44);border-color:var(--fp-success, #2f9e44);color:#fff}.lp-mark .lp-mark-icon{display:inline-flex;align-items:center;justify-content:center}.lp-bars{display:grid;grid-template-columns:1fr 1fr;gap:.5rem 1.25rem;margin-top:.5rem;padding-top:.5rem;border-top:1px dashed color-mix(in srgb,var(--sl-color-gray-4) 50%,transparent)}.lp-bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;font-size:.75rem;color:var(--sl-color-gray-3);min-width:0}.lp-bar-label{font-weight:700;text-transform:uppercase;font-size:.62rem;letter-spacing:.05em;color:var(--sl-color-gray-2);white-space:nowrap}.lp-bar-track{display:block;height:.375rem;background:var(--sl-color-gray-5);border-radius:999px;overflow:hidden;min-width:0}.lp-bar-fill{display:block;height:100%;background:linear-gradient(90deg,var(--fp-success, #2f9e44) 0%,color-mix(in srgb,var(--fp-success, #2f9e44) 70%,#b2f2bb) 100%);border-radius:999px;transition:width .3s ease}.lp-bar-value{font-variant-numeric:tabular-nums;white-space:nowrap}.lp-bar-value strong{color:var(--sl-color-text);font-weight:700}.lp-bar-pct{margin-left:.25rem;color:var(--sl-color-accent);font-weight:700}.lp-nav{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.5rem;padding-top:.5rem;border-top:1px dashed color-mix(in srgb,var(--sl-color-gray-4) 50%,transparent)}.lp-nav-link{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;color:var(--sl-color-gray-2);text-decoration:none;font-size:.78rem;border-radius:.25rem;max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:all .15s ease}.lp-nav-link:hover{background:var(--sl-color-gray-6);color:var(--sl-color-accent)}.lp-nav-link.lp-nav-disabled{opacity:.4;pointer-events:none}.lp-nav-link svg{flex-shrink:0}.lp-nav-link-label{overflow:hidden;text-overflow:ellipsis}@media(max-width:50rem){.lp{padding:.5rem .75rem;font-size:.8rem}.lp-bars{grid-template-columns:1fr;gap:.375rem}.lp-bar{font-size:.7rem}.lp-nav-link{max-width:45%;font-size:.72rem}}
