.p23{max-width:1120px;margin:auto;padding:32px 20px 70px;color:var(--text-primary,#243b42);line-height:1.65}.p23 *{box-sizing:border-box}.p23 h1{font-size:clamp(1.8rem,4vw,2.7rem);line-height:1.17;max-width:850px;margin:16px 0}.p23 h2{font-size:1.35rem;line-height:1.3}.p23 h3{font-size:1.06rem}.p23 p{max-width:80ch}.p23 .p23-kicker{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:#637575;font-weight:700}.p23 .p23-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.p23 .p23-card,.p23 .p23-step{border:1px solid #cbd5d1;border-radius:16px;background:var(--card-bg,#fffefa);padding:24px;margin:22px 0}.p23 .p23-card{margin:0}.p23 .p23-card ol{padding-left:24px}.p23 li{margin:9px 0}.p23 a{color:var(--link-color,#2856a0);text-underline-offset:3px}.p23 .p23-sub{color:var(--text-secondary,#566568)}.p23 .p23-note{padding:14px 18px;border-left:4px solid #8ea9d0;background:rgba(100,130,190,.08);border-radius:8px}.p23 pre{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.65 Consolas,monospace;padding:18px;background:rgba(70,100,130,.07);border:1px solid #cbd5d1;border-radius:10px;tab-size:4}.p23 input,.p23 textarea{width:100%;padding:12px;border:1px solid #94a6a5;border-radius:9px;background:var(--card-bg,#fffefa);color:inherit;font:inherit}.p23 textarea{min-height:260px;font:15px/1.65 Consolas,monospace;resize:vertical}.p23 button,.p23 .p23-button{padding:10px 16px;border:1px solid #819baf;background:var(--card-bg,#fffefa);color:inherit;border-radius:9px;font:600 .95rem/1.4 inherit;cursor:pointer;min-height:44px}.p23 button:disabled{opacity:.55;cursor:wait}.p23 [data-run],.p23 .p23-button{background:#284a70;color:white;text-decoration:none;display:inline-block}.p23 .p23-actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.p23 .p23-columns{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px}.p23 [data-results]{list-style:none;padding:0;margin:0}.p23 [data-results] li{white-space:pre-wrap;font:13px/1.6 Consolas,monospace;padding:12px;border:1px solid #b7c9bf;border-radius:8px}.p23 .p23-fail{border-color:#b87956!important}.p23 details{margin:14px 0}.p23 summary{cursor:pointer;padding:10px 0;font-weight:600}.p23 .p23-next{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:24px 0}.p23 .CodeMirror{height:330px;border:1px solid #a6b6bf;border-radius:10px;font-size:15px;resize:vertical;min-height:200px;overflow:auto}.p23 .CodeMirror pre{border:0;border-radius:0;background:none;padding:0 4px;white-space:pre}.p23 [hidden]{display:none!important}.p23 :focus-visible{outline:3px solid #688fc4;outline-offset:3px}.p23 [data-progress]{font-size:.9rem}.p23 .p23-map{padding-left:22px}.p23 .p23-current{font-weight:700}.p23 label{display:block;margin-bottom:8px}.p23 [data-status]{min-height:48px}.p23 .p23-step-number{font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:#567080;font-weight:700}@media(max-width:760px){.p23 .p23-grid,.p23 .p23-columns{grid-template-columns:1fr}.p23 .p23-step,.p23 .p23-card{padding:18px}.p23{padding:20px 14px 50px}.p23 h1{font-size:1.8rem}}@media(prefers-reduced-motion:reduce){.p23 *{scroll-behavior:auto!important}}

.p23 .CodeMirror{height:320px;width:100%;min-width:0;border:1px solid #4b5368;border-radius:12px;background:#1e1e1e;color:#d4d4d4;font:15px/1.65 Consolas,'Cascadia Code','Courier New',monospace;text-align:left}
.p23 .CodeMirror:focus-within{border-color:#9d94ff;box-shadow:0 0 0 2px #9d94ff44}
.p23 .CodeMirror pre.CodeMirror-line,.p23 .CodeMirror pre.CodeMirror-line-like{font:inherit;line-height:inherit;border:0;border-radius:0;box-shadow:none;background:transparent;margin:0;padding:0 8px;white-space:pre;word-break:normal;overflow-wrap:normal;max-width:none;color:inherit}
.p23 .CodeMirror-gutters{background:#1e1e1e;border-right:1px solid #363636}
.p23 .CodeMirror-linenumber{color:#919191;padding:0 10px 0 8px}
.p23 .CodeMirror-cursor{border-left:2px solid #eee}
.p23 .CodeMirror-selected{background:#264f78}.p23 .CodeMirror-focused .CodeMirror-selected{background:#264f78}
.p23 .CodeMirror-activeline-background{background:#ffffff08}
.p23 .CodeMirror-matchingbracket{color:#ffdb80!important;outline:1px solid #888}
.p23 .cm-keyword{color:#c586c0}.p23 .cm-def{color:#dcdcaa}.p23 .cm-variable{color:#9cdcfe}.p23 .cm-variable-2{color:#9cdcfe}.p23 .cm-builtin{color:#4ec9b0}.p23 .cm-number{color:#b5cea8}.p23 .cm-string,.p23 .cm-string-2{color:#ce9178}.p23 .cm-comment{color:#91b978}.p23 .cm-operator{color:#d4d4d4}.p23 .cm-meta{color:#dcdcaa}.p23 .cm-error{color:#ff9191;text-decoration:underline wavy}
.p23 .CodeMirror-dialog{background:#252526;color:#eee;border-color:#555;font:14px/1.6 system-ui,sans-serif;padding:8px}
.p23 .CodeMirror-dialog input{display:inline-block;width:180px;max-width:70%;padding:5px;background:#333;color:#fff;border:1px solid #888;border-radius:4px;font:inherit}
.p23 .CodeMirror-searching{background:#855d20aa}
.p23 .acw-code-hint{display:block;color:var(--theme-muted,#b6bfd5);margin:8px 0 12px;font-size:12px;line-height:1.6}
.p23 .acw-editor-help dl{display:grid;grid-template-columns:minmax(110px,170px) 1fr;gap:12px 18px;margin:16px 0}.p23 .acw-editor-help dt{font-weight:700}.p23 .acw-editor-help dd{margin:0;line-height:1.6}
@media(max-width:600px){.p23 .CodeMirror{height:280px;font-size:14px}.p23 .acw-editor-help dl{grid-template-columns:1fr;gap:6px}.p23 .acw-editor-help dd{margin-bottom:12px}}

.p23 .ac-py-suggest{position:absolute;z-index:20;overflow:auto;overscroll-behavior:contain;background:#18263c;color:#f4f7ff;border:1px solid #9baed2;border-radius:8px;box-shadow:0 8px 30px #0005;font:13px/1.4 system-ui;box-sizing:border-box}
.p23 .ac-py-suggest[hidden]{display:none}.p23 .ac-py-suggest [role=option]{padding:8px 10px;cursor:pointer;border-bottom:1px solid #ffffff18}.p23 .ac-py-suggest [aria-selected=true]{background:#324c78}.p23 .ac-py-suggest strong{display:block;font:600 13px/1.5 monospace;overflow-wrap:anywhere}.p23 .ac-py-suggest small{display:block;color:#d2def3;font:12px/1.4 system-ui}
.p23 .ac-py-suggest-toggle{font:12px/1.5 system-ui;display:flex;align-items:center;gap:5px;margin:7px 0}.p23 .ac-py-suggest-toggle input{width:auto;margin:0}
