.ns-cc,.ns-ccm,.ns-ccv{--ns-cc-accent:#5b63d3;--ns-cc-accent-dark:#464dbf;--ns-cc-accent-soft:#f3f4fb;--ns-cc-accent-line:#e6e8f6;--ns-cc-surface:#fff;--ns-cc-surface-2:#fafbfc;--ns-cc-line:#e6e8eb;--ns-cc-line-2:#eef0f2;--ns-cc-text:#1e2024;--ns-cc-text-2:#4a4f56;--ns-cc-muted:#8b9096;--ns-cc-faint:#a4a9af;--ns-cc-ink:#11131c;--ns-cc-ink-2:#171a26;--ns-cc-ink-line:#262a3a;--ns-cc-radius:16px;--ns-cc-shadow:0 1px 2px rgba(24,28,40,.05);--ns-cc-shadow-lift:0 10px 28px rgba(24,28,40,.1);font-size:14px;line-height:1.8;color:var(--ns-cc-text)}.ns-cc *,.ns-ccm *,.ns-ccv *,.ns-cc *::before,.ns-ccm *::before,.ns-ccv *::before{box-sizing:border-box}.ns-cc__lang--php{--lang:#8b7bd8}.ns-cc__lang--javascript,.ns-cc__lang--js{--lang:#c9a227}.ns-cc__lang--css{--lang:#3a8fd4}.ns-cc__lang--html{--lang:#d4714a}.ns-cc__lang--json{--lang:#6a9955}.ns-cc__lang--sql{--lang:#2f9e8f}.ns-cc__bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}.ns-cc__chips{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.ns-cc__chip{display:inline-flex;align-items:center;gap:7px;background:var(--ns-cc-surface);border:1px solid var(--ns-cc-line);color:var(--ns-cc-muted);border-radius:999px;padding:7px 14px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.ns-cc__chip:hover{color:var(--ns-cc-text);border-color:#d9dde3}.ns-cc__chip.is-active{background:var(--ns-cc-accent);border-color:var(--ns-cc-accent);color:#fff}.ns-cc__chip-n{font-size:11px;font-weight:700;opacity:.65;font-variant-numeric:tabular-nums}.ns-cc__chip:focus-visible{outline:2px solid var(--ns-cc-accent);outline-offset:2px}.ns-cc__search{position:relative;display:flex;align-items:center;flex:1 1 min(300px,100%);max-width:100%}.ns-cc__search>svg{position:absolute;inset-inline-start:13px;color:var(--ns-cc-faint);pointer-events:none}.ns-cc__search input{width:100%;border:1px solid var(--ns-cc-line);border-radius:999px;padding:9px 40px 9px 16px;background:var(--ns-cc-surface);color:var(--ns-cc-text);font:inherit;font-size:13px;line-height:1.6;box-shadow:none;transition:border-color .15s,box-shadow .15s}.ns-cc__search input:focus{outline:none;border-color:var(--ns-cc-accent);box-shadow:0 0 0 3px rgba(91,99,211,.15)}.ns-cc__count{margin:0 0 12px;color:var(--ns-cc-faint);font-size:12px}.ns-cc__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:stretch;container-type:inline-size}.ns-cc__card{position:relative;display:flex;flex-direction:column;gap:10px;background:var(--ns-cc-surface);border:1px solid var(--ns-cc-line);border-radius:var(--ns-cc-radius);padding:18px 20px 16px;box-shadow:var(--ns-cc-shadow);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.ns-cc__card:hover{transform:translateY(-3px);box-shadow:var(--ns-cc-shadow-lift);border-color:var(--ns-cc-accent-line)}.ns-cc__card[hidden]{display:none}.ns-cc__hit{position:absolute;inset:0;z-index:1;border-radius:inherit}.ns-cc__hit:focus-visible{outline:2px solid var(--ns-cc-accent);outline-offset:3px}.ns-cc__card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.ns-cc__chapter{display:inline-block;background:var(--ns-cc-accent-soft);color:var(--ns-cc-accent);border-radius:999px;padding:3px 11px;font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62%}.ns-cc__langs{display:inline-flex;gap:4px;flex:0 0 auto}.ns-cc__lang{font-family:Menlo,Consolas,monospace;font-size:10px;font-weight:700;letter-spacing:.4px;padding:2px 7px;border-radius:5px;color:var(--lang,var(--ns-cc-muted));background:var(--ns-cc-surface-2);border:1px solid var(--ns-cc-line-2)}@supports (background:color-mix(in srgb,red 10%,transparent)){.ns-cc__lang{background:color-mix(in srgb,var(--lang,#8b9096) 12%,transparent);border-color:transparent}}.ns-cc__title{margin:0;font-size:15.5px;font-weight:700;line-height:1.6;color:var(--ns-cc-text);letter-spacing:-.1px}.ns-cc__usage{margin:0;color:var(--ns-cc-text-2);font-size:13px;line-height:1.85;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.ns-cc__card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:12px;border-top:1px solid var(--ns-cc-line-2)}.ns-cc__lesson{display:inline-flex;align-items:center;gap:5px;min-width:0;color:var(--ns-cc-faint);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ns-cc__lesson>svg{flex:0 0 13px}.ns-cc__cta{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;color:var(--ns-cc-accent);font-size:12.5px;font-weight:700}.ns-cc__cta>svg{transition:transform .18s ease}.ns-cc__card:hover .ns-cc__cta>svg{transform:translateX(-3px)}.ns-cc__none,.ns-cc--empty p{margin:0;padding:48px 20px;text-align:center;color:var(--ns-cc-muted);font-size:13.5px;background:var(--ns-cc-surface-2);border:1px dashed var(--ns-cc-line);border-radius:var(--ns-cc-radius)}.ns-cc--dark .ns-cc__card{background:var(--ns-cc-ink-2);border-color:var(--ns-cc-ink-line);box-shadow:none}.ns-cc--dark .ns-cc__card:hover{border-color:#39405c;box-shadow:0 10px 28px rgba(0,0,0,.35)}.ns-cc--dark .ns-cc__title{color:#f2f4f8}.ns-cc--dark .ns-cc__usage{color:#b4bac8}.ns-cc--dark .ns-cc__card-foot{border-top-color:#262a3a}.ns-cc--dark .ns-cc__lesson{color:#7c8499}.ns-cc--dark .ns-cc__chapter{background:rgba(91,99,211,.18);color:#a9b0ef}.ns-cc--dark .ns-cc__cta{color:#a9b0ef}@media (max-width:1024px){.ns-cc__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.ns-cc__grid{grid-template-columns:1fr}.ns-cc__bar{flex-direction:column;align-items:stretch}.ns-cc__search{flex:1 1 auto}}.ns-ccm{background:var(--ns-cc-surface);border:1px solid var(--ns-cc-line);border-radius:var(--ns-cc-radius);padding:18px 20px;box-shadow:var(--ns-cc-shadow)}.ns-ccm.is-sticky{position:sticky;top:24px}@media (max-width:1024px){.ns-ccm.is-sticky{position:static}}.ns-ccm__head{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:0;font-size:14px;font-weight:700;color:var(--ns-cc-text);line-height:1.5}.ns-ccm__head>svg{color:var(--ns-cc-accent);flex:0 0 16px}.ns-ccm__list{margin:0;display:flex;flex-direction:column}.ns-ccm__row{padding:11px 0;border-bottom:1px solid var(--ns-cc-line-2)}.ns-ccm__row:last-child{border-bottom:0;padding-bottom:0}.ns-ccm__row:first-child{padding-top:0}.ns-ccm__row dt{display:flex;align-items:center;gap:6px;margin:0 0 3px;color:var(--ns-cc-muted);font-size:11.5px;font-weight:600}.ns-ccm__row dt>svg{flex:0 0 14px;color:var(--ns-cc-faint)}.ns-ccm__row dd{margin:0;color:var(--ns-cc-text);font-size:13.5px;font-weight:600;line-height:1.8}.ns-ccm__row dd a{color:var(--ns-cc-accent);text-decoration:none}.ns-ccm__row dd a:hover{color:var(--ns-cc-accent-dark);text-decoration:underline}.ns-ccm__files{margin-top:14px;padding-top:14px;border-top:1px solid var(--ns-cc-line-2)}.ns-ccm__files-label{display:block;color:var(--ns-cc-muted);font-size:11.5px;font-weight:600;margin-bottom:7px}.ns-ccm__files ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:5px}.ns-ccm__files li{display:flex;align-items:center;gap:7px}.ns-ccm__files code{background:var(--ns-cc-surface-2);border:1px solid var(--ns-cc-line-2);border-radius:6px;padding:2px 8px;font-size:11.5px;color:var(--ns-cc-text-2);font-family:Menlo,Consolas,monospace}.ns-ccm__dot,.ns-ccv__dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:var(--lang,var(--ns-cc-faint))}.ns-ccm__note{margin:14px 0 0;padding:11px 14px;background:var(--ns-cc-accent-soft);border:1px solid var(--ns-cc-accent-line);border-radius:11px;color:#4a4f8a;font-size:12px;line-height:1.9}.ns-ccv{--ns-ccv-size:13px;background:var(--ns-cc-ink);border:1px solid var(--ns-cc-ink-line);border-radius:var(--ns-cc-radius);overflow:hidden;box-shadow:0 14px 40px rgba(12,15,28,.18)}.ns-ccv__head{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--ns-cc-ink-2);border-bottom:1px solid var(--ns-cc-ink-line)}.ns-ccv__dots{display:inline-flex;gap:6px;flex:0 0 auto}.ns-ccv__dots i{width:11px;height:11px;border-radius:50%;display:block}.ns-ccv__dots i:nth-child(1){background:#ff5f57}.ns-ccv__dots i:nth-child(2){background:#febc2e}.ns-ccv__dots i:nth-child(3){background:#28c840}.ns-ccv__file{display:inline-flex;align-items:center;gap:7px;color:#cdd3e1;font-family:Menlo,Consolas,monospace;font-size:12.5px}.ns-ccv__tabs{display:flex;align-items:center;gap:3px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin}.ns-ccv__tab{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;background:0 0;border:0;border-radius:8px;padding:6px 11px;color:#7f879c;font-family:Menlo,Consolas,monospace;font-size:12px;cursor:pointer;transition:background .15s,color .15s}.ns-ccv__tab:hover{background:rgba(255,255,255,.05);color:#cdd3e1}.ns-ccv__tab.is-active{background:rgba(255,255,255,.09);color:#fff}.ns-ccv__tab:focus-visible{outline:2px solid var(--ns-cc-accent);outline-offset:-2px}.ns-ccv__actions{display:flex;align-items:center;gap:6px;margin-inline-start:auto;flex:0 0 auto}.ns-ccv__lang{font-family:Menlo,Consolas,monospace;font-size:10px;font-weight:700;letter-spacing:.5px;color:#7f879c;border:1px solid #2f3447;border-radius:5px;padding:2px 7px}.ns-ccv__btn{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.06);border:1px solid transparent;color:#cdd3e1;border-radius:8px;padding:6px 11px;font:inherit;font-size:11.5px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.ns-ccv__btn:hover{background:rgba(255,255,255,.12);color:#fff}.ns-ccv__btn:focus-visible{outline:2px solid var(--ns-cc-accent);outline-offset:2px}.ns-ccv__btn.is-done{background:rgba(40,200,64,.16);color:#7ee29a}.ns-ccv__panel{display:none;position:relative}.ns-ccv__panel.is-active{display:block}.ns-ccv__scroll{display:flex;align-items:flex-start;overflow:auto;direction:ltr;max-height:var(--ns-ccv-max,none);transition:max-height .25s ease}.ns-ccv__scroll.is-open{max-height:none}.ns-ccv__gutter{flex:0 0 auto;padding:16px 10px 16px 14px;text-align:right;color:#4d5468;font-family:Menlo,Consolas,monospace;font-size:var(--ns-ccv-size);line-height:1.75;white-space:pre;user-select:none;border-inline-end:1px solid #1e2230;background:#0d0f17;position:sticky;inset-inline-start:0}.ns-ccv:not(.has-lines) .ns-ccv__gutter{display:none}.ns-ccv__pre{margin:0;padding:16px 18px;flex:1 1 auto;min-width:0;background:0 0;border:0;overflow:visible;color:#dfe4ee;font-family:Menlo,Consolas,monospace;font-size:var(--ns-ccv-size);line-height:1.75;white-space:pre;tab-size:4}.ns-ccv__pre code{font:inherit;color:inherit;background:0 0;padding:0}.ns-ccv__pre:focus-visible{outline:2px solid var(--ns-cc-accent);outline-offset:-2px}.ns-ccv__more{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;border:0;border-top:1px solid var(--ns-cc-ink-line);background:linear-gradient(to top,var(--ns-cc-ink-2),rgba(23,26,38,.85));color:#cdd3e1;padding:10px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}.ns-ccv__more:hover{color:#fff;background:var(--ns-cc-ink-2)}.ns-ccv--raw{padding:18px 20px;color:#dfe4ee}.ns-ccv--raw pre{white-space:pre-wrap;word-break:break-word}@media (max-width:640px){.ns-ccv__head{flex-wrap:wrap}.ns-ccv__actions{margin-inline-start:0}.ns-ccv__dots{display:none}}@media (prefers-reduced-motion:reduce){.ns-cc__card,.ns-cc__cta>svg,.ns-ccv__scroll{transition:none!important}.ns-cc__card:hover{transform:none}}.ns-cc__bar.is-sticky{position:sticky;top:0;z-index:5;padding:12px 0;margin-bottom:10px;background:var(--ns-cc-page,#fff);box-shadow:0 10px 18px -14px rgba(24,28,40,.45)}.ns-cc--dark .ns-cc__bar.is-sticky{background:var(--ns-cc-ink)}.admin-bar .ns-cc__bar.is-sticky{top:32px}@media (max-width:782px){.admin-bar .ns-cc__bar.is-sticky{top:46px}}.ns-cc__count-sep{margin:0 6px;color:var(--ns-cc-line)}.ns-cc__count b{font-weight:700;color:var(--ns-cc-text-2)}.ns-cc--dark .ns-cc__count b{color:#cdd3e1}.ns-cch{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.ns-cch__crumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--ns-cc-faint);font-size:12.5px}.ns-cch__crumbs a{color:var(--ns-cc-muted);text-decoration:none}.ns-cch__crumbs a:hover{color:var(--ns-cc-accent)}.ns-cch__crumbs .is-current{color:var(--ns-cc-text-2)}.ns-cch__tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ns-cch__tags .ns-cc__chapter{max-width:none;text-decoration:none}a.ns-cc__chapter:hover{background:var(--ns-cc-accent);color:#fff}.ns-cch__title{margin:0;padding:0;font-size:clamp(20px,4.2vw,28px);font-weight:800;line-height:1.5;letter-spacing:-.4px;color:var(--ns-cc-text)}.ns-cch__usage{margin:0;max-width:70ch;color:var(--ns-cc-text-2);font-size:15px;line-height:1.9}.ns-cc--related .ns-cc__sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}.ns-cc--related .ns-cc__sec-head h2{margin:0;padding:0;font-size:clamp(15px,2.6vw,17px);font-weight:700;line-height:1.5;color:var(--ns-cc-text)}.ns-cc--dark.ns-cc--related .ns-cc__sec-head h2{color:#f2f4f8}.ns-cc__all{display:inline-flex;align-items:center;gap:5px;color:var(--ns-cc-accent);font-size:12.5px;font-weight:700;text-decoration:none}.ns-cc__all>svg{transition:transform .18s ease}.ns-cc__all:hover>svg{transform:translateX(-3px)}@media (prefers-reduced-motion:reduce){.ns-cc__all>svg{transition:none}}@container (max-width:300px){.ns-cc__card{padding:15px 16px;gap:8px}.ns-cc__card-top{flex-wrap:wrap}.ns-cc__chapter{max-width:100%}.ns-cc__title{font-size:14.5px}.ns-cc__card-foot{flex-direction:column;align-items:flex-start;gap:7px}}.ns-ccv{max-width:100%}.ns-ccv__pre{-webkit-overflow-scrolling:touch}@media (max-width:782px){.ns-ccv{--ns-ccv-size:12px}.ns-ccv__head{flex-wrap:wrap;row-gap:8px;padding:10px 12px}.ns-ccv__tabs{order:3;width:100%;flex-basis:100%}.ns-ccv__actions{margin-inline-start:auto}.ns-ccv__btn{min-height:38px;padding:8px 12px}.ns-ccv__gutter{padding:14px 8px 14px 10px}.ns-ccv__pre{padding:14px 12px}}@media (max-width:480px){.ns-ccv.has-lines .ns-ccv__gutter{display:none}.ns-ccv__btn--copy span[data-ns-ccv-copy-label]{display:none}.ns-ccv__lang{display:none}}@media (max-width:480px){.ns-ccm{padding:15px 16px}.ns-ccm__row dd{font-size:13px}}.ns-cch{max-width:100%}.ns-cch__crumbs{font-size:clamp(11.5px,2.4vw,12.5px)}.ns-cch__usage{font-size:clamp(13px,2.8vw,15px)}@media (max-width:480px){.ns-cch__tags{gap:6px}.ns-cch__crumbs{row-gap:2px}}@media (max-width:640px){.ns-cc__chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;margin-inline:-2px;padding-inline:2px}.ns-cc__chips::-webkit-scrollbar{display:none}.ns-cc__chip{flex:0 0 auto;min-height:38px}}.ns-cc,.ns-ccm,.ns-ccv,.ns-cch{max-width:100%;min-width:0}.ns-cc__grid>*{min-width:0}.ns-cc__pager{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:18px}.ns-cc__pages{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.ns-cc .ns-cc__page{min-width:38px;min-height:38px;display:inline-grid;place-items:center;padding:0 10px;background:var(--ns-cc-surface);border:1px solid var(--ns-cc-line);color:var(--ns-cc-text-2);border-radius:10px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;font-variant-numeric:tabular-nums;transition:background .15s,color .15s,border-color .15s}.ns-cc .ns-cc__page:hover:not(:disabled){border-color:var(--ns-cc-accent-line);color:var(--ns-cc-accent)}.ns-cc .ns-cc__page.is-active{background:var(--ns-cc-accent);border-color:var(--ns-cc-accent);color:#fff}.ns-cc .ns-cc__page:disabled{opacity:.4;cursor:not-allowed}.ns-cc .ns-cc__page:focus-visible{outline:2px solid var(--ns-cc-accent);outline-offset:2px}.ns-cc__page--nav{font-size:17px;line-height:1}.ns-cc .ns-cc__more{display:inline-flex;align-items:center;gap:7px;min-height:42px;padding:10px 24px;background:var(--ns-cc-surface);border:1px solid var(--ns-cc-line);color:var(--ns-cc-accent);border-radius:999px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}.ns-cc .ns-cc__more:hover{background:var(--ns-cc-accent-soft);border-color:var(--ns-cc-accent-line)}.ns-cc .ns-cc__more:focus-visible{outline:2px solid var(--ns-cc-accent);outline-offset:2px}.ns-cc__more-n{color:var(--ns-cc-faint);font-weight:600;font-size:12px}.ns-cc--dark .ns-cc__page,.ns-cc--dark .ns-cc__more{background:var(--ns-cc-ink-2);border-color:var(--ns-cc-ink-line);color:#cdd3e1}.ns-cc--dark .ns-cc__page.is-active{background:var(--ns-cc-accent);border-color:var(--ns-cc-accent);color:#fff}@media (max-width:480px){.ns-cc__pages{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;max-width:70vw}.ns-cc__pages::-webkit-scrollbar{display:none}}