:root{color-scheme:light;--color-bg:#fff;--color-surface:#f7f6fb;--color-surface-muted:#eeecf6;--color-text:#171523;--color-text-muted:#676277;--color-border:#ded9e8;--color-accent:#6551c9;--color-accent-hover:#4f3daf;--color-success:#148565;--color-warning:#a66712;--color-danger:#b74252;--color-code-bg:#161329;--shadow-sm:0 8px 25px rgba(31,23,59,.08);--shadow-md:0 22px 65px rgba(31,23,59,.13);--radius-sm:10px;--radius-md:17px;--radius-lg:28px;--content-width:1240px;--sidebar-width:270px;--toc-width:220px;--php:#777bb3;--plum:#382c69;--mint:#57d8b5;--amber:#f0b55a}
[data-theme=dark]{color-scheme:dark;--color-bg:#100e1b;--color-surface:#171425;--color-surface-muted:#211d34;--color-text:#f4f0ff;--color-text-muted:#b6afc8;--color-border:#353047;--color-accent:#a797ff;--color-accent-hover:#c0b5ff;--color-success:#62dbb7;--color-warning:#f5c979;--color-danger:#ff8794;--color-code-bg:#0b0914;--shadow-sm:0 10px 30px rgba(0,0,0,.25);--shadow-md:0 25px 70px rgba(0,0,0,.38);--php:#a4a8d7;--plum:#c5b9ff}
@media(prefers-color-scheme:dark){html[data-theme=auto]{color-scheme:dark;--color-bg:#100e1b;--color-surface:#171425;--color-surface-muted:#211d34;--color-text:#f4f0ff;--color-text-muted:#b6afc8;--color-border:#353047;--color-accent:#a797ff;--color-accent-hover:#c0b5ff;--color-success:#62dbb7;--color-warning:#f5c979;--color-danger:#ff8794;--color-code-bg:#0b0914;--shadow-sm:0 10px 30px rgba(0,0,0,.25);--shadow-md:0 25px 70px rgba(0,0,0,.38);--php:#a4a8d7;--plum:#c5b9ff}}
*{box-sizing:border-box}html{overflow-x:clip;scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;overflow-x:clip;background:var(--color-bg);color:var(--color-text);font:16px/1.65 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}code,pre,kbd{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace}:focus-visible{outline:3px solid color-mix(in srgb,var(--color-accent) 58%,white);outline-offset:3px}::selection{background:color-mix(in srgb,var(--color-accent) 26%,transparent)}.wrap{width:min(var(--content-width),calc(100% - 40px));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:1000;top:8px;left:8px;padding:10px 14px;border-radius:10px;background:var(--color-text);color:var(--color-bg);transform:translateY(-150%)}.skip-link:focus{transform:none}
.site-header{position:sticky;z-index:100;top:0;height:68px;border-bottom:1px solid color-mix(in srgb,var(--color-border) 76%,transparent);background:color-mix(in srgb,var(--color-bg) 88%,transparent);backdrop-filter:blur(18px)}.header-inner{width:min(var(--content-width),calc(100% - 32px));height:100%;margin:auto;display:flex;align-items:center;gap:26px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:850;letter-spacing:-.04em;white-space:nowrap}.brand i{color:var(--color-accent);font-style:normal}.brand-mark{display:grid;place-items:center;width:48px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--plum),var(--color-accent));color:#fff;font:800 11px/1 Consolas,monospace;box-shadow:0 8px 22px color-mix(in srgb,var(--color-accent) 30%,transparent)}.main-nav{display:flex;align-items:center;gap:20px;margin-left:8px}.main-nav a{color:var(--color-text-muted);font-size:14px;font-weight:700}.main-nav a:hover{color:var(--color-accent)}.header-actions{margin-left:auto;display:flex;gap:8px}.search-trigger,.icon-button{height:40px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.search-trigger{min-width:210px;padding:0 9px 0 12px;display:flex;align-items:center;gap:8px}.search-trigger span{flex:1;text-align:left}.search-trigger kbd,.hero-search kbd{padding:2px 7px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg);font-size:10px}.icon-button{width:40px;display:grid;place-items:center}.menu-button{display:none}
.button{min-height:46px;padding:0 18px;border:1px solid transparent;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-weight:780;line-height:1;transition:.18s ease}.button:hover{transform:translateY(-2px)}.button.primary{background:linear-gradient(135deg,var(--color-accent),#8370e3);color:#fff;box-shadow:0 12px 28px color-mix(in srgb,var(--color-accent) 28%,transparent)}.button.secondary{border-color:var(--color-border);background:var(--color-bg)}.button.ghost{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.07);color:#fff}.button svg,.route-card svg,.topic-row svg,.related-card svg,.contact-card svg{width:17px;height:17px}.eyebrow,.section-heading span,.catalog-hero>span,.local-first>div>span,.contact-intro>span{color:var(--color-accent);font-size:12px;font-weight:850;letter-spacing:.13em;text-transform:uppercase}
.home-hero{position:relative;min-height:690px;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(480px,.95fr);align-items:center;background:#17132b;color:#fff}.home-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 13% 15%,rgba(119,123,179,.35),transparent 33%),radial-gradient(circle at 90% 75%,rgba(87,216,181,.14),transparent 30%);pointer-events:none}.hero-copy{position:relative;z-index:2;padding:70px 0 78px}.hero-copy .eyebrow{color:#83e1c7}.hero-copy h1{margin:16px 0 22px;font-size:clamp(50px,5.7vw,78px);line-height:.98;letter-spacing:-.06em}.hero-copy h1 span{background:linear-gradient(90deg,#aeb4f0,#a998ff 50%,#6ee4c1);background-clip:text;color:transparent}.hero-copy>p{max-width:680px;margin:0;color:#bcb7d0;font-size:19px}.hero-search{width:min(650px,100%);min-height:56px;margin-top:27px;padding:0 13px 0 16px;border:1px solid rgba(255,255,255,.15);border-radius:14px;background:rgba(255,255,255,.08);color:#d2cde1;display:flex;align-items:center;gap:11px;cursor:pointer}.hero-search span{flex:1;text-align:left}.hero-search kbd{border-color:rgba(255,255,255,.16);background:rgba(0,0,0,.12)}.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.hero-stats{display:flex;flex-wrap:wrap;gap:24px;margin-top:27px;color:#9992ac;font-size:12px}.hero-stats b{color:#fff;font-size:14px}.hero-code{position:relative;z-index:2;width:min(540px,calc(100% - 40px));margin-right:max(20px,calc((100vw - var(--content-width))/2));padding:28px;border:1px solid rgba(255,255,255,.13);border-radius:24px;background:rgba(255,255,255,.065);box-shadow:0 35px 90px rgba(0,0,0,.3);transform:rotate(1.2deg)}.hero-code>div{display:flex;justify-content:space-between;color:#aca6c1;font-size:12px}.hero-code i{color:#73ddbd;font-style:normal}.hero-code pre{overflow:auto;margin:18px 0;padding:22px;border-radius:15px;background:#0a0812;color:#e5e1ef;font-size:14px;line-height:1.8}.hero-code p{margin:0;color:#aaa4bc}.hero-code p b{color:#aeb4f0}
.route-section{padding-block:100px}.section-heading{margin-bottom:35px;display:flex;align-items:end;justify-content:space-between;gap:40px}.section-heading h2,.local-first h2,.contact-intro h2{max-width:760px;margin:7px 0 0;font-size:clamp(34px,4vw,52px);line-height:1.07;letter-spacing:-.045em}.section-heading>p{max-width:510px;margin:0;color:var(--color-text-muted)}.route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.route-card{min-height:260px;padding:28px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:flex;flex-direction:column;transition:.2s ease}.route-card>span{color:var(--color-accent);font:800 12px/1 Consolas}.route-card h2{margin:20px 0 8px;font-size:28px;letter-spacing:-.04em}.route-card p{margin:0 0 25px;color:var(--color-text-muted)}.route-card b{margin-top:auto;display:flex;align-items:center;gap:7px;color:var(--color-accent);font-size:14px}.route-card:hover{transform:translateY(-5px);border-color:var(--color-accent);box-shadow:var(--shadow-md)}.popular-section,.services{padding-block:100px;background:linear-gradient(135deg,#241c49,#17132b);color:#fff}.section-heading.light>p{color:#b9b2cb}.section-heading.light span{color:#78dfc1}.topic-list{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid rgba(255,255,255,.13);border-left:1px solid rgba(255,255,255,.13)}.topic-row{min-height:105px;padding:20px;border-right:1px solid rgba(255,255,255,.13);border-bottom:1px solid rgba(255,255,255,.13);display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:18px}.topic-row span{color:#827ca0;font-size:12px;text-transform:uppercase}.topic-row strong{font-size:18px}.topic-row:hover{background:rgba(255,255,255,.06)}.local-first{padding-block:100px;display:grid;grid-template-columns:1.2fr .8fr;gap:80px;align-items:center}.local-first>div>p{max-width:680px;color:var(--color-text-muted);font-size:18px}.privacy-card{padding:34px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}.privacy-card strong{display:block;color:var(--color-success);text-transform:uppercase;letter-spacing:.1em}.privacy-card b{display:block;margin:15px 0;font-size:30px}.privacy-card p{color:var(--color-text-muted)}
.page-shell{padding-block:30px 80px}.breadcrumbs{margin:5px 0 28px;display:flex;flex-wrap:wrap;gap:8px;color:var(--color-text-muted);font-size:13px}.breadcrumbs a:hover{color:var(--color-accent)}.reference-grid{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,820px) var(--toc-width);gap:34px;align-items:start}.left-nav,.page-toc{position:sticky;top:98px;padding:20px;border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface);display:grid;gap:5px}.left-nav strong,.page-toc strong{margin-bottom:6px}.left-nav a,.page-toc a{padding:7px 9px;border-radius:8px;color:var(--color-text-muted);font-size:13px}.left-nav a:hover,.page-toc a:hover{background:var(--color-bg);color:var(--color-accent)}.reference-content{min-width:0}.entity-meta{display:flex;flex-wrap:wrap;gap:7px}.entity-meta span{padding:5px 9px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);font-size:11px;font-weight:750}.reference-content h1{margin:16px 0 15px;font-size:clamp(40px,5vw,64px);line-height:1.03;letter-spacing:-.055em}.lead{margin:0;padding:20px 22px;border-left:4px solid var(--color-accent);border-radius:0 13px 13px 0;background:var(--color-surface);font-size:19px}.page-actions{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.page-actions .is-active{border-color:var(--color-accent);color:var(--color-accent)}.signature{margin:28px 0;padding:18px 20px;border:1px solid #2e2942;border-radius:14px;background:var(--color-code-bg);color:#eee9ff;display:flex;align-items:center;justify-content:space-between;gap:20px}.signature code{overflow:auto}.signature button{flex:0 0 auto;width:38px;height:38px;border:1px solid #45405a;border-radius:9px;background:#252039;color:#d9d2ec;display:grid;place-items:center;cursor:pointer}.article-section{padding-block:26px;border-top:1px solid var(--color-border)}.article-section h2{margin:0 0 12px;font-size:29px;letter-spacing:-.035em}.article-section p{color:var(--color-text-muted)}.article-section pre{position:relative;overflow:auto;margin:18px 0;padding:22px;border-radius:14px;background:var(--color-code-bg);color:#eee9ff;line-height:1.75}.related-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.related-card{min-height:112px;padding:17px;border:1px solid var(--color-border);border-radius:13px;background:var(--color-surface);display:grid;grid-template-columns:1fr auto;gap:5px}.related-card small{grid-column:1/-1;color:var(--color-accent)}.related-card svg{align-self:center}.sources ul{padding-left:20px}.sources a{color:var(--color-accent);text-decoration:underline;text-underline-offset:3px}.sources [data-external-source-text]{margin-bottom:16px}.sources [data-external-source-text]>strong,.source-address{display:block}.source-address{margin:4px 0;color:var(--color-accent);font:600 12px/1.55 Consolas,monospace;overflow-wrap:anywhere}.sources [data-external-source-text]>span:last-child{color:var(--color-text-muted);font-size:13px}
.author-message{margin-top:40px;margin-bottom:70px;padding:30px;border:1px solid color-mix(in srgb,var(--color-accent) 28%,var(--color-border));border-radius:22px;background:linear-gradient(135deg,color-mix(in srgb,var(--color-accent) 12%,var(--color-bg)),color-mix(in srgb,var(--color-success) 9%,var(--color-bg)));display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:22px}.author-photo{width:68px;height:68px;border-radius:18px;overflow:hidden;background:var(--color-surface-muted);box-shadow:0 8px 20px color-mix(in srgb,var(--color-accent) 18%,transparent)}.author-photo img{width:100%;height:100%;display:block;object-fit:cover}.author-message span{color:var(--color-accent);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.12em}.author-message h2{margin:4px 0;font-size:25px}.author-message p{margin:0;color:var(--color-text-muted)}.author-message strong{display:block;margin-top:5px}.site-footer{padding-top:70px;border-top:1px solid var(--color-border);background:var(--color-surface)}.footer-grid{display:grid;grid-template-columns:1.2fr .7fr .7fr .9fr 1.6fr;gap:34px}.footer-grid>div{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.footer-grid>div>strong{margin-bottom:8px}.footer-grid a,.footer-grid button{color:var(--color-text-muted);font-size:13px}.footer-grid a:hover,.footer-grid button:hover{color:var(--color-accent)}.footer-brand p{color:var(--color-text-muted)}.footer-privacy p{margin:0;color:var(--color-text-muted);font-size:13px}.footer-privacy p a{text-decoration:underline}.policy-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.policy-links button{padding:0;border:0;background:none;text-decoration:underline;cursor:pointer}.footer-bottom{margin-top:48px;padding:20px 0;border-top:1px solid var(--color-border);display:flex;justify-content:space-between;gap:20px;color:var(--color-text-muted);font-size:12px}
.catalog-hero{padding-block:38px 50px}.catalog-hero h1{max-width:850px;margin:10px 0 14px;font-size:clamp(46px,6vw,74px);line-height:1;letter-spacing:-.055em}.catalog-hero>p{max-width:750px;color:var(--color-text-muted);font-size:18px}.catalog-search{max-width:620px;height:54px;margin-top:24px;padding:0 15px;border:1px solid var(--color-border);border-radius:13px;background:var(--color-surface);display:flex;align-items:center;gap:10px}.catalog-search input{width:100%;border:0;outline:0;background:transparent;color:var(--color-text)}.catalog-layout{padding-bottom:90px;display:grid;grid-template-columns:220px 1fr;gap:35px;align-items:start}.catalog-layout>aside{position:sticky;top:98px;padding:18px;border:1px solid var(--color-border);border-radius:13px;display:grid}.catalog-layout>aside a,.catalog-layout>aside button{padding:8px;border:0;border-radius:8px;background:none;color:var(--color-text-muted);text-align:left;cursor:pointer}.catalog-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.catalog-card{padding:23px;border:1px solid var(--color-border);border-radius:15px;background:var(--color-surface)}.catalog-card small,.catalog-card>span{color:var(--color-accent);font-size:11px;text-transform:uppercase}.catalog-card h2{margin:8px 0;font-size:23px;line-height:1.2}.catalog-card p{color:var(--color-text-muted)}.catalog-card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.empty-state{padding:30px;text-align:center;color:var(--color-text-muted)}.empty-state strong{display:block;color:var(--color-text);font-size:19px}
.tutorial-library-hero{padding-bottom:38px}.tutorial-library-stats{max-width:760px;margin-top:26px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tutorial-library-stats span{padding:16px 18px;border:1px solid var(--color-border);border-radius:13px;background:var(--color-surface);color:var(--color-text-muted)}.tutorial-library-stats strong{display:block;color:var(--color-text);font-size:25px}.tutorial-library{padding-bottom:95px}.tutorial-library-intro{margin-bottom:28px;padding:25px 28px;border:1px solid var(--color-border);border-radius:18px;background:var(--color-surface);display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:end}.tutorial-library-intro h2{margin:8px 0 0;font-size:34px;letter-spacing:-.04em}.tutorial-library-intro p{margin:0;color:var(--color-text-muted);font-size:17px}.tutorial-book-list{display:grid;gap:18px}.tutorial-catalog-book{padding:30px;border:1px solid var(--color-border);border-radius:20px;background:linear-gradient(135deg,var(--color-surface),color-mix(in srgb,var(--color-accent) 5%,var(--color-bg)));display:grid;grid-template-columns:88px 1fr;gap:26px;transition:.18s ease}.tutorial-catalog-book:hover{border-color:color-mix(in srgb,var(--color-accent) 65%,var(--color-border));box-shadow:var(--shadow-sm);transform:translateY(-2px)}.tutorial-catalog-order{color:color-mix(in srgb,var(--color-accent) 58%,var(--color-border));font:900 46px/1 Consolas,monospace}.tutorial-catalog-copy>small{color:var(--color-accent);font-size:11px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.tutorial-catalog-copy h2{max-width:920px;margin:9px 0 12px;font-size:clamp(28px,4vw,43px);line-height:1.05;letter-spacing:-.045em}.tutorial-catalog-copy h2 a:hover{color:var(--color-accent)}.tutorial-catalog-copy>p{max-width:900px;color:var(--color-text-muted);font-size:17px}.tutorial-catalog-meta{margin:22px 0;display:flex;flex-wrap:wrap;gap:9px}.tutorial-catalog-meta div{min-width:112px;padding:11px 14px;border:1px solid var(--color-border);border-radius:11px;background:var(--color-bg)}.tutorial-catalog-meta dt{color:var(--color-text-muted);font-size:11px;text-transform:uppercase}.tutorial-catalog-meta dd{margin:3px 0 0;font-weight:800}.tutorial-catalog-stack{display:block;margin-bottom:18px;color:var(--color-text-muted);font-size:13px}.tutorial-library-help{margin-top:22px;padding:22px 24px;border:1px dashed var(--color-border);border-radius:16px;display:flex;align-items:center;gap:10px}.tutorial-library-help>div{margin-right:auto}.tutorial-library-help p{margin:5px 0 0;color:var(--color-text-muted);font-size:14px}
.contact-hero{padding-block:80px 95px;display:grid;grid-template-columns:1.2fr .8fr;gap:80px;align-items:center}.contact-hero h1{margin:12px 0 20px;font-size:clamp(48px,6vw,76px);line-height:1;letter-spacing:-.058em}.contact-hero>div>p{max-width:720px;color:var(--color-text-muted);font-size:20px}.benefit-stack{display:grid;gap:12px}.benefit-stack span{padding:22px;border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface);font-weight:720}.process{padding-block:85px}.three-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.three-grid article,.service-grid article{padding:28px;border:1px solid var(--color-border);border-radius:17px;background:var(--color-surface)}.three-grid article>b,.service-grid article>b{color:var(--color-accent);font:800 12px Consolas}.three-grid h3,.service-grid h3{font-size:23px}.three-grid p{color:var(--color-text-muted)}.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.service-grid article{border-color:rgba(255,255,255,.13);background:rgba(255,255,255,.06)}.service-grid article>b{color:#78dfc1}.service-grid p{color:#b9b2cb}.contact-author{margin-top:90px;padding:34px;border:1px solid var(--color-border);border-radius:24px;background:var(--color-surface);display:grid;grid-template-columns:190px 1fr;align-items:center;gap:34px}.contact-author picture{width:190px;height:190px;border-radius:20px;overflow:hidden}.contact-author img{width:100%;height:100%;display:block;object-fit:cover}.contact-author h2{margin:8px 0;font-size:38px;letter-spacing:-.04em}.contact-author p{max-width:690px;color:var(--color-text-muted);font-size:18px}.contact-section{padding-block:100px}.contact-intro{max-width:790px;margin-bottom:35px}.contact-intro p{color:var(--color-text-muted);font-size:18px}.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.contact-card{min-height:170px;padding:24px;border:1px solid var(--color-border);border-radius:16px;background:var(--color-surface);display:flex;flex-direction:column;align-items:flex-start}.contact-card small{color:var(--color-text-muted)}.contact-card strong{margin:12px 0;font-size:20px;word-break:break-word}.contact-card span{margin-top:auto;color:var(--color-accent);font-size:12px;word-break:break-all}.contact-card svg{align-self:flex-end}.contact-card button{margin-top:auto;padding:8px 11px;border:1px solid var(--color-border);border-radius:9px;background:var(--color-bg);cursor:pointer}.contact-card:hover{border-color:var(--color-accent)}
.simple-page{padding-block:40px 90px}.simple-page h1,.error-page h1{font-size:clamp(45px,7vw,76px);letter-spacing:-.05em}.map-list{padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:9px;list-style:none}.map-list li{padding:14px;border:1px solid var(--color-border);border-radius:10px;display:flex;justify-content:space-between;gap:12px}.map-list small{color:var(--color-text-muted)}.error-page{min-height:60vh;padding-block:100px;text-align:center}.error-page>span{color:var(--color-accent);font:900 80px/1 Consolas}.error-page p{max-width:600px;margin:0 auto 25px;color:var(--color-text-muted)}
.search-dialog{width:min(760px,calc(100% - 24px));max-height:min(720px,calc(100vh - 30px));padding:0;border:1px solid var(--color-border);border-radius:18px;background:var(--color-bg);color:var(--color-text);box-shadow:var(--shadow-md)}.search-dialog::backdrop{background:rgba(9,7,17,.7);backdrop-filter:blur(5px)}.search-box{min-height:420px}.search-head{height:62px;padding:0 14px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:10px}.search-head input{flex:1;border:0;outline:0;background:transparent;color:var(--color-text)}.search-head button{border:0;background:transparent;color:var(--color-text-muted);cursor:pointer}.search-filters{padding:12px 14px;display:flex;flex-wrap:wrap;gap:7px;border-bottom:1px solid var(--color-border)}.search-filters button{padding:6px 10px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.search-filters .active{border-color:var(--color-accent);color:var(--color-accent)}.search-results{padding:10px}.search-result{padding:14px;border-radius:11px;display:grid;grid-template-columns:90px 1fr;gap:3px 12px}.search-result:hover{background:var(--color-surface)}.search-result small{grid-row:1/3;color:var(--color-accent);font-size:11px;text-transform:uppercase}.search-result p{margin:0;color:var(--color-text-muted);font-size:13px}.cookie-consent{position:fixed;z-index:500;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));left:18px;max-width:1180px;margin:auto;padding:18px;border:1px solid color-mix(in srgb,var(--color-accent) 35%,var(--color-border));border-radius:17px;background:color-mix(in srgb,var(--color-bg) 95%,transparent);box-shadow:var(--shadow-md);backdrop-filter:blur(18px);display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px}.cookie-consent[hidden]{display:none}.cookie-consent p{margin:3px 0;color:var(--color-text-muted);font-size:13px}.cookie-consent a{text-decoration:underline}.cookie-actions{display:flex;align-items:center;gap:9px}.text-button{padding:10px;border:0;background:none;color:var(--color-text-muted);cursor:pointer}.consent-note{grid-column:1/-1;color:var(--color-warning)!important}.toast{position:fixed;z-index:700;right:20px;bottom:20px;padding:11px 15px;border-radius:10px;background:var(--color-text);color:var(--color-bg);box-shadow:var(--shadow-sm)}
@media(max-width:1120px){.main-nav{display:none}.menu-button{display:grid}.main-nav.open{position:fixed;inset:68px 0 auto;padding:16px 20px;border-bottom:1px solid var(--color-border);background:var(--color-bg);display:grid;gap:3px;box-shadow:var(--shadow-md)}.main-nav.open a{padding:10px;border-radius:8px}.home-hero{grid-template-columns:1fr}.hero-code{display:none}.reference-grid{grid-template-columns:220px minmax(0,1fr)}.page-toc{display:none}.footer-grid{grid-template-columns:1.2fr repeat(3,.7fr)}.footer-privacy{grid-column:1/-1}.service-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:780px){.wrap{width:min(100% - 28px,var(--content-width))}.search-trigger{min-width:40px;width:40px;padding:0;justify-content:center}.search-trigger span,.search-trigger kbd{display:none}.home-hero{min-height:auto}.hero-copy{padding-block:60px}.hero-copy h1{font-size:clamp(42px,12vw,62px)}.hero-actions .button{width:100%}.route-grid,.catalog-grid,.topic-list,.three-grid,.contact-grid,.map-list{grid-template-columns:1fr}.topic-row{grid-template-columns:90px 1fr auto}.local-first,.contact-hero{grid-template-columns:1fr;gap:35px}.section-heading{align-items:start;flex-direction:column}.reference-grid{grid-template-columns:1fr}.left-nav{position:static;grid-template-columns:repeat(3,1fr)}.left-nav strong{grid-column:1/-1}.reference-content h1{font-size:42px}.related-grid{grid-template-columns:1fr}.author-message{grid-template-columns:auto 1fr}.author-message .button{grid-column:1/-1}.footer-grid{grid-template-columns:repeat(2,1fr)}.footer-brand,.footer-privacy{grid-column:1/-1}.footer-bottom{flex-direction:column}.catalog-layout{grid-template-columns:1fr}.catalog-layout>aside{position:static}.service-grid{grid-template-columns:1fr}.cookie-consent{grid-template-columns:1fr}.cookie-actions{justify-content:flex-end}.tutorial-library-stats,.tutorial-library-intro{grid-template-columns:1fr}.tutorial-catalog-book{grid-template-columns:1fr;padding:23px}.tutorial-catalog-order{font-size:34px}.tutorial-library-help{align-items:stretch;flex-direction:column}.tutorial-library-help>div{margin:0 0 8px}.tutorial-library-help .button{width:100%}}
@media(max-width:470px){.header-inner{width:calc(100% - 20px);gap:8px}.brand>span:last-child{display:none}.hero-stats{display:grid;gap:8px}.left-nav{grid-template-columns:repeat(2,1fr)}.page-actions .button{width:100%}.author-message{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr}.footer-brand,.footer-privacy{grid-column:auto}.contact-hero h1{font-size:43px}.cookie-actions{display:grid;grid-template-columns:1fr 1fr}.cookie-actions .button{width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media print{.site-header,.cookie-consent,.search-dialog,.page-actions,.left-nav,.page-toc{display:none!important}.reference-grid{display:block}.site-footer{background:#fff;color:#000}}
.tool-hero,.playground-hero{padding-block:38px 45px}.tool-hero h1,.playground-hero h1{max-width:930px;margin:10px 0 14px;font-size:clamp(43px,6vw,72px);line-height:1;letter-spacing:-.055em}.tool-hero>p,.playground-hero>p{max-width:790px;color:var(--color-text-muted);font-size:18px}.local-badge{width:max-content;max-width:100%;margin-top:18px;padding:8px 12px;border:1px solid color-mix(in srgb,var(--color-success) 38%,var(--color-border));border-radius:999px;background:color-mix(in srgb,var(--color-success) 9%,var(--color-bg));color:var(--color-success);font-size:13px;font-weight:750}.tool-layout{padding-bottom:70px;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.tool-workspace{min-width:0;padding:20px;border:1px solid var(--color-border);border-radius:20px;background:var(--color-surface);box-shadow:var(--shadow-sm);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.tool-pane{min-width:0}.tool-pane-head{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--color-text-muted);font-size:12px;font-weight:750}.tool-pane-head label,.tool-pane-head>span:first-child{color:var(--color-text);font-size:14px}.tool-pane textarea,.editor-pane textarea{width:100%;min-height:390px;padding:18px;resize:vertical;border:1px solid var(--color-border);border-radius:13px;background:var(--color-bg);color:var(--color-text);font:14px/1.65 "SFMono-Regular",Consolas,monospace;tab-size:4}.tool-output,.output-pane>pre{min-height:390px;max-height:620px;overflow:auto;margin:0;padding:18px;border:1px solid #2e2942;border-radius:13px;background:var(--color-code-bg);color:#eee9ff;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.65}.tool-buttons{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px}.tool-buttons .button{min-height:40px;padding-inline:13px;font-size:13px}.tool-message{grid-column:1/-1;min-height:24px;margin:0;color:var(--color-text-muted);font-size:13px}.tool-help{padding:23px;border:1px solid var(--color-border);border-radius:17px;background:var(--color-bg);position:sticky;top:92px}.tool-help h2{margin:0 0 10px;font-size:22px}.tool-help p,.tool-help li{color:var(--color-text-muted);font-size:14px}.tool-help ul{padding-left:20px}.tool-details{padding-bottom:90px;display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.tool-details>article{padding:28px;border:1px solid var(--color-border);border-radius:17px;background:var(--color-surface)}.tool-details h2{margin-top:0}.tool-details p{color:var(--color-text-muted)}.tool-details>.related-grid{grid-column:1/-1}
.limit-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.limit-row span{padding:7px 10px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);font-size:12px}.playground-shell{margin-bottom:70px;padding:20px;border:1px solid var(--color-border);border-radius:22px;background:var(--color-surface);box-shadow:var(--shadow-md);display:grid;grid-template-columns:1.08fr .92fr;gap:14px}.editor-pane,.output-pane{min-width:0}.editor-pane textarea{min-height:470px;background:#0f0c1a;color:#eee9ff;border-color:#2e2942}.output-pane>pre{min-height:470px}.stderr{margin-top:12px;padding:14px;border:1px solid color-mix(in srgb,var(--color-danger) 55%,var(--color-border));border-radius:12px;background:color-mix(in srgb,var(--color-danger) 10%,var(--color-bg))}.stderr strong{color:var(--color-danger)}.stderr pre{overflow:auto;margin:8px 0 0;white-space:pre-wrap;color:var(--color-text)}.playground-live{grid-column:1/-1;min-height:24px;margin:0;color:var(--color-text-muted);font-size:13px}.playground-info{padding-bottom:90px;display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.playground-info article{padding:25px;border:1px solid var(--color-border);border-radius:16px;background:var(--color-surface)}.playground-info h2{margin-top:0;font-size:22px}.playground-info p{color:var(--color-text-muted)}
@media(max-width:980px){.tool-layout{grid-template-columns:1fr}.tool-help{position:static}.tool-workspace,.playground-shell{grid-template-columns:1fr}.tool-pane textarea,.tool-output,.editor-pane textarea,.output-pane>pre{min-height:320px}.playground-info{grid-template-columns:1fr}.tool-details{grid-template-columns:1fr}.tool-details>.related-grid{grid-column:auto}}
@media(max-width:560px){.tool-workspace,.playground-shell{width:calc(100% - 20px);padding:10px}.tool-buttons .button{flex:1}.tool-hero h1,.playground-hero h1{font-size:42px}}
@media(max-width:780px){.contact-author{grid-template-columns:1fr}.contact-author picture{width:140px;height:140px}.contact-author h2{font-size:32px}}
.settings-dialog{width:min(720px,calc(100% - 24px));max-height:calc(100vh - 30px);padding:0;border:1px solid var(--color-border);border-radius:20px;background:var(--color-bg);color:var(--color-text);box-shadow:var(--shadow-md)}.settings-dialog::backdrop{background:rgba(9,7,17,.72);backdrop-filter:blur(5px)}.settings-head{padding:20px 22px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:20px}.settings-head span{color:var(--color-accent);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em}.settings-head h2{margin:3px 0;font-size:25px;line-height:1.2}.settings-body{padding:22px;display:grid;gap:14px}.settings-body>section{padding:20px;border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface)}.settings-body h3{margin:0 0 8px}.settings-body p{color:var(--color-text-muted)}.settings-body a{color:var(--color-accent);text-decoration:underline}.settings-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.settings-actions button{min-height:42px;padding:8px 12px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-bg);color:var(--color-text);text-align:left;cursor:pointer}.settings-actions button:hover{border-color:var(--color-accent);color:var(--color-accent)}
.learning-panel{margin:28px 0;padding:25px;border:1px solid color-mix(in srgb,var(--color-accent) 34%,var(--color-border));border-radius:18px;background:linear-gradient(145deg,color-mix(in srgb,var(--color-accent) 8%,var(--color-bg)),var(--color-surface));display:grid;grid-template-columns:1fr 1fr;gap:20px}.learning-panel h2{margin:7px 0}.learning-panel p{color:var(--color-text-muted)}.learning-panel .is-active{border-color:var(--color-success);color:var(--color-success)}.note-box{display:grid;gap:7px;font-weight:750}.note-box textarea,.practice-draft textarea{width:100%;min-height:130px;padding:13px;resize:vertical;border:1px solid var(--color-border);border-radius:11px;background:var(--color-bg);color:var(--color-text);font:14px/1.55 "SFMono-Regular",Consolas,monospace}.note-box small{color:var(--color-text-muted);font-weight:500}.practice-draft,.local-quiz{grid-column:1/-1;padding-top:20px;border-top:1px solid var(--color-border)}.practice-draft{display:grid;gap:10px}.practice-draft>label{font-weight:750}.practice-draft .button{width:max-content}.practice-draft ul{margin:0;color:var(--color-text-muted)}.local-quiz h2{margin-top:0}.quiz-question{margin:12px 0;padding:18px;border:1px solid var(--color-border);border-radius:12px}.quiz-question legend{padding:0 7px;font-weight:750}.quiz-question label{padding:6px 0;display:block;color:var(--color-text-muted)}.quiz-question p{margin:9px 0 0;padding:10px;border-radius:9px;background:var(--color-bg)}.quiz-question.is-correct{border-color:var(--color-success)}.quiz-question.is-wrong{border-color:var(--color-danger)}.local-quiz>[data-quiz-result]{font-weight:750;color:var(--color-text)}
.lab-checklist{grid-column:1/-1;margin:0;padding-top:20px;border:0;border-top:1px solid var(--color-border)}.lab-checklist legend{padding:0 8px;font-weight:800}.lab-checklist label{display:flex;gap:10px;align-items:flex-start;margin:10px 0;padding:11px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-bg);color:var(--color-text-muted)}.lab-checklist input{margin-top:4px;accent-color:var(--color-accent)}.lab-checklist p{margin:12px 0 0;font-weight:750;color:var(--color-text)}
@media(max-width:700px){.settings-actions,.learning-panel{grid-template-columns:1fr}.practice-draft,.local-quiz,.lab-checklist{grid-column:auto}}
.catalog-pagination{display:flex;flex-wrap:wrap;gap:8px;margin:20px auto;padding:0 24px;max-width:1180px}.catalog-pagination a{display:inline-flex;align-items:center;min-height:44px;padding:8px 13px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface);color:var(--color-text);font-weight:700}.catalog-pagination a[aria-current="page"]{border-color:var(--color-accent);color:var(--color-accent)}
.content-method{margin:14px 0 20px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--color-accent) 28%,var(--color-border));border-radius:11px;background:color-mix(in srgb,var(--color-accent) 7%,var(--color-bg));color:var(--color-text-muted);font-size:13px}.content-method a,.methodology-content a{color:var(--color-accent);font-weight:750;text-decoration:underline;text-underline-offset:3px}.methodology-content{max-width:900px;margin-inline:auto}.methodology-content>.eyebrow{display:block;margin-top:22px}.methodology-content .lead{margin-bottom:26px}.methodology-content .article-section p{max-width:820px;font-size:17px}

.tutorial-hero{padding-block:42px 64px}.tutorial-hero-grid{padding:48px;border:1px solid color-mix(in srgb,var(--color-accent) 28%,var(--color-border));border-radius:30px;background:radial-gradient(circle at 82% 20%,color-mix(in srgb,var(--color-success) 18%,transparent),transparent 35%),linear-gradient(145deg,#21194a,#151125);color:#fff;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:55px;align-items:center;box-shadow:var(--shadow-md)}.tutorial-hero h1{max-width:850px;margin:13px 0 18px;font-size:clamp(44px,5.7vw,72px);line-height:1;letter-spacing:-.057em}.tutorial-hero p{max-width:760px;margin:0;color:#c7c0d8;font-size:19px}.tutorial-summary{padding:25px;border:1px solid rgba(255,255,255,.15);border-radius:20px;background:rgba(255,255,255,.07);display:grid;gap:12px}.tutorial-summary strong{font-size:34px;letter-spacing:-.04em}.tutorial-summary span{padding-top:11px;border-top:1px solid rgba(255,255,255,.12);color:#c7c0d8;font-size:13px}.tutorial-method{margin-bottom:44px;padding:20px 24px;border:1px solid color-mix(in srgb,var(--color-success) 34%,var(--color-border));border-radius:17px;background:color-mix(in srgb,var(--color-success) 8%,var(--color-bg));display:grid;grid-template-columns:270px 1fr;gap:25px;align-items:center}.tutorial-method strong{color:var(--color-success);font-size:18px}.tutorial-method p{margin:0;color:var(--color-text-muted)}
.tutorial-book-grid{padding-bottom:85px;display:grid;grid-template-columns:minmax(0,900px) var(--toc-width);gap:42px;align-items:start}.tutorial-book-grid>.reference-content h1{font-size:clamp(42px,5vw,65px)}.tutorial-parts{display:grid;gap:22px}.tutorial-part{padding:22px;border:1px solid var(--color-border);border-radius:18px;background:var(--color-surface)}.tutorial-part-head{display:flex;align-items:center;gap:13px}.tutorial-part-head>span{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--color-accent);color:#fff;font:800 12px Consolas}.tutorial-part-head h2{margin:0;font-size:23px}.tutorial-part ol{margin:20px 0 0;padding:0;list-style:none;display:grid;gap:9px}.tutorial-part li a{padding:16px;border:1px solid var(--color-border);border-radius:13px;background:var(--color-bg);display:grid;grid-template-columns:90px 1fr auto;gap:3px 15px;align-items:center}.tutorial-part li a:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.tutorial-part li span{grid-row:1/3;color:var(--color-accent);font-size:12px;font-weight:800;text-transform:uppercase}.tutorial-part li strong{font-size:17px}.tutorial-part li p{margin:0;color:var(--color-text-muted);font-size:13px}.tutorial-part li small{grid-column:3;grid-row:1/3;color:var(--color-text-muted)}
.tutorial-chapter-head{padding-block:38px 34px}.book-back{display:inline-flex;margin-bottom:20px;color:var(--color-accent);font-weight:750}.book-back:before{content:"←";margin-right:8px}.tutorial-chapter-head h1{max-width:980px;margin:16px 0 18px;font-size:clamp(43px,5.8vw,72px);line-height:1;letter-spacing:-.055em}.tutorial-chapter-head .lead{max-width:900px}.chapter-objectives{max-width:900px;margin-top:20px;padding:18px 21px;border:1px solid var(--color-border);border-radius:15px;background:var(--color-surface);display:grid;grid-template-columns:210px 1fr;gap:20px}.chapter-objectives ul{margin:0;padding-left:20px;color:var(--color-text-muted)}.chapter-objectives li+li{margin-top:5px}.chapter-nav{margin:34px 0;display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.chapter-nav a{min-height:110px;padding:18px;border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface);display:flex;flex-direction:column}.chapter-nav a:last-child{text-align:right}.chapter-nav small{margin-bottom:7px;color:var(--color-accent);font-weight:800;text-transform:uppercase}.chapter-nav strong{line-height:1.3}.chapter-nav a:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}
.tutorial-callout{margin:20px 0;padding:18px 20px;border:1px solid color-mix(in srgb,var(--color-accent) 35%,var(--color-border));border-radius:14px;background:color-mix(in srgb,var(--color-accent) 8%,var(--color-bg))}.tutorial-callout strong{color:var(--color-accent)}.tutorial-callout p{margin:5px 0 0}.tutorial-callout.update{border-color:color-mix(in srgb,var(--color-warning) 45%,var(--color-border));background:color-mix(in srgb,var(--color-warning) 9%,var(--color-bg))}.tutorial-callout.update strong{color:var(--color-warning)}.tutorial-callout.success{border-color:color-mix(in srgb,var(--color-success) 45%,var(--color-border));background:color-mix(in srgb,var(--color-success) 9%,var(--color-bg))}.tutorial-callout.success strong{color:var(--color-success)}.tutorial-code{border:1px solid #302a49}.tutorial-diagram{max-width:100%;overflow:auto;margin:24px 0;padding:16px;border:1px solid var(--color-border);border-radius:18px;background:var(--color-surface)}.tutorial-diagram svg{display:block;width:100%;min-width:700px;height:150px;overflow:visible;fill:none;stroke:none}.tutorial-diagram rect{fill:var(--color-bg);stroke:color-mix(in srgb,var(--color-accent) 48%,var(--color-border));stroke-width:2}.tutorial-diagram text{fill:var(--color-text);stroke:none;font:750 15px/1.2 Inter,system-ui,sans-serif}.tutorial-diagram .diagram-sub{fill:var(--color-text-muted);font-size:12px;font-weight:600}.tutorial-diagram .diagram-arrow{fill:none;stroke:var(--color-accent);stroke-width:2}.tutorial-diagram marker path{fill:var(--color-accent);stroke:none}.tutorial-diagram figcaption{margin-top:12px;color:var(--color-text-muted);font-size:13px;text-align:center}.tutorial-chapter .article-section>p,.tutorial-chapter .article-section>ul,.tutorial-book .article-section>p{font-size:17px}.tutorial-chapter .article-section>ul{color:var(--color-text-muted);padding-left:24px}.tutorial-chapter .article-section>ul li+li{margin-top:7px}
@media(max-width:1120px){.tutorial-book-grid{grid-template-columns:1fr}.tutorial-book-grid>.page-toc{display:none}.tutorial-hero-grid{grid-template-columns:1fr}.tutorial-summary{grid-template-columns:repeat(2,1fr)}.tutorial-summary strong{grid-column:1/-1}}
@media(max-width:760px){.tutorial-hero{padding-block:24px 40px}.tutorial-hero-grid{padding:27px;border-radius:21px;gap:30px}.tutorial-hero h1,.tutorial-chapter-head h1{font-size:43px}.tutorial-method,.chapter-objectives{grid-template-columns:1fr}.tutorial-part{padding:14px}.tutorial-part li a{grid-template-columns:1fr}.tutorial-part li span,.tutorial-part li small{grid-column:auto;grid-row:auto}.chapter-nav{grid-template-columns:1fr}.chapter-nav a:last-child{text-align:left}.tutorial-summary{grid-template-columns:1fr}.tutorial-summary strong{grid-column:auto}.tutorial-diagram{margin-inline:-4px;padding:10px}}
@media print{.tutorial-hero-grid{background:#fff;color:#000;box-shadow:none}.tutorial-hero p,.tutorial-summary span{color:#333}.tutorial-method,.chapter-nav,.learning-panel{display:none}.tutorial-book-grid{display:block}.tutorial-diagram{break-inside:avoid}}
