@font-face{font-family:Plus Jakarta Sans;font-weight:400;font-display:swap;src:url(../../vendor/fonts/plus-jakarta-sans-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Plus Jakarta Sans;font-weight:500;font-display:swap;src:url(../../vendor/fonts/plus-jakarta-sans-latin-500-normal.woff2) format("woff2")}@font-face{font-family:Plus Jakarta Sans;font-weight:600;font-display:swap;src:url(../../vendor/fonts/plus-jakarta-sans-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Plus Jakarta Sans;font-weight:700;font-display:swap;src:url(../../vendor/fonts/plus-jakarta-sans-latin-700-normal.woff2) format("woff2")}@font-face{font-family:Plus Jakarta Sans;font-weight:800;font-display:swap;src:url(../../vendor/fonts/plus-jakarta-sans-latin-800-normal.woff2) format("woff2")}@font-face{font-family:Inter;font-weight:400;font-display:swap;src:url(../../vendor/fonts/inter-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Inter;font-weight:500;font-display:swap;src:url(../../vendor/fonts/inter-latin-500-normal.woff2) format("woff2")}@font-face{font-family:Inter;font-weight:600;font-display:swap;src:url(../../vendor/fonts/inter-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Inter;font-weight:700;font-display:swap;src:url(../../vendor/fonts/inter-latin-700-normal.woff2) format("woff2")}@font-face{font-family:PLP Greek;font-weight:400;font-display:swap;unicode-range:U+0370-03FF;src:url(../../vendor/fonts/inter-greek-400-normal.woff2) format("woff2")}@font-face{font-family:PLP Greek;font-weight:500;font-display:swap;unicode-range:U+0370-03FF;src:url(../../vendor/fonts/inter-greek-500-normal.woff2) format("woff2")}@font-face{font-family:PLP Greek;font-weight:600;font-display:swap;unicode-range:U+0370-03FF;src:url(../../vendor/fonts/inter-greek-600-normal.woff2) format("woff2")}@font-face{font-family:PLP Greek;font-weight:700 800;font-display:swap;unicode-range:U+0370-03FF;src:url(../../vendor/fonts/inter-greek-700-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:400;font-display:swap;src:url(../../vendor/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:500;font-display:swap;src:url(../../vendor/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:600;font-display:swap;src:url(../../vendor/fonts/jetbrains-mono-latin-600-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:700;font-display:swap;src:url(../../vendor/fonts/jetbrains-mono-latin-700-normal.woff2) format("woff2")}:root{--font-ui: "Plus Jakarta Sans", "PLP Greek", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-text: "Inter", "PLP Greek", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "PLP Greek", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--plp-navy-950: #060a17;--plp-navy-900: #0a1126;--plp-navy-800: #111a36;--plp-navy-700: #1a2550;--plp-blue: #3461f5;--plp-blue-600: #2a50d8;--plp-cyan: #0fb5d8;--plp-teal: #0ea5a0;--plp-violet: #7c5cf5;--plp-pink: #e1489b;--plp-success: #0a7a55;--plp-warning: #9c5d06;--plp-danger: #d83a52;--plp-bg: #f4f6fb;--plp-surface: #ffffff;--plp-surface-2: #f6f8fc;--plp-surface-3: #eef2f9;--plp-text: #0d1527;--plp-muted: #5a6479;--plp-border: #e3e8f1;--plp-border-strong: #cfd7e6;--plp-accent: var(--plp-blue);--plp-accent-soft: #eaf0ff;--plp-accent-text: #2346c4;--plp-cyan-soft: #e2f7fb;--plp-violet-soft: #f0ebff;--plp-green-soft: #e3f6ef;--plp-amber-soft: #fbf1df;--plp-red-soft: #fde8ec;--plp-focus: #3461f5;--plp-grad: linear-gradient(135deg, #0fb5d8 0%, #3461f5 55%, #7c5cf5 100%);--plp-grad-soft: linear-gradient(135deg, rgba(15,181,216,.12), rgba(52,97,245,.1) 55%, rgba(124,92,245,.12));--plp-shadow-xs: 0 1px 2px rgba(13, 21, 39, .05);--plp-shadow: 0 1px 2px rgba(13, 21, 39, .04), 0 6px 20px -6px rgba(13, 21, 39, .1);--plp-shadow-lg: 0 2px 4px rgba(13, 21, 39, .04), 0 18px 40px -12px rgba(13, 21, 39, .22);--plp-radius: 18px;--plp-radius-md: 14px;--plp-radius-sm: 10px;--plp-sidebar-w: 272px;--plp-sidebar-w-collapsed: 84px;--plp-topbar-h: 68px;--plp-ease: cubic-bezier(.2, .8, .2, 1);--bs-body-font-family: var(--font-text);--bs-font-monospace: var(--font-mono);--bs-body-bg: var(--plp-bg);--bs-body-color: var(--plp-text);--bs-border-color: var(--plp-border);--bs-primary: var(--plp-blue);--bs-primary-rgb: 52, 97, 245;--bs-link-color: #2a50d8;--bs-link-color-rgb: 42, 80, 216;--bs-link-hover-color: #1d3cae;--bs-link-hover-color-rgb: 29, 60, 174;--bs-secondary-color: var(--plp-muted);--bs-border-radius: var(--plp-radius-sm);--bs-border-radius-sm: 8px;--bs-border-radius-lg: var(--plp-radius-md);--bs-success-rgb: 10, 122, 85;--bs-warning-rgb: 156, 93, 6;--bs-danger-rgb: 216, 58, 82}[data-bs-theme=dark]{--plp-bg: #070b18;--plp-surface: #0e1528;--plp-surface-2: #121b33;--plp-surface-3: #18233f;--plp-text: #e8edf7;--plp-muted: #9aa6bf;--plp-border: #1f2b4a;--plp-border-strong: #2c3a60;--plp-accent: #6d90ff;--plp-accent-soft: #16244d;--plp-accent-text: #a9bfff;--plp-cyan-soft: #0b2a36;--plp-violet-soft: #221a48;--plp-green-soft: #0b2c22;--plp-amber-soft: #33260b;--plp-red-soft: #3a1520;--plp-focus: #7ea0ff;--plp-success: #34c995;--plp-warning: #f0b44f;--bs-success-rgb: 52, 201, 149;--bs-warning-rgb: 240, 180, 79;--plp-danger: #ff6b81;--plp-grad-soft: linear-gradient(135deg, rgba(15,181,216,.16), rgba(52,97,245,.14) 55%, rgba(124,92,245,.18));--plp-shadow-xs: 0 1px 2px rgba(0, 0, 0, .35);--plp-shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px -8px rgba(0, 0, 0, .55);--plp-shadow-lg: 0 2px 4px rgba(0, 0, 0, .3), 0 22px 48px -14px rgba(0, 0, 0, .7);--bs-body-bg: var(--plp-bg);--bs-body-color: var(--plp-text);--bs-border-color: var(--plp-border);--bs-link-color: #8eaaff;--bs-link-color-rgb: 142, 170, 255;--bs-link-hover-color: #b6c8ff;--bs-link-hover-color-rgb: 182, 200, 255;--bs-secondary-color: var(--plp-muted);--bs-secondary-bg: var(--plp-surface-2);--bs-tertiary-bg: var(--plp-surface-2);--bs-emphasis-color: #fff}html,body{overflow-x:hidden}body{font-family:var(--font-text);font-size:.9375rem;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--plp-bg);color:var(--plp-text);text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.brand,.btn,.nav-link,.form-label,.badge-soft,.chip,.stat .value,.eyebrow,.small-caps{font-family:var(--font-ui)}h1,h2,h3,h4,h5,.h1,.h2,.h3,.h4,.h5{letter-spacing:-.02em;color:var(--plp-text)}h1,.h1{font-weight:800;font-size:clamp(1.55rem,1.2rem + 1.2vw,2.15rem);line-height:1.15}h2,.h2{font-weight:700;font-size:1.3rem}h3,.h3{font-weight:700;font-size:1.08rem}h6,.h6{font-weight:700}code,kbd,pre,.font-monospace{font-family:var(--font-mono)!important}code{color:#5b37dd;font-size:.86em}[data-bs-theme=dark] code{color:#b8a6ff}.text-muted,.text-secondary{color:var(--plp-muted)!important}.text-accent{color:var(--plp-accent-text)!important}.tabular{font-variant-numeric:tabular-nums}.min-w-0{min-width:0}.small-caps{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--plp-muted)}.eyebrow{display:inline-flex;align-items:center;gap:.4rem;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--plp-accent-text);margin-bottom:.35rem}.eyebrow .bi{font-size:.95rem}::selection{background:color-mix(in srgb,var(--plp-blue) 25%,transparent)}:focus-visible{outline:3px solid var(--plp-focus)!important;outline-offset:2px;border-radius:6px}.skip-link{position:absolute;left:-9999px;top:8px;z-index:2000;background:#fff;color:#000;padding:8px 14px;border-radius:10px;font-weight:600}.skip-link:focus{left:12px}.app-shell{min-height:100vh}.sidebar{--bs-offcanvas-width: var(--plp-sidebar-w);background:radial-gradient(600px 300px at -10% -5%,rgba(15,181,216,.16),transparent 60%),radial-gradient(500px 400px at 120% 100%,rgba(124,92,245,.16),transparent 60%),linear-gradient(180deg,var(--plp-navy-900),var(--plp-navy-950));color:#c9d3e8;border-right:1px solid rgba(255,255,255,.05)}@media (min-width: 992px){.sidebar{position:fixed;inset:0 auto 0 0;width:var(--plp-sidebar-w);z-index:1030;transition:width .25s var(--plp-ease)}.app-main{margin-left:var(--plp-sidebar-w);transition:margin-left .25s var(--plp-ease)}body.sidebar-collapsed .sidebar{width:var(--plp-sidebar-w-collapsed)}body.sidebar-collapsed .app-main{margin-left:var(--plp-sidebar-w-collapsed)}body.sidebar-collapsed .sidebar .nav-label,body.sidebar-collapsed .sidebar .nav-section,body.sidebar-collapsed .sidebar .brand-text,body.sidebar-collapsed .sidebar .sidebar-foot-text,body.sidebar-collapsed .sidebar .user-card .who{display:none}body.sidebar-collapsed .sidebar .nav-link{justify-content:center;padding-inline:0;margin-inline:.9rem}body.sidebar-collapsed .sidebar .user-card{justify-content:center}body.sidebar-collapsed .sidebar .nav-group+.nav-group{border-top:1px solid rgba(255,255,255,.06)}}.sidebar .offcanvas-body{display:flex;flex-direction:column;padding:0;height:100%;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent}.sidebar-brand{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;color:#fff;text-decoration:none;min-height:var(--plp-topbar-h)}.sidebar-brand:hover{color:#fff}.brand-mark{width:38px;height:38px;flex:0 0 38px;border-radius:12px;background:#ffffff0f;padding:3px;box-shadow:0 0 0 1px #ffffff14,0 8px 20px -6px #0fb5d873}.brand-text{font-family:var(--font-ui);font-weight:800;letter-spacing:-.01em;font-size:1.05rem;line-height:1.1}.brand-text small{display:block;font-weight:500;font-size:.7rem;color:#8ea0c4;letter-spacing:.02em;margin-top:2px}.nav-group{padding-bottom:.35rem}.nav-section{padding:.95rem 1.4rem .35rem;font-family:var(--font-ui);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:#6c7ca2;font-weight:700}.sidebar .nav-link{--tone: #8fa2c9;position:relative;display:flex;align-items:center;gap:.75rem;margin:2px .75rem;padding:.5rem .65rem;border-radius:12px;color:#c3cde3;font-weight:600;font-size:.875rem;min-height:42px;transition:background .15s ease,color .15s ease}.sidebar .nav-link .nav-ico{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:0 0 30px;border-radius:9px;background:#ffffff0a;color:var(--tone);transition:background .15s ease,color .15s ease,transform .2s var(--plp-ease)}.sidebar .nav-link .bi{font-size:1rem}.sidebar .nav-link:hover{background:#ffffff0f;color:#fff}.sidebar .nav-link:hover .nav-ico{transform:scale(1.06)}.sidebar .nav-link.active{background:linear-gradient(90deg,#ffffff1a,#ffffff08);color:#fff;box-shadow:inset 0 0 0 1px #ffffff0f}.sidebar .nav-link.active:before{content:"";position:absolute;left:-.75rem;top:9px;bottom:9px;width:4px;border-radius:0 4px 4px 0;background:var(--tone);box-shadow:0 0 12px var(--tone)}.sidebar .nav-link.active .nav-ico{background:var(--tone);color:#08101f}.nav-group.tone-learn .nav-link{--tone: #5b8cff}.nav-group.tone-lab .nav-link{--tone: #22c7e3}.nav-group.tone-assess .nav-link{--tone: #a48bff}.nav-group.tone-manage .nav-link{--tone: #f4b740}.sidebar .badge-phase{margin-left:auto;white-space:nowrap;font-size:.62rem;background:#7c5cf540;color:#cfc4ff;border-radius:6px;padding:.15rem .4rem;font-weight:600}.sidebar-foot{margin-top:auto;padding:.9rem;border-top:1px solid rgba(255,255,255,.06)}.sidebar-foot-text{display:block;font-size:.7rem;color:#6c7ca2;padding:.55rem .4rem 0;line-height:1.45}.user-card{display:flex;align-items:center;gap:.65rem;padding:.55rem;border-radius:14px;background:#ffffff0a;color:#e6ecf8;text-decoration:none;box-shadow:inset 0 0 0 1px #ffffff0d}.user-card:hover{background:#ffffff14;color:#fff}.user-card .who{min-width:0;line-height:1.2}.user-card .who strong{display:block;font-family:var(--font-ui);font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-card .who span{font-size:.72rem;color:#8ea0c4}.topbar{position:sticky;top:0;z-index:1020;height:var(--plp-topbar-h);display:flex;align-items:center;gap:.75rem;padding:0 1.5rem;background:color-mix(in srgb,var(--plp-bg) 78%,transparent);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid color-mix(in srgb,var(--plp-border) 70%,transparent)}.btn-icon{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:12px;border:1px solid transparent;color:var(--plp-muted);background:transparent;position:relative;transition:background .15s ease,color .15s ease,border-color .15s ease}.btn-icon:hover,.btn-icon[aria-expanded=true]{background:var(--plp-surface);color:var(--plp-text);border-color:var(--plp-border);box-shadow:var(--plp-shadow-xs)}.btn-icon-sm{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:0;background:transparent;color:var(--plp-muted)}.btn-icon-sm:hover{background:var(--plp-red-soft);color:var(--plp-danger)}.topbar .notif-dot{position:absolute;top:5px;right:5px;min-width:18px;height:18px;border-radius:9px;background:linear-gradient(135deg,#ff5f7a,var(--plp-danger));color:#fff;font-size:.62rem;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 0 0 2px var(--plp-bg)}.global-search{position:relative;flex:1 1 auto;max-width:560px}.global-search .form-control{padding-left:2.6rem;padding-right:3.4rem;border-radius:14px;background:var(--plp-surface);height:44px;border-color:var(--plp-border);box-shadow:var(--plp-shadow-xs)}.global-search>.bi{position:absolute;left:.95rem;top:50%;transform:translateY(-50%);color:var(--plp-muted);pointer-events:none}.global-search .kbd-hint{position:absolute;right:.7rem;top:50%;transform:translateY(-50%);pointer-events:none}@media (max-width: 575.98px){.global-search .kbd-hint{display:none}.global-search .form-control{padding-right:.9rem}}.search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:1050;background:var(--plp-surface);border:1px solid var(--plp-border);border-radius:16px;box-shadow:var(--plp-shadow-lg);max-height:64vh;overflow:auto;padding:.35rem}.search-results a{display:flex;align-items:center;gap:.75rem;padding:.55rem .7rem;color:var(--plp-text);text-decoration:none;border-radius:10px}.search-results a .sr-ico{width:32px;height:32px;flex:0 0 32px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:var(--plp-accent-soft);color:var(--plp-accent)}.search-results a .sr-ico.t-experiment{background:var(--plp-cyan-soft);color:var(--plp-teal)}.search-results a .sr-ico.t-lesson{background:var(--plp-violet-soft);color:var(--plp-violet)}.search-results a .sr-ico.t-formula{background:var(--plp-amber-soft);color:var(--plp-warning)}.search-results a .sr-text{min-width:0;flex:1;line-height:1.25}.search-results a .sr-text small{display:block;color:var(--plp-muted);font-size:.74rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-results a:hover,.search-results a:focus{background:var(--plp-surface-2);outline:none}.search-results a:focus-visible{box-shadow:inset 0 0 0 2px var(--plp-focus)}.search-results a.search-all{margin-top:.25rem;border-top:1px solid var(--plp-border);border-radius:0 0 10px 10px;font-weight:600;justify-content:space-between;color:var(--plp-accent)}.avatar{width:36px;height:36px;border-radius:12px;background:var(--plp-grad);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-ui);font-weight:800;font-size:.85rem;flex:0 0 auto;box-shadow:0 6px 14px -6px #3461f599}.avatar.lg{width:56px;height:56px;border-radius:18px;font-size:1.25rem}.content{padding:1.75rem 1.75rem 3.5rem;max-width:1480px;margin:0 auto}@media (max-width: 991.98px){.content{padding-bottom:6rem}}@media (max-width: 575.98px){.content{padding:1.1rem 1rem 6rem}.topbar{padding:0 .75rem;gap:.4rem}}.content>.page-head{position:relative;z-index:20}.content>:has(>.dropdown-menu.show),.content>:has(.dropdown-menu.show){position:relative;z-index:30}.pw-toggle{position:absolute;top:0;right:0}.page-head{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;align-items:flex-end;justify-content:space-between;margin-bottom:1.5rem}.page-head>div:first-child{min-width:0}.page-head h1{margin-bottom:0}.page-head p{margin:.45rem 0 0;color:var(--plp-muted);max-width:72ch}.breadcrumb{--bs-breadcrumb-divider-color: var(--plp-muted);font-size:.8rem;margin-bottom:.45rem;font-family:var(--font-ui);font-weight:600}.breadcrumb a{text-decoration:none;color:var(--plp-muted)}.breadcrumb a:hover{color:var(--plp-accent)}.panel{background:var(--plp-surface);border:1px solid var(--plp-border);border-radius:var(--plp-radius);box-shadow:var(--plp-shadow)}.panel-body{padding:1.35rem}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem 1.35rem;border-bottom:1px solid var(--plp-border);flex-wrap:wrap}.panel-head h2,.panel-head h3{margin:0;font-size:1rem;display:flex;align-items:center;gap:.55rem}.panel-head h2 .ico,.panel-head h3 .ico{width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:var(--plp-accent-soft);color:var(--plp-accent-text);font-size:.95rem}.panel-head a.small{font-weight:600;text-decoration:none}.panel-head>h2:not(:has(.ico)):before,.panel-head>h3:not(:has(.ico)):before{content:"";width:4px;height:18px;border-radius:4px;background:var(--plp-grad);flex:0 0 4px}.panel.lift,a.panel{transition:transform .2s var(--plp-ease),box-shadow .2s var(--plp-ease),border-color .2s ease}.panel.lift:hover,a.panel:hover{transform:translateY(-3px);box-shadow:var(--plp-shadow-lg);border-color:var(--plp-border-strong)}.card{--bs-card-bg: var(--plp-surface);--bs-card-border-color: var(--plp-border);border-radius:var(--plp-radius)}.glass{background:color-mix(in srgb,var(--plp-surface) 72%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.form-control,.form-select{--bs-body-bg: var(--plp-surface);border-color:var(--plp-border-strong);border-radius:11px;min-height:40px;transition:border-color .15s ease,box-shadow .15s ease}.form-control-sm,.form-select-sm{border-radius:9px;min-height:32px}.form-control-lg{border-radius:13px;min-height:50px;font-size:1rem}.form-control:hover,.form-select:hover{border-color:color-mix(in srgb,var(--plp-accent) 35%,var(--plp-border-strong))}.form-control:focus,.form-select:focus{border-color:var(--plp-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--plp-accent) 18%,transparent)}.form-label{font-weight:600;font-size:.84rem;margin-bottom:.35rem}.form-text{color:var(--plp-muted)}.form-check-input{border-color:var(--plp-border-strong)}.form-check-input:checked{background-color:var(--plp-blue);border-color:var(--plp-blue)}.input-group-text{background:var(--plp-surface-2);border-color:var(--plp-border-strong);color:var(--plp-muted);font-size:.85rem}.input-group>.form-control:not(:first-child),.input-group>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-control:not(:last-child),.input-group>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-icon{position:relative}.input-icon>.bi{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);color:var(--plp-muted);pointer-events:none}.input-icon>.form-control{padding-left:2.3rem}.btn{font-weight:700;border-radius:12px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:.15rem;letter-spacing:-.005em;transition:transform .15s var(--plp-ease),box-shadow .15s ease,background .15s ease,color .15s ease,border-color .15s ease,filter .15s ease}.btn-sm{min-height:32px;border-radius:10px;font-size:.8rem;padding:.3rem .7rem}.btn-lg{min-height:52px;border-radius:14px}.btn:active{transform:translateY(1px)}.btn-link{font-weight:600;min-height:0}.btn-primary{--bs-btn-bg: var(--plp-blue);--bs-btn-border-color: var(--plp-blue);--bs-btn-hover-bg: var(--plp-blue-600);--bs-btn-hover-border-color: var(--plp-blue-600);--bs-btn-active-bg: #2244bd;--bs-btn-active-border-color: #2244bd;box-shadow:0 6px 16px -8px #3461f5b3}.btn-accent{background:var(--plp-grad);background-size:140% 140%;background-position:0 0;color:#fff;border:0;box-shadow:0 10px 22px -10px #3461f5bf,inset 0 1px #ffffff38}.btn-accent:hover,.btn-accent:focus-visible{color:#fff;background-position:100% 100%;box-shadow:0 14px 26px -10px #3461f5d9,inset 0 1px #ffffff38;transform:translateY(-1px)}.btn-accent:disabled{color:#fff;opacity:.6}.btn-soft{background:var(--plp-accent-soft);color:var(--plp-accent-text);border:1px solid transparent}.btn-soft:hover,.btn-soft:focus-visible{background:var(--plp-accent);color:#fff}.btn-outline-secondary{--bs-btn-color: var(--plp-text);--bs-btn-border-color: var(--plp-border-strong);--bs-btn-bg: var(--plp-surface);--bs-btn-hover-bg: var(--plp-surface-2);--bs-btn-hover-color: var(--plp-text);--bs-btn-hover-border-color: var(--plp-border-strong);--bs-btn-active-bg: var(--plp-surface-3);--bs-btn-active-color: var(--plp-text);box-shadow:var(--plp-shadow-xs)}.btn-outline-danger{--bs-btn-bg: var(--plp-surface)}[data-bs-theme=dark] .btn-outline-danger{--bs-btn-color: #ff8a9b;--bs-btn-border-color: #ff8a9b;--bs-btn-hover-bg: #ff6b81;--bs-btn-hover-border-color: #ff6b81;--bs-btn-hover-color: #1a0a0e}[data-bs-theme=dark] .btn-outline-success{--bs-btn-color: #4fd8a6;--bs-btn-border-color: #4fd8a6;--bs-btn-hover-bg: #34c995;--bs-btn-hover-border-color: #34c995;--bs-btn-hover-color: #04140e}[data-bs-theme=dark] .btn-outline-primary{--bs-btn-color: #a9bfff;--bs-btn-border-color: #8eaaff;--bs-btn-hover-bg: #6d90ff;--bs-btn-hover-border-color: #6d90ff;--bs-btn-hover-color: #08101f}.btn-white{background:#fff;color:#0d1527;border:0;box-shadow:0 10px 22px -12px #00000073}.btn-white:hover{background:#fff;color:#0d1527;transform:translateY(-1px)}.btn-glass{background:#ffffff24;color:#fff;border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.btn-glass:hover{background:#ffffff3d;color:#fff}.stat{padding:1.2rem 1.25rem;height:100%;position:relative;overflow:hidden}.stat .stat-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.55rem}.stat .label{font-size:.8rem;color:var(--plp-muted);font-weight:600;font-family:var(--font-ui)}.stat .value{font-weight:800;font-size:1.85rem;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.stat .value small,.stat .value .unit{font-size:.95rem;font-weight:700;color:var(--plp-muted);letter-spacing:0}.stat .hint{font-size:.78rem;color:var(--plp-muted);margin-top:.35rem}.stat .hint a{font-weight:600}.stat:after{content:"";position:absolute;right:-46px;top:-46px;width:110px;height:110px;border-radius:50%;background:var(--tone-soft, var(--plp-accent-soft));opacity:.6;pointer-events:none}.stat>*{position:relative;z-index:1}.icon-tile{--tone: var(--plp-blue);width:42px;height:42px;flex:0 0 42px;border-radius:13px;display:inline-flex;align-items:center;justify-content:center;font-size:1.15rem;color:#fff;background:linear-gradient(135deg,color-mix(in srgb,var(--tone) 80%,#fff),var(--tone));box-shadow:0 8px 18px -8px var(--tone)}.icon-tile.sm{width:34px;height:34px;flex-basis:34px;border-radius:10px;font-size:.95rem}.tone-blue{--tone: #3461f5;--tone-soft: var(--plp-accent-soft)}.tone-cyan{--tone: #0fb5d8;--tone-soft: var(--plp-cyan-soft)}.tone-violet{--tone: #7c5cf5;--tone-soft: var(--plp-violet-soft)}.tone-green{--tone: #10a674;--tone-soft: var(--plp-green-soft)}.tone-amber{--tone: #e39a13;--tone-soft: var(--plp-amber-soft)}.tone-pink{--tone: #e1489b;--tone-soft: #fce8f3}.tone-red{--tone: #d83a52;--tone-soft: var(--plp-red-soft)}[data-bs-theme=dark] .tone-pink{--tone-soft: #3a1630}.progress{--bs-progress-bg: var(--plp-surface-3);--bs-progress-height: .55rem;--bs-progress-bar-bg: var(--plp-blue);border-radius:99px;overflow:hidden}.progress .progress-bar{background:var(--plp-grad);border-radius:99px;transition:width .9s var(--plp-ease)}.ring{--p: 0;--size: 120px;--track: var(--plp-surface-3);--thick: 11px;width:var(--size);height:var(--size);border-radius:50%;display:grid;place-items:center;position:relative;flex:0 0 auto;background:conic-gradient(from -90deg,var(--plp-cyan) 0,var(--plp-blue) calc(var(--p) * .6%),var(--plp-violet) calc(var(--p) * 1%),var(--track) 0)}.ring:before{content:"";position:absolute;inset:var(--thick);border-radius:50%;background:var(--ring-bg, var(--plp-surface))}.ring>span{position:relative;text-align:center;font-family:var(--font-ui);font-weight:800;font-size:1.6rem;line-height:1;letter-spacing:-.03em}.ring>span small{display:block;font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--plp-muted);margin-top:.3rem}.ring.sm{--size: 52px;--thick: 6px}.ring.sm>span{font-size:.78rem}.badge-soft{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:700;padding:.25rem .6rem;border-radius:99px;background:var(--plp-surface-2);color:var(--plp-muted);border:1px solid var(--plp-border);white-space:nowrap;line-height:1.3}.badge-soft.blue{background:var(--plp-accent-soft);color:var(--plp-accent-text);border-color:transparent}.badge-soft.cyan{background:var(--plp-cyan-soft);color:#056579;border-color:transparent}[data-bs-theme=dark] .badge-soft.cyan{color:#6fd6f2}.badge-soft.violet{background:var(--plp-violet-soft);color:#6440e6;border-color:transparent}[data-bs-theme=dark] .badge-soft.violet{color:#b9a8ff}.badge-soft.green{background:var(--plp-green-soft);color:#0b7e58;border-color:transparent}.badge-soft.amber{background:var(--plp-amber-soft);color:#9a5f05;border-color:transparent}.badge-soft.red{background:var(--plp-red-soft);color:#b62a41;border-color:transparent}[data-bs-theme=dark] .badge-soft.green{color:#48d3a2}[data-bs-theme=dark] .badge-soft.amber{color:#f0b85a}[data-bs-theme=dark] .badge-soft.red{color:#ff8b9c}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .8rem;border-radius:99px;border:1px solid var(--plp-border-strong);background:var(--plp-surface);color:var(--plp-text);font-size:.8rem;font-weight:700;cursor:pointer;text-decoration:none;transition:all .15s ease}.chip:hover{border-color:var(--plp-accent);color:var(--plp-accent)}.chip.active{background:var(--plp-text);color:var(--plp-surface);border-color:var(--plp-text)}.chip .chip-count{font-size:.7rem;padding:0 .4rem;border-radius:99px;background:var(--plp-surface-3);color:var(--plp-muted)}.chip.active .chip-count{background:#fff3;color:inherit}.segmented{display:inline-flex;flex-wrap:wrap;gap:.25rem;padding:.25rem;border-radius:14px;background:var(--plp-surface-3)}.seg-btn{border:0;background:transparent;color:var(--plp-muted);padding:.45rem .8rem;border-radius:10px;font-family:var(--font-ui);font-weight:600;font-size:.85rem;display:inline-flex;gap:.35rem;align-items:baseline;transition:all .15s ease}.seg-btn:hover{color:var(--plp-text)}.seg-btn.active{background:var(--plp-surface);color:var(--plp-text);box-shadow:var(--plp-shadow)}.kbd,kbd{font-family:var(--font-mono);font-size:.7rem;font-weight:600;border:1px solid var(--plp-border-strong);border-bottom-width:2px;padding:.05rem .4rem;border-radius:6px;background:var(--plp-surface-2);color:var(--plp-muted)}.empty-state{text-align:center;padding:2.25rem 1.25rem;color:var(--plp-muted)}.empty-state .bi{font-size:1.5rem;color:var(--plp-accent);display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:18px;background:var(--plp-accent-soft);margin-bottom:.8rem}.empty-state strong{color:var(--plp-text);display:block;margin-bottom:.3rem;font-family:var(--font-ui);font-size:1rem}.list-clean{list-style:none;padding:0;margin:0}.list-clean>li{padding:.8rem 0;border-bottom:1px solid var(--plp-border)}.list-clean>li:last-child{border-bottom:0}.list-rich{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.list-rich>li{display:flex;align-items:center;gap:.85rem;padding:.7rem .8rem;border-radius:14px;border:1px solid var(--plp-border);background:var(--plp-surface);transition:border-color .15s ease,background .15s ease,transform .15s var(--plp-ease);position:relative}.list-rich>li:hover{border-color:var(--plp-border-strong);background:var(--plp-surface-2)}.list-rich .li-main{flex:1;min-width:0}.list-rich .li-main a{font-family:var(--font-ui);font-weight:700;text-decoration:none;color:var(--plp-text)}.list-rich .li-main a:hover{color:var(--plp-accent)}.list-rich .li-meta{font-size:.78rem;color:var(--plp-muted)}.mini-progress{height:5px;border-radius:99px;background:var(--plp-surface-3);overflow:hidden;margin-top:.45rem;max-width:260px}.mini-progress>span{display:block;height:100%;border-radius:inherit;background:var(--plp-grad)}.hero{position:relative;overflow:hidden;border-radius:24px;padding:1.75rem;color:#fff;background:radial-gradient(500px 260px at 92% -10%,rgba(124,92,245,.55),transparent 60%),radial-gradient(520px 300px at 0% 120%,rgba(15,181,216,.45),transparent 60%),linear-gradient(135deg,#0b1534,#172a6b 55%,#2d2a8c);box-shadow:var(--plp-shadow-lg);isolation:isolate}.hero:before{content:"";position:absolute;inset:0;z-index:-1;opacity:.5;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:radial-gradient(ellipse at 70% 30%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse at 70% 30%,#000 20%,transparent 75%)}.hero .hero-orbit{position:absolute;right:-60px;top:-70px;width:300px;height:300px;border-radius:50%;border:1px dashed rgba(255,255,255,.18);z-index:-1;animation:spin 60s linear infinite}.hero .hero-orbit:after{content:"";position:absolute;top:40px;left:36px;width:12px;height:12px;border-radius:50%;background:#7fe3ff;box-shadow:0 0 18px #7fe3ff}.hero .hero-orbit.o2{right:10px;top:0;width:180px;height:180px;animation-duration:38s;animation-direction:reverse}.hero .hero-orbit.o2:after{background:#c7b8ff;box-shadow:0 0 16px #c7b8ff;top:auto;bottom:20px;left:20px;width:9px;height:9px}.hero h1,.hero h2{color:#fff}.hero p,.hero .hero-sub{color:#e6edffd1}.hero .eyebrow{color:#8fe6ff}.hero .ring{--track: rgba(255,255,255,.14);--ring-bg: #142563}.hero .ring>span small{color:#e6edffb3}.hero-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.9rem}.hero-pill{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;padding:.3rem .7rem;border-radius:99px;background:#ffffff1a;border:1px solid rgba(255,255,255,.14);color:#eaf0ff;font-family:var(--font-ui)}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 575.98px){.hero{padding:1.25rem;border-radius:20px}.hero h1{font-size:1.55rem}.hero .ring{--size: 92px !important;--thick: 9px}.hero .ring>span{font-size:1.2rem}.hero-pill{font-size:.72rem;padding:.25rem .6rem}.hero .hero-orbit{width:200px;height:200px;right:-80px}.hero .btn{flex:1 1 auto}}.quick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.quick{display:flex;flex-direction:column;gap:.7rem;padding:1rem;border-radius:16px;background:var(--plp-surface);border:1px solid var(--plp-border);text-decoration:none;color:var(--plp-text);box-shadow:var(--plp-shadow-xs);transition:transform .2s var(--plp-ease),box-shadow .2s ease,border-color .2s ease}.quick:hover{transform:translateY(-3px);box-shadow:var(--plp-shadow-lg);color:var(--plp-text);border-color:var(--plp-border-strong)}.quick strong{font-family:var(--font-ui);font-size:.9rem;line-height:1.25}.quick span.small{color:var(--plp-muted);line-height:1.35}.exp-card{display:flex;flex-direction:column;height:100%;padding:1.2rem;text-decoration:none;color:inherit;position:relative;overflow:hidden}.exp-card:hover{color:inherit}.exp-card .code{font-family:var(--font-mono);font-size:.72rem;color:var(--plp-muted);font-weight:600;letter-spacing:.02em}.exp-card h3{margin:.4rem 0 .45rem;font-size:1.02rem;line-height:1.3}.exp-card p{color:var(--plp-muted);font-size:.86rem;margin-bottom:.9rem}.exp-card .go{position:absolute;right:1rem;bottom:1rem;width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:var(--plp-surface-2);color:var(--plp-muted);transition:all .2s var(--plp-ease)}.exp-card:hover .go{background:var(--plp-accent);color:#fff;transform:translate(2px)}.card-visual{--tone: #3461f5;margin:-1.2rem -1.2rem 1rem;height:112px;position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;padding:.9rem 1.1rem;background:radial-gradient(160px 120px at 85% 10%,rgba(255,255,255,.35),transparent 70%),linear-gradient(135deg,color-mix(in srgb,var(--tone) 85%,#0b1534),color-mix(in srgb,var(--tone) 55%,#7c5cf5));color:#fff}.card-visual:before{content:"";position:absolute;inset:0;opacity:.35;background-image:linear-gradient(rgba(255,255,255,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.18) 1px,transparent 1px);background-size:18px 18px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 60%);mask-image:linear-gradient(90deg,transparent,#000 60%)}.card-visual .visual-icon{position:relative;font-size:2.6rem;line-height:1;opacity:.95;filter:drop-shadow(0 6px 12px rgba(0,0,0,.25));transition:transform .35s var(--plp-ease)}.exp-card:hover .card-visual .visual-icon{transform:scale(1.08) rotate(-4deg)}.card-visual .code{position:relative;color:#ffffffe0;background:#0000002e;padding:.15rem .5rem;border-radius:7px}.card-visual .badge-soft{position:relative;background:#ffffff2e;color:#fff;border-color:#ffffff40}.strand-mechanics{--tone: #3461f5}.strand-waves{--tone: #0fb5d8}.strand-electricity{--tone: #e39a13}.strand-thermal{--tone: #e1489b}.strand-other{--tone: #7c5cf5}.strand-head{display:flex;align-items:center;gap:.75rem;margin:0 0 1rem}.strand-head h2{margin:0}.strand-head .count{color:var(--plp-muted);font-size:.85rem;font-weight:600}.callout{border:1px solid color-mix(in srgb,var(--plp-cyan) 25%,transparent);border-left:4px solid var(--plp-cyan);background:var(--plp-cyan-soft);padding:.85rem 1rem;border-radius:12px;font-size:.9rem}.callout.violet{border-color:color-mix(in srgb,var(--plp-violet) 25%,transparent);border-left-color:var(--plp-violet);background:var(--plp-violet-soft)}.callout.amber{border-color:color-mix(in srgb,var(--plp-warning) 25%,transparent);border-left-color:var(--plp-warning);background:var(--plp-amber-soft)}.callout.danger{border-color:color-mix(in srgb,var(--plp-danger) 25%,transparent);border-left-color:var(--plp-danger);background:var(--plp-red-soft)}.callout.green{border-color:color-mix(in srgb,var(--plp-success) 25%,transparent);border-left-color:var(--plp-success);background:var(--plp-green-soft)}.section-nav{position:sticky;top:calc(var(--plp-topbar-h) + 1rem);font-size:.85rem;font-family:var(--font-ui)}.section-nav a{display:block;padding:.38rem .8rem;color:var(--plp-muted);text-decoration:none;border-left:2px solid var(--plp-border);font-weight:600;transition:all .15s ease}.section-nav a:hover,.section-nav a.active{color:var(--plp-accent);border-left-color:var(--plp-accent);background:linear-gradient(90deg,var(--plp-accent-soft),transparent)}.exp-section{scroll-margin-top:calc(var(--plp-topbar-h) + 1rem);margin-bottom:1.25rem}.exp-section>h2{font-size:1.06rem;display:flex;align-items:center;gap:.6rem}.exp-section>h2 .num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px;background:var(--plp-grad);color:#fff;font-size:.74rem;font-family:var(--font-ui);box-shadow:0 6px 14px -8px #3461f5cc}.steps{counter-reset:step;list-style:none;padding:0}.steps li{counter-increment:step;position:relative;padding:.5rem 0 .5rem 2.6rem}.steps li:before{content:counter(step);position:absolute;left:0;top:.45rem;width:1.85rem;height:1.85rem;border-radius:10px;background:var(--plp-accent-soft);color:var(--plp-accent);display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:800;font-family:var(--font-ui)}.diagram{width:100%;height:auto;color:var(--plp-text)}.diagram .label{font:600 12px var(--font-text);fill:currentColor}.diagram .dim{stroke:var(--plp-muted)}.table{--bs-table-bg: transparent;--bs-table-color: var(--plp-text);--bs-table-border-color: var(--plp-border);--bs-table-hover-bg: var(--plp-surface-2)}.table thead th{font-family:var(--font-ui);font-size:.72rem;font-weight:700;color:var(--plp-muted);white-space:nowrap;text-transform:uppercase;letter-spacing:.06em;background:var(--plp-surface-2);border-bottom-width:1px}.table>tbody>tr{transition:background .12s ease}.table>tbody>tr:hover>*{background:var(--plp-surface-2)}.panel>.table-responsive>.table thead th:first-child,.panel .table-responsive:first-child .table thead th:first-child{border-top-left-radius:var(--plp-radius)}.panel>.table-responsive>.table thead th:last-child,.panel .table-responsive:first-child .table thead th:last-child{border-top-right-radius:var(--plp-radius)}.panel>.table-responsive>.table,.panel>.panel-body>.table-responsive>.table{margin-bottom:0}.table-responsive{border-radius:var(--plp-radius-sm)}.table td,.table th{padding-top:.7rem;padding-bottom:.7rem}.table-sm td,.table-sm th{padding-top:.4rem;padding-bottom:.4rem}.pagination{--bs-pagination-border-radius: 10px;--bs-pagination-color: var(--plp-text);--bs-pagination-bg: var(--plp-surface);--bs-pagination-border-color: var(--plp-border);--bs-pagination-active-bg: var(--plp-blue);--bs-pagination-active-border-color: var(--plp-blue);--bs-pagination-hover-bg: var(--plp-surface-2);gap:.3rem}.pagination .page-link{border-radius:10px!important;font-weight:700;font-family:var(--font-ui);min-width:36px;text-align:center}.nav-pills{--bs-nav-pills-border-radius: 11px;--bs-nav-pills-link-active-bg: var(--plp-text);--bs-nav-pills-link-active-color: var(--plp-surface);gap:.3rem}.nav-pills .nav-link{font-family:var(--font-ui);font-weight:700;font-size:.85rem;color:var(--plp-muted)}.nav-pills .nav-link:hover{color:var(--plp-text);background:var(--plp-surface-3)}.nav-tabs{--bs-nav-tabs-border-color: var(--plp-border);--bs-nav-tabs-link-active-bg: var(--plp-surface);--bs-nav-tabs-link-active-border-color: var(--plp-border) var(--plp-border) var(--plp-surface)}.nav-tabs .nav-link{font-family:var(--font-ui);font-weight:700;color:var(--plp-muted)}.list-group{--bs-list-group-bg: transparent;--bs-list-group-border-color: var(--plp-border);--bs-list-group-action-hover-bg: var(--plp-surface-2);--bs-list-group-active-bg: var(--plp-accent-soft);--bs-list-group-active-color: var(--plp-text);--bs-list-group-active-border-color: var(--plp-border)}.list-group-item.active{box-shadow:inset 3px 0 0 var(--plp-accent)}.dropdown-menu{--bs-dropdown-bg: var(--plp-surface);--bs-dropdown-border-color: var(--plp-border);--bs-dropdown-link-hover-bg: var(--plp-surface-2);--bs-dropdown-link-active-bg: var(--plp-accent-soft);--bs-dropdown-link-active-color: var(--plp-text);border-radius:16px;padding:.4rem;box-shadow:var(--plp-shadow-lg)!important}.dropdown-item{border-radius:10px;padding:.5rem .7rem;font-weight:500}.modal-content{border-radius:22px;border-color:var(--plp-border);background:var(--plp-surface);box-shadow:var(--plp-shadow-lg)}.alert{border-radius:14px;border-width:1px;font-weight:500;box-shadow:var(--plp-shadow-xs)}.alert-success{--bs-alert-bg: var(--plp-green-soft);--bs-alert-color: #0b6b4b;--bs-alert-border-color: color-mix(in srgb, var(--plp-success) 25%, transparent)}[data-bs-theme=dark] .text-danger{color:var(--plp-danger)!important}.alert-danger{--bs-alert-bg: var(--plp-red-soft);--bs-alert-color: #962038;--bs-alert-border-color: color-mix(in srgb, var(--plp-danger) 25%, transparent)}.alert-warning{--bs-alert-bg: var(--plp-amber-soft);--bs-alert-color: #7a4b05;--bs-alert-border-color: color-mix(in srgb, var(--plp-warning) 25%, transparent)}.alert-info{--bs-alert-bg: var(--plp-cyan-soft);--bs-alert-color: #075d70;--bs-alert-border-color: color-mix(in srgb, var(--plp-cyan) 25%, transparent)}[data-bs-theme=dark] .alert-success{--bs-alert-color: #8be8c5}[data-bs-theme=dark] .alert-danger{--bs-alert-color: #ffb3bf}[data-bs-theme=dark] .alert-warning{--bs-alert-color: #f7d08f}[data-bs-theme=dark] .alert-info{--bs-alert-color: #9be7f7}.toast{border-radius:14px;border:1px solid var(--plp-border);box-shadow:var(--plp-shadow-lg);background:var(--plp-surface)}.lab-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem}@media (min-width: 1200px){.lab-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}}.sim-stage{background:radial-gradient(400px 200px at 80% 0%,var(--plp-accent-soft),transparent 70%),linear-gradient(180deg,var(--plp-surface-2),var(--plp-surface));border-radius:var(--plp-radius-md);border:1px solid var(--plp-border);overflow:hidden}.sim-stage svg{display:block;width:100%;height:auto}.sim-controls .form-range{--bs-form-range-thumb-bg: var(--plp-blue)}.form-range::-webkit-slider-thumb{box-shadow:0 0 0 4px color-mix(in srgb,var(--plp-blue) 20%,transparent)}.readout{font-family:var(--font-mono);font-variant-numeric:tabular-nums;background:linear-gradient(180deg,#0b1430,#060b1c);color:#8ff0ff;border-radius:12px;padding:.55rem .85rem;font-size:.9rem;box-shadow:inset 0 0 0 1px #8ff0ff26,0 8px 18px -12px #0009;text-shadow:0 0 10px rgba(143,240,255,.35)}.model-card{display:grid;grid-template-columns:minmax(7rem,max-content) 1fr;gap:.35rem 1rem}.model-card dt{font-weight:600;color:var(--plp-muted)}.model-card dd{margin:0}@media (max-width: 575.98px){.model-card{grid-template-columns:1fr}.model-card dd{margin-bottom:.4rem}}.sim-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem}.sim-toolbar .sim-state{color:var(--plp-muted)}.sim-keys{position:relative}.sim-keys summary{cursor:pointer;color:var(--plp-accent-text);font-weight:600;list-style:none;padding:.25rem .5rem;border-radius:8px}.sim-keys summary::-webkit-details-marker{display:none}.sim-keys summary:before{content:"⌨︎ ";content:"⌨︎ " / ""}.sim-keys[open]>div{position:absolute;right:0;top:2rem;z-index:5;width:min(22rem,80vw);background:var(--plp-surface);border:1px solid var(--plp-border);border-radius:var(--plp-radius-sm);padding:.6rem .75rem;box-shadow:0 12px 28px -14px #00000059}.sim-keys kbd{font-size:.75em}.sim-paused .sim-stage{box-shadow:inset 0 0 0 2px var(--plp-amber, #e0a21f)}.magnifier{border-radius:var(--plp-radius-sm);border:1px solid var(--plp-border);background:var(--plp-surface)}.obs-table{border-collapse:separate;border-spacing:0}.obs-table thead th{position:sticky;top:0;z-index:1}.obs-table input{width:100%;min-width:80px;border:1px solid var(--plp-border-strong);background:var(--plp-surface);color:var(--plp-text);border-radius:9px;padding:.38rem .55rem;font-family:var(--font-mono);font-size:.88rem;font-variant-numeric:tabular-nums;text-align:right;direction:ltr;unicode-bidi:plaintext;transition:border-color .12s ease,box-shadow .12s ease}.obs-table input:hover{border-color:color-mix(in srgb,var(--plp-accent) 35%,var(--plp-border-strong))}.obs-table input:focus{border-color:var(--plp-accent);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--plp-accent) 22%,transparent)}.obs-table input[readonly]{background:var(--plp-surface-2)}.obs-table td.derived{background:var(--plp-surface-2);text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600;font-size:.88rem}.obs-table td.invalid,.obs-table input[aria-invalid=true]{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--plp-danger) 70%,transparent)}.obs-table .flag{color:var(--plp-danger);font-size:.74rem;margin-top:.2rem;text-align:left;font-family:var(--font-text);font-weight:500}.obs-table .flag-info{color:var(--plp-warning);font-size:.74rem;margin-top:.2rem;text-align:left;font-family:var(--font-text);font-weight:500}.obs-table th .unit{font-weight:600;color:var(--plp-muted);text-transform:none;letter-spacing:0}.obs-table td.trial-cell{min-width:150px}.trial-group{display:flex;gap:.3rem}.trial-group input{min-width:64px}.trial-mean{font-size:.74rem;color:var(--plp-muted);text-align:right;margin-top:.2rem;font-family:var(--font-ui);font-weight:600}.trial-mean span{font-family:var(--font-mono);color:var(--plp-text)}#ownColumns li{padding:.3rem 0;border-bottom:1px dashed var(--plp-border)}.save-state{font-size:.8rem;color:var(--plp-muted);display:inline-flex;align-items:center;gap:.35rem;font-weight:600;padding:.2rem .6rem;border-radius:99px;background:var(--plp-surface-2)}.save-state.saving{color:var(--plp-accent);background:var(--plp-accent-soft)}.save-state.saving .bi{animation:spin 1s linear infinite}.save-state.saved{color:var(--plp-success);background:var(--plp-green-soft)}.save-state.error{color:var(--plp-danger);background:var(--plp-red-soft)}.graph-wrap{position:relative;width:100%;height:460px}@media (max-width: 575.98px){.graph-wrap{height:340px}}@media print{.graph-wrap{height:420px}}.graph-wrap canvas{cursor:crosshair}.working{font-family:var(--font-mono);font-size:.84rem;background:var(--plp-surface-2);border:1px solid var(--plp-border);border-radius:12px;padding:.65rem .85rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.deduction{border:1px solid var(--plp-border);border-radius:14px;padding:1rem 1.1rem;margin-bottom:.75rem;background:var(--plp-surface)}.deduction .result{font-family:var(--font-ui);font-weight:800;font-size:1.3rem;letter-spacing:-.02em}mjx-container{overflow-x:auto;overflow-y:hidden;max-width:100%}.formula-hero{display:flex;align-items:center;justify-content:center;min-height:92px;padding:1rem;border-radius:16px;background:var(--plp-grad-soft);border:1px solid var(--plp-border);font-size:1.15rem;overflow-x:auto}.formula-card{display:flex;flex-direction:column;padding:1.15rem;position:relative;transition:transform .2s var(--plp-ease),box-shadow .2s ease}.formula-card:hover{transform:translateY(-3px);box-shadow:var(--plp-shadow-lg)}.formula-card .formula-tex{padding:.85rem;border-radius:12px;background:var(--plp-surface-2);text-align:center;min-height:64px;display:flex;align-items:center;justify-content:center;overflow-x:auto}.formula-actions{display:flex;gap:.35rem;margin-top:.9rem;position:relative;z-index:2}.picker-panel{position:sticky;top:calc(var(--plp-topbar-h) + 1rem);overflow:hidden}.picker-list{max-height:min(70vh,640px);overflow-y:auto}.picker-list .list-group-item{display:flex;align-items:center;gap:.7rem;padding:.7rem .9rem;border-left:0;border-right:0}.picker-sym{width:36px;height:36px;flex:0 0 36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:.85rem;background:var(--plp-surface-3);color:var(--plp-text)}.list-group-item.active .picker-sym{background:var(--plp-grad);color:#fff}.answer-card{padding:1.1rem 1.25rem;border-radius:16px;background:var(--plp-grad-soft);border:1px solid color-mix(in srgb,var(--plp-blue) 25%,var(--plp-border))}.answer-card .answer{font-family:var(--font-ui);font-weight:800;font-size:1.65rem;letter-spacing:-.02em;line-height:1.2;margin:.15rem 0}.work-steps{list-style:none;counter-reset:ws;padding:0;margin:0;display:grid;gap:.6rem}.work-steps li{counter-increment:ws;position:relative;padding:.7rem .9rem .7rem 3rem;border-radius:12px;border:1px solid var(--plp-border);background:var(--plp-surface)}.work-steps li:before{content:counter(ws);position:absolute;left:.8rem;top:.75rem;width:1.55rem;height:1.55rem;border-radius:8px;background:var(--plp-accent-soft);color:var(--plp-accent);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.75rem;font-family:var(--font-ui)}.tex-preview{min-height:56px;padding:.6rem .9rem;border-radius:12px;border:1px dashed var(--plp-border-strong);background:var(--plp-surface-2);overflow-x:auto}.expr-status:empty{display:none}.live-check{position:sticky;top:calc(var(--plp-topbar-h) + 1rem)}.check-list{list-style:none;padding:0;margin:1rem 0 0;display:grid;gap:.45rem;font-size:.84rem}.check-list li{display:flex;gap:.55rem;align-items:flex-start;padding:.5rem .65rem;border-radius:10px;background:var(--plp-surface-2)}.check-list li.ok{color:var(--plp-success);background:var(--plp-green-soft)}.check-list li.bad{color:var(--plp-danger);background:var(--plp-red-soft)}.check-list li.info{color:var(--plp-muted)}.check-list li span{color:var(--plp-text)}.check-list li .bi{margin-top:.15rem}.try-out .try-result{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;padding:.7rem .85rem;border-radius:12px;background:var(--plp-grad-soft)}.try-out .try-result strong{font-family:var(--font-ui);font-size:1.15rem}.sym-table input{min-width:70px}.sticky-actions{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.85rem 1rem;border-radius:16px;background:color-mix(in srgb,var(--plp-surface) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--plp-border);box-shadow:var(--plp-shadow-lg)}@media (max-width: 991.98px){.sticky-actions{bottom:4.75rem}}.auth-wrap{min-height:100vh;display:grid;grid-template-columns:1fr;background:var(--plp-bg)}@media (min-width: 992px){.auth-wrap{grid-template-columns:1.1fr 1fr}}.auth-aside{display:none;background:radial-gradient(900px 520px at 0% 0%,rgba(15,181,216,.28),transparent 60%),radial-gradient(800px 500px at 100% 100%,rgba(124,92,245,.32),transparent 60%),linear-gradient(160deg,#081130,#060a17);color:#d7def0;padding:3rem 3.25rem;position:relative;overflow:hidden;isolation:isolate}@media (min-width: 992px){.auth-aside{display:flex;flex-direction:column;justify-content:space-between}}.auth-aside h1{color:#fff;font-size:clamp(2.2rem,1.5rem + 1.6vw,3.1rem);max-width:14ch;line-height:1.05;letter-spacing:-.035em}.auth-aside h1 .grad{background:linear-gradient(90deg,#6fe3ff,#9bb1ff 50%,#c8b6ff);-webkit-background-clip:text;background-clip:text;color:transparent}.auth-aside .grid-bg{position:absolute;inset:0;z-index:-1;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:radial-gradient(ellipse at 40% 50%,#000 30%,transparent 80%);mask-image:radial-gradient(ellipse at 40% 50%,#000 30%,transparent 80%);pointer-events:none}.auth-graph{max-width:460px;width:100%;filter:drop-shadow(0 20px 40px rgba(0,0,0,.4))}.auth-graph .fit{stroke-dasharray:420;stroke-dashoffset:420;animation:draw 1.6s var(--plp-ease) .3s forwards}.auth-graph .tri{stroke-dasharray:5 4;opacity:0;animation:fadein .6s ease 1.6s forwards}.auth-graph .pt{opacity:0;transform-box:fill-box;transform-origin:center;animation:pop .45s var(--plp-ease) forwards}@keyframes draw{to{stroke-dashoffset:0}}@keyframes fadein{to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}.feature-list{list-style:none;padding:0;margin:1.5rem 0 0;display:grid;gap:.65rem;max-width:460px}.feature-list li{display:flex;gap:.7rem;align-items:center;color:#cdd6ee;font-size:.92rem}.feature-list .bi{width:30px;height:30px;flex:0 0 30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:#ffffff14;color:#8fe6ff}.auth-form{display:flex;align-items:center;justify-content:center;padding:2.5rem 1.25rem;background:radial-gradient(600px 400px at 100% 0%,var(--plp-accent-soft),transparent 60%),var(--plp-bg)}.auth-card{width:100%;max-width:450px;padding:2.25rem;border-radius:26px;background:var(--plp-surface);border:1px solid var(--plp-border);box-shadow:var(--plp-shadow-lg)}@media (max-width: 575.98px){.auth-card{padding:1.5rem;border-radius:20px}}.auth-card h1{font-size:1.75rem}.auth-theme{position:absolute;top:1rem;right:1rem}.bottom-nav{display:none}@media (max-width: 991.98px){.bottom-nav{display:flex;position:fixed;left:.75rem;right:.75rem;bottom:.75rem;z-index:1035;justify-content:space-around;padding:.4rem;border-radius:20px;background:color-mix(in srgb,var(--plp-surface) 86%,transparent);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border:1px solid var(--plp-border);box-shadow:var(--plp-shadow-lg);padding-bottom:calc(.4rem + env(safe-area-inset-bottom,0px))}.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.35rem .2rem;border-radius:14px;color:var(--plp-muted);text-decoration:none;font-family:var(--font-ui);font-size:.66rem;font-weight:700;min-height:48px;justify-content:center}.bottom-nav a .bi{font-size:1.2rem}.bottom-nav a.active{color:var(--plp-accent);background:var(--plp-accent-soft)}.toast-container{bottom:5rem!important}}@media (prefers-reduced-motion: no-preference){.content>*{animation:rise .45s var(--plp-ease) backwards}.content>*:nth-child(2){animation-delay:.04s}.content>*:nth-child(3){animation-delay:.08s}.content>*:nth-child(4){animation-delay:.12s}.content>*:nth-child(n+5){animation-delay:.16s}.js .reveal{opacity:0;transform:translateY(14px);transition:opacity .5s var(--plp-ease),transform .5s var(--plp-ease)}.js .reveal.in{opacity:1;transform:none}.auth-card{animation:rise .55s var(--plp-ease) backwards}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.skeleton{position:relative;overflow:hidden;background:var(--plp-surface-3);border-radius:8px;min-height:1em}.skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);animation:shimmer 1.4s infinite}[data-bs-theme=dark] .skeleton:after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.07),transparent)}@keyframes shimmer{to{transform:translate(100%)}}.toast-container{z-index:1090}.math-block{overflow-x:auto}.divider-label{display:flex;align-items:center;gap:.75rem;color:var(--plp-muted);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-family:var(--font-ui)}.divider-label:before,.divider-label:after{content:"";flex:1;height:1px;background:var(--plp-border)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}@media print{.sidebar,.topbar,.no-print,.section-nav,.bottom-nav,.sticky-actions{display:none!important}.app-main{margin:0!important}body{background:#fff;color:#000;font-size:11pt}.panel{box-shadow:none;border-color:#bbb;break-inside:avoid}.content>*{animation:none!important}a{color:#000;text-decoration:none}}.print-only{display:none}@media print{.print-only{display:block}.gs-layout .gs-data,.gs-graph #graphRange,.gs-graph .segmented,.gs-graph .form-switch,.gs-graph .btn{display:none!important}.gs-layout>.col-xl-8{width:100%!important;flex:0 0 100%;max-width:100%}.gs-graph .graph-wrap{height:520px}.page-head p{display:none}}.write-line{display:inline-block;min-width:10rem;border-bottom:1px solid #555;height:1.2em;vertical-align:bottom}.write-line.wide{width:100%;margin-top:.9rem}.ws-derived{background:#f1f3f7!important}.worksheet-table td{height:2rem}.graph-paper{width:100%;height:auto;border:1px solid #9aa3b5;background:#fff}.graph-paper line.minor{stroke:#cfe0ea;stroke-width:.5}.graph-paper line.major{stroke:#8fb4c9;stroke-width:1}@media print{.worksheet-table table{font-size:9pt}.ws-derived{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.steps-inline{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;padding-left:1.1rem;margin:0;color:var(--bs-secondary-color)}.steps-inline li::marker{font-weight:700;color:var(--plp-cyan)}.import-page{border:1px solid var(--bs-border-color);border-radius:12px;background:#fff;overflow:auto;max-height:75vh}.import-page canvas,.import-page img{display:block;max-width:100%;height:auto;margin:0 auto}.draft-card{border:1px solid var(--bs-border-color);border-radius:14px;padding:.85rem;margin-bottom:.75rem;background:var(--plp-surface)}.draft-card.excluded{opacity:.55}.diff{font-family:var(--font-mono);font-size:.8rem;overflow-x:auto}.diff-line{display:flex;gap:.6rem;padding:0 .75rem;white-space:pre-wrap;word-break:break-word}.diff-sign{flex:0 0 1ch;font-weight:700;-webkit-user-select:none;user-select:none}.diff-add{background:color-mix(in srgb,var(--plp-success) 14%,transparent)}.diff-del{background:color-mix(in srgb,var(--plp-danger) 13%,transparent)}.diff-skip{padding:.15rem .75rem;color:var(--bs-secondary-color);font-style:italic;border-block:1px dashed var(--bs-border-color)}.lesson-list li{align-items:flex-start}.lesson-num{flex:0 0 2rem;height:2rem;border-radius:10px;display:inline-grid;place-items:center;font-weight:800;font-size:.8rem;font-family:var(--font-ui);background:var(--plp-cyan-soft);color:var(--bs-body-color)}.lesson-num.done{background:var(--plp-success);color:#fff}.lesson-body{max-width:760px;font-size:1.04rem;line-height:1.8}.lesson-body h2,.lesson-body h3{margin-top:1.75rem}.lesson-body p{margin-bottom:1.05rem}mark{padding:0 .15em;border-radius:4px;background:#ffe58a;color:#1a1400}[data-bs-theme=dark] mark{background:#f5d76e;color:#1a1400}.search-results-list>li{padding:.9rem 0;border-bottom:1px solid var(--bs-border-color)}.search-results-list>li:last-child{border-bottom:0}.progress-table{table-layout:fixed;min-width:640px}.nav-parent{display:flex;align-items:center}.nav-parent>.nav-link{flex:1 1 auto;min-width:0;margin-right:0!important}.nav-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-right:.75rem;border:0;border-radius:9px;background:transparent;color:#8fa2c9;transition:background .15s ease,color .15s ease}.nav-toggle:hover,.nav-toggle:focus-visible{background:#ffffff14;color:#fff}.nav-toggle .bi{transition:transform .2s var(--plp-ease)}.nav-toggle[aria-expanded=true] .bi{transform:rotate(180deg)}.nav-sub{list-style:none;margin:2px .75rem 6px 1.6rem;padding:0 0 0 .7rem;border-left:1px solid rgba(255,255,255,.09)}.nav-sub .nav-sub-link{--tone: #f4b740;display:flex;align-items:center;gap:.55rem;padding:.38rem .6rem;border-radius:9px;color:#b4c0da;font-family:var(--font-ui);font-weight:600;font-size:.82rem;text-decoration:none;position:relative}.nav-sub .nav-sub-link .bi{font-size:.85rem;color:#8193bb;width:1rem;text-align:center}.nav-sub .nav-sub-link:hover{background:#ffffff0f;color:#fff}.nav-sub .nav-sub-link.active{color:#fff;background:#f4b7401f}.nav-sub .nav-sub-link.active .bi{color:var(--tone)}.nav-sub .nav-sub-link.active:before{content:"";position:absolute;left:calc(-.7rem - 1px);top:7px;bottom:7px;width:3px;border-radius:3px;background:var(--tone)}.nav-sub .nav-sub-head{padding:.55rem .6rem .2rem;font-family:var(--font-ui);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:#6c7ca2;font-weight:700}@media (min-width: 992px){body.sidebar-collapsed .sidebar .nav-toggle,body.sidebar-collapsed .sidebar .nav-sub{display:none}}.dash-hero{margin-bottom:1.25rem}.dash-hero h1{color:#fff;font-size:1.65rem;margin-bottom:.3rem}.dash-hero p{color:#ffffffd1;margin:0}.dash-hero-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;position:relative;z-index:1}.dash-hero .hero-actions{display:flex;flex-wrap:wrap;gap:.5rem}.dash-hero .btn-hero{background:#ffffff1f;border:1px solid rgba(255,255,255,.22);color:#fff;font-weight:700}.dash-hero .btn-hero:hover,.dash-hero .btn-hero:focus-visible{background:#fff;color:#0b1534}.kpi-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}.kpi{position:relative;background:var(--plp-surface);border:1px solid var(--plp-border);border-radius:var(--plp-radius-md);padding:1rem 1.1rem .8rem;overflow:hidden;box-shadow:var(--plp-shadow-xs);transition:transform .2s var(--plp-ease),box-shadow .2s var(--plp-ease);color:inherit;text-decoration:none;display:block}a.kpi:hover{transform:translateY(-2px);box-shadow:var(--plp-shadow);color:inherit}.kpi-top{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.kpi-label{font-family:var(--font-ui);font-size:.82rem;font-weight:600;color:var(--plp-muted)}.kpi-value{font-family:var(--font-ui);font-size:1.85rem;font-weight:800;line-height:1.15;margin-top:.35rem;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.kpi-sub{font-size:.78rem;color:var(--plp-muted)}.kpi-spark{display:block;width:100%;height:40px;margin-top:.45rem;color:var(--tone, var(--plp-blue))}.kpi-delta{font-family:var(--font-ui);font-size:.72rem;font-weight:700;white-space:nowrap;padding:.15rem .5rem;border-radius:999px;background:var(--plp-surface-3);color:var(--plp-text)}.card-x{background:var(--plp-surface);border:1px solid var(--plp-border);border-radius:var(--plp-radius);padding:1.15rem 1.25rem;display:flex;flex-direction:column;box-shadow:var(--plp-shadow-xs)}.card-x-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem .75rem;margin-bottom:.75rem}.card-x-head h2{font-size:1rem;margin:0;display:flex;align-items:center;gap:.45rem}.card-x-head .small,.card-x-head a{font-weight:600}.work-grid{display:grid;gap:.55rem}.work-item{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem;border-radius:12px;background:var(--plp-surface-2);color:var(--plp-text);text-decoration:none;border:1px solid var(--plp-border);transition:transform .15s ease,background .15s ease}.work-item:hover{transform:translate(3px);background:var(--plp-amber-soft);color:var(--plp-text)}.work-item .bi{color:var(--plp-muted)}.work-item .count{margin-left:auto;min-width:2rem;text-align:center;font-family:var(--font-ui);font-weight:800;border-radius:999px;padding:.1rem .55rem;background:#f4b740;color:#2a1e04}.work-done{display:flex;align-items:center;gap:.5rem;color:var(--plp-success);font-weight:600}.signal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.signal{padding:.7rem .8rem;border-radius:12px;background:var(--plp-surface-2);border:1px solid var(--plp-border)}.signal strong{display:block;font-family:var(--font-ui);font-size:1.35rem;line-height:1.1;font-variant-numeric:tabular-nums}.signal span{font-size:.76rem;color:var(--plp-muted)}.feed{list-style:none;padding:0;margin:0}.feed li{display:flex;gap:.65rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--plp-border);min-width:0}.feed li:last-child{border-bottom:0}.feed .feed-main{min-width:0;flex:1 1 auto}.feed .feed-main>*{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed time{font-size:.76rem;color:var(--plp-muted);white-space:nowrap}.feed-dot{width:.55rem;height:.55rem;border-radius:50%;flex:0 0 auto;background:var(--plp-border-strong)}.status-dot{display:inline-block;flex:0 0 auto;width:.62rem;height:.62rem;border-radius:50%;vertical-align:middle;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 18%,transparent)}.status-ok{color:var(--plp-success);background:var(--plp-success)}.status-warn{color:#d9930f;background:#d9930f}.status-fail{color:var(--plp-danger);background:var(--plp-danger)}.reveal-up{animation:plp-up .5s var(--plp-ease) both}@keyframes plp-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.reveal-up{animation:none}a.kpi:hover,.work-item:hover{transform:none}}.health-banner{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;border-radius:var(--plp-radius);border:1px solid var(--plp-border);background:var(--plp-surface);box-shadow:var(--plp-shadow-xs);margin-bottom:1rem}.health-banner .health-ring{width:52px;height:52px;flex:0 0 52px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:1.5rem;color:#fff}.health-banner.is-ok .health-ring{background:var(--plp-success)}.health-banner.is-warn .health-ring{background:#d9930f}.health-banner.is-fail .health-ring{background:var(--plp-danger)}.health-banner h2{font-size:1.1rem;margin:0 0 .15rem}.health-counts{display:flex;flex-wrap:wrap;gap:.4rem .9rem;font-size:.82rem;color:var(--plp-muted)}.health-grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}.health-item{display:flex;gap:.75rem;padding:.85rem 1rem;border-radius:var(--plp-radius-md);background:var(--plp-surface);border:1px solid var(--plp-border);border-left-width:4px}.health-item.is-ok{border-left-color:var(--plp-success)}.health-item.is-warn{border-left-color:#d9930f;background:color-mix(in srgb,var(--plp-amber-soft) 55%,var(--plp-surface))}.health-item.is-fail{border-left-color:var(--plp-danger);background:color-mix(in srgb,var(--plp-red-soft) 55%,var(--plp-surface))}.health-item .health-ico{font-size:1.15rem;line-height:1.2}.health-item.is-ok .health-ico{color:var(--plp-success)}.health-item.is-warn .health-ico{color:#b87905}.health-item.is-fail .health-ico{color:var(--plp-danger)}.health-item h3{font-size:.9rem;margin:0 0 .15rem}.health-item p{margin:0;font-size:.82rem;color:var(--plp-muted);overflow-wrap:anywhere}.health-item .health-fix{color:var(--plp-text);margin-top:.3rem}[data-bs-theme=dark] .health-item.is-warn .health-ico{color:#f0b44f}.settings-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.25rem}.settings-tabs a{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .8rem;border-radius:999px;border:1px solid var(--plp-border);background:var(--plp-surface);color:var(--plp-muted);font-family:var(--font-ui);font-weight:700;font-size:.82rem;text-decoration:none}.settings-tabs a:hover{color:var(--plp-text);border-color:var(--plp-border-strong)}.settings-tabs a[aria-current=page]{background:var(--plp-accent-soft);color:var(--plp-accent-text);border-color:transparent}.setting-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:.5rem 1.25rem;padding:.9rem 0;border-bottom:1px solid var(--plp-border);align-items:start}.setting-row:last-of-type{border-bottom:0}.setting-row .form-label{margin-bottom:.15rem}.setting-row .form-text{margin-top:0}@media (max-width: 767.98px){.setting-row{grid-template-columns:1fr}}.gateway-card{display:block;height:100%;padding:1.1rem 1.2rem;border-radius:var(--plp-radius-md);border:1px solid var(--plp-border);background:var(--plp-surface);color:inherit;text-decoration:none;box-shadow:var(--plp-shadow-xs);transition:transform .2s var(--plp-ease),box-shadow .2s var(--plp-ease)}.gateway-card:hover{transform:translateY(-2px);box-shadow:var(--plp-shadow);color:inherit}.slug-field{display:flex;gap:.4rem}.slug-field .form-control[readonly]{background:var(--plp-surface-2)}.trash-note{display:inline-flex;align-items:center;gap:.35rem}.pager-summary{font-variant-numeric:tabular-nums}.status-info{color:var(--plp-blue);background:var(--plp-blue)}.kpi-grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}.kpi .kpi-label{display:block}.kpi .kpi-delta{display:inline-flex;align-items:center;gap:.35rem;margin-top:.35rem}.kpi-delta.is-ok{background:var(--plp-green-soft);color:var(--plp-success)}.kpi-delta.is-warn{background:var(--plp-amber-soft);color:#8a5a00}.kpi-delta.is-fail{background:var(--plp-red-soft);color:var(--plp-danger)}.kpi-delta.is-fail a{color:inherit}.gateway-grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr))}.gateway-card{position:relative}.gateway-card.is-on{border-color:color-mix(in srgb,var(--plp-success) 40%,var(--plp-border))}.setting-stack .setting-row{grid-template-columns:1fr}#diagnostics .feed li{align-items:flex-start}#diagnostics .feed .status-dot{margin-top:.35rem}.tone-slate{--tone: #64748b;--tone-soft: var(--plp-surface-3)}.grade-preview{padding:.7rem .9rem;border-radius:12px;background:var(--plp-surface-2);border:1px dashed var(--plp-border-strong)}.grade-preview strong{font-family:var(--font-ui);font-size:1.05rem}.danger-zone{border-color:color-mix(in srgb,var(--plp-danger) 35%,var(--plp-border));height:auto}.slug-field .input-group-text{border-radius:var(--bs-border-radius)}.filter-bar .form-label{margin-bottom:.2rem}.table-responsive{position:relative}.row>[class*=col]>.card-x:only-child{height:100%}.btn.text-danger,.btn-link.text-danger{color:#b3263c!important}[data-bs-theme=dark] .btn.text-danger,[data-bs-theme=dark] .btn-link.text-danger{color:#ff8d9c!important}[data-bs-theme=dark] .kpi-delta.is-warn{color:#f6c86a}[data-bs-theme=dark] .kpi-delta.is-ok{color:#5ee0ad}[data-bs-theme=dark] .kpi-delta.is-fail{color:#ff8d9c}.instrument-grid{display:flex;flex-wrap:wrap;gap:.75rem}.instrument-cell{background:var(--plp-surface);border:1px solid var(--plp-border);border-radius:var(--plp-radius-sm, 10px);padding:.4rem .5rem;color:var(--plp-text);max-width:100%;overflow-x:auto}.instrument-cell svg{display:block;max-width:100%;height:auto}.instrument-cell svg text{font-variant-numeric:tabular-nums}.lesson-body ul,.lesson-body ol{margin-bottom:1.05rem;padding-left:1.4rem}.lesson-body .callout{margin-bottom:1.05rem;font-size:1rem}.lesson-figure{margin:1.25rem 0;text-align:center}.lesson-figure img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--bs-border-color);background:#fff}.lesson-figure figcaption{font-size:.88rem;color:var(--bs-secondary-color);margin-top:.4rem}.lesson-math{overflow-x:auto;margin:1rem 0;text-align:center}.lesson-table{width:auto;min-width:50%}.lesson-table th{background:var(--bs-tertiary-bg)}.lesson-editor{border:1px solid var(--bs-border-color);border-radius:12px;overflow:hidden}.lesson-toolbar{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;padding:.45rem;background:var(--bs-tertiary-bg);border-bottom:1px solid var(--bs-border-color)}.lesson-toolbar .formula-menu{max-height:320px;overflow-y:auto}.lesson-panes{display:grid;grid-template-columns:1fr}.lesson-text{border:0;border-radius:0;font-family:var(--bs-font-monospace);font-size:.92rem;line-height:1.6;min-height:420px;resize:vertical}.lesson-text:focus{box-shadow:inset 0 0 0 2px var(--plp-cyan)}.lesson-preview{display:none;max-width:none;padding:1rem 1.25rem;overflow-y:auto;max-height:640px;font-size:.98rem;border-top:1px solid var(--bs-border-color)}.lesson-preview.show{display:block}@media (min-width: 992px){.lesson-panes{grid-template-columns:1fr 1fr}.lesson-preview{display:block;border-top:0;border-left:1px solid var(--bs-border-color)}}.question-figures{display:flex;flex-direction:column;gap:.75rem}.question-figure{margin:0}.question-figure img{max-width:100%;height:auto;border:1px solid var(--bs-border-color);border-radius:8px;background:#fff}.question-figure figcaption{font-size:.85rem;color:var(--bs-secondary-color);margin-top:.25rem}.question-figure-thumb{width:220px}.question-figure-thumb img{width:100%;height:140px;object-fit:contain;border:1px solid var(--bs-border-color);border-radius:8px;background:#fff}.set-classes{max-height:220px;overflow-y:auto}.sci-calc{position:fixed;left:1rem;bottom:5.5rem;z-index:1040}@media (min-width: 992px){.sci-calc{bottom:1rem}}.sci-calc-panel{position:absolute;bottom:2.6rem;left:0;width:min(340px,calc(100vw - 2rem));box-shadow:0 12px 32px #00000040}.sci-calc-keys{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.sci-calc-keys .btn{padding:.35rem 0;font-size:.82rem;min-height:38px}.sci-calc-out{min-height:1.8rem;word-break:break-all}
