/* YK Python Atölyesi */
body.has-yk-lab article.wrap, body.has-yk-lab .article { width: min(100% - 2rem, 1440px); max-width: none; }
body.has-yk-lab.page .entry-content > * { max-width: none; margin-inline: 0; }
body.has-yk-lab .article-head, body.has-yk-lab .entry-content { max-width: none; }
#ykpy h2::before, #ykpy h3::before, #ykpy h4::before { content: none; }
#ykpy h3 { margin: 0 0 6px; font-size: 1rem; }
#ykpy pre, #ykpy code { border: 0; }
#ykpy ol, #ykpy ul { margin: 0; }
#ykpy .py-welcome ol { margin: 0 0 6px; }
.py-intro { margin: 0 0 14px; color: var(--muted); font-size: .98rem; }
.py-intro b { color: var(--text); }
.py-noscript, .py-missing { background: var(--panel); border: 1px solid var(--warn); border-radius: var(--radius); padding: 18px 20px; }

#ykpy { --py-h: 640px; font-size: 15px; line-height: 1.5; margin: 0 0 24px; }
.py-app { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 0; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); overflow: hidden; box-shadow: var(--shadow); min-height: var(--py-h); }
#ykpy.side-closed .py-app { grid-template-columns: 0 minmax(0, 1fr); }
#ykpy.side-closed .py-side { display: none; }
#ykpy button { font: inherit; color: inherit; cursor: pointer; }
.py-side { border-inline-end: 1px solid var(--line); background: var(--bg-2); display: flex; flex-direction: column; min-width: 0; max-height: 82vh; }
.py-stabs { display: flex; border-bottom: 1px solid var(--line); }
.py-stabs button { flex: 1; padding: 11px 6px; background: none; border: 0; border-bottom: 2px solid transparent; color: var(--muted); font-weight: 600; font-size: .9rem; }
.py-stabs button.on { color: var(--accent); border-bottom-color: var(--accent); background: var(--panel); }
.py-sbody { overflow: auto; padding: 12px; flex: 1; }
.py-welcome { background: color-mix(in srgb, var(--accent) 8%, var(--panel)); border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--line)); border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; font-size: .88rem; }
.py-welcome h3 { margin: 0 0 6px; font-size: 1rem; }
.py-welcome ol { margin: 0 0 6px; padding-inline-start: 20px; }
.py-welcome p { margin: 0; }
.py-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.py-chips button { background: var(--panel); border: 1px solid var(--line); border-radius: 99px; padding: 3px 11px; font-size: .8rem; color: var(--muted); }
.py-chips button.on { background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
.py-card { display: block; width: 100%; text-align: start; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; margin-bottom: 9px; position: relative; transition: border-color .15s, transform .15s; }
.py-card:hover { border-color: var(--accent); transform: translateY(-1px); }
.py-card b { display: block; padding-inline-end: 54px; font-size: .95rem; }
.py-card small { display: block; color: var(--muted); margin-top: 3px; font-size: .8rem; line-height: 1.4; }
.py-ci { float: inline-start; font-size: 1.5rem; margin-inline-end: 10px; line-height: 1.2; }
.py-lv { position: absolute; top: 10px; inset-inline-end: 12px; color: var(--accent); font-size: .65rem; letter-spacing: 1px; }
.py-learn { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.py-learn i { font-style: normal; font-size: .7rem; background: var(--panel-2); border-radius: 6px; padding: 1px 7px; color: var(--muted); }
.py-badge { display: inline-block; margin-top: 6px; font-size: .7rem; font-weight: 700; color: var(--warn); border: 1px solid var(--warn); border-radius: 6px; padding: 0 6px; }
.py-blank { border-style: dashed; }

.py-les { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; margin-bottom: 8px; }
.py-les summary { cursor: pointer; padding: 9px 12px; font-weight: 600; font-size: .9rem; list-style: none; display: flex; gap: 9px; align-items: center; }
.py-les summary::-webkit-details-marker { display: none; }
.py-no { background: var(--accent); color: var(--accent-ink); border-radius: 50%; min-width: 24px; height: 24px; display: grid; place-items: center; font-size: .75rem; }
.py-les[open] summary { border-bottom: 1px solid var(--line); }
.py-les p { margin: 8px 12px; font-size: .86rem; }
.py-ltip { background: color-mix(in srgb, var(--warn) 12%, transparent); border-radius: 8px; padding: 6px 9px; }
.py-lcode { margin: 8px 12px; padding: 9px 11px; background: #0b1218; color: #cfe3f0; border-radius: 8px; overflow: auto; font: .78rem/1.5 var(--mono); }
.py-les .py-btn { margin: 0 12px 12px; }
.py-search { width: 100%; padding: 7px 10px; border-radius: 8px; border: 1px solid var(--line); background: var(--panel); color: var(--text); margin-bottom: 8px; }
#py-gl dt { font-weight: 700; color: var(--accent); margin-top: 8px; font-size: .9rem; }
#py-gl dd { margin: 0; font-size: .85rem; color: var(--muted); }
.py-tips { padding-inline-start: 18px; font-size: .88rem; }
.py-tips li { margin-bottom: 8px; }
.py-pi { display: flex; gap: 4px; margin-bottom: 6px; }
.py-pi.on .py-pio { border-color: var(--accent); }
.py-pio { flex: 1; text-align: start; background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 7px 10px; }
.py-pio b { display: block; font-size: .9rem; }
.py-pio small { color: var(--muted); font-size: .72rem; }
.py-pix { background: none; border: 0; }
.py-wide { width: 100%; margin-bottom: 10px; }

.py-main { min-width: 0; display: flex; flex-direction: column; }
.py-bar { display: flex; gap: 8px; align-items: center; padding: 9px 12px; border-bottom: 1px solid var(--line); flex-wrap: wrap; background: var(--panel); }
.py-spacer { flex: 1; }
.py-name { background: var(--bg-2); border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px; color: var(--text); min-width: 140px; max-width: 280px; font-weight: 600; }
.py-btn { background: var(--panel-2); border: 1px solid var(--line); border-radius: 9px; padding: 7px 13px; font-weight: 600; color: var(--text); }
.py-btn:hover { border-color: var(--accent); }
.py-btn[disabled] { opacity: .5; }
.py-ghost { background: none; }
.py-run { background: var(--accent); color: var(--accent-ink) !important; border-color: var(--accent); }
.py-stop { background: var(--danger); color: #fff !important; border-color: var(--danger); }
.py-dl { border-color: var(--accent-2); }
.py-sm { padding: 4px 10px; font-size: .8rem; }

.py-split { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); flex: 1; min-height: 0; }
.py-col { min-width: 0; display: flex; flex-direction: column; }
.py-edcol { border-inline-end: 1px solid var(--line); }
.py-ftabs { display: flex; gap: 2px; padding: 6px 8px 0; background: var(--bg-2); border-bottom: 1px solid var(--line); overflow-x: auto; align-items: flex-end; }
.py-ft { display: inline-flex; align-items: center; background: var(--panel-2); border: 1px solid var(--line); border-bottom: 0; border-radius: 8px 8px 0 0; }
.py-ft.on { background: #0b1218; border-color: var(--accent); }
.py-ftn, .py-ftx, .py-fadd { background: none; border: 0; padding: 5px 9px; font-size: .8rem; font-family: var(--mono); white-space: nowrap; }
.py-ftx { padding-inline-start: 0; color: var(--muted); }
.py-fadd { color: var(--accent); font-size: 1rem; }
.py-editor { flex: 1; min-height: 360px; max-height: 70vh; background: #0b1218; position: relative; }
.py-hint { background: var(--bg-2); border-top: 1px solid var(--line); padding: 8px 12px; font-size: .84rem; min-height: 54px; }
.py-hint b { color: var(--accent); margin-inline-end: 8px; }

/* editör */
.ke { height: 100%; color: #cfe3f0; font: 14px/1.6 var(--mono); }
.ke-scroll { height: 100%; overflow: auto; display: flex; align-items: flex-start; max-height: 70vh; }
.ke-gutter { position: sticky; inset-inline-start: 0; z-index: 2; min-width: 44px; padding: 10px 8px 10px 0; text-align: end; color: #5b7287; background: #0b1218; user-select: none; display: flex; flex-direction: column; }
.ke-gutter span { display: block; height: 22.4px; }
.ke-gutter .is-error { color: #fff; background: var(--danger); }
.ke-gutter .is-focus { color: var(--accent); }
.ke-stack { position: relative; flex: 1; min-width: 0; padding: 10px 12px 40px 0; }
.ke-hl, .ke-ta { margin: 0; padding: 0; border: 0; font: inherit; line-height: 22.4px; white-space: pre; tab-size: 4; letter-spacing: 0; word-spacing: 0; }
.ke-hl { pointer-events: none; min-width: 100%; display: block; }
.ke-hl .ln { display: block; height: 22.4px; }
.ke-hl .ln.is-error { background: color-mix(in srgb, var(--danger) 28%, transparent); box-shadow: -4px 0 0 var(--danger); }
.ke-hl .ln.is-focus { background: color-mix(in srgb, var(--accent) 20%, transparent); }
.ke-ta { position: absolute; inset: 10px 12px 40px 0; width: calc(100% - 12px); height: calc(100% - 50px); resize: none; background: transparent; color: transparent; caret-color: #fff; outline: none; overflow: hidden; }
.ke-ta::selection { background: rgba(56, 189, 248, .35); }
.t-kw { color: #ff7ab2; } .t-st { color: #8be58b; } .t-cm { color: #6d8294; font-style: italic; } .t-nu { color: #f5b942; }
.t-bi { color: #5ec8ff; } .t-fn { color: #ffd479; } .t-de { color: #c9a2ff; }

.py-otabs { display: flex; flex-wrap: wrap; border-bottom: 1px solid var(--line); background: var(--bg-2); align-items: center; }
.py-otabs button { background: none; border: 0; border-bottom: 2px solid transparent; padding: 9px 12px; font-size: .85rem; font-weight: 600; color: var(--muted); }
.py-otabs button.on { color: var(--accent); border-bottom-color: var(--accent); }
.py-status { margin-inline-start: auto; padding: 0 12px; font-size: .78rem; color: var(--muted); }
.py-op { flex: 1; min-height: 360px; max-height: 70vh; overflow: auto; position: relative; }
.py-op[hidden] { display: none; }
.py-console { margin: 0; padding: 12px 14px; min-height: 100%; background: #070c11; color: #d6e2ec; font: 13.5px/1.55 var(--mono); white-space: pre-wrap; word-break: break-word; overflow: auto; max-height: 70vh; }
.c-err { color: #ff8a93; } .c-warn { color: var(--warn); } .c-note { color: #7f94a8; } .c-prompt { color: #d6e2ec; } .c-echo { color: var(--accent); }
.py-inwrap { display: inline-flex; gap: 4px; vertical-align: baseline; }
.py-in { background: #0e1a25; color: var(--accent); border: 1px solid var(--accent); border-radius: 6px; font: inherit; padding: 1px 6px; min-width: 160px; }
.py-inok { background: var(--accent); color: var(--accent-ink); border: 0; border-radius: 6px; padding: 0 8px; }
.py-errbox { margin-top: 10px; padding: 10px 12px; border-radius: 10px; background: color-mix(in srgb, var(--warn) 14%, #070c11); border: 1px solid var(--warn); font-family: var(--sans); white-space: normal; }
.py-errbox p { margin: 4px 0 0; }
.py-stdinbox { padding: 8px 12px; background: var(--bg-2); border-bottom: 1px solid var(--line); font-size: .8rem; }
.py-stdinbox textarea { width: 100%; background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 8px; font: 13px var(--mono); padding: 6px; }
.py-xhead { margin: 0; padding: 10px 12px; font-size: .82rem; color: var(--muted); }
.py-explain { padding: 0 8px 12px; }
.py-xi { display: grid; grid-template-columns: 30px 1fr; gap: 2px 8px; width: 100%; text-align: start; background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 7px 10px; margin-bottom: 6px; }
.py-xi.on, .py-xi:hover { border-color: var(--accent); }
.py-xl { grid-row: span 2; color: var(--accent); font: 700 .8rem var(--mono); padding-top: 2px; }
.py-xi code { font: .78rem var(--mono); color: var(--accent-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.py-xi em { font-style: normal; font-size: .85rem; }
.py-empty { padding: 28px 18px; color: var(--muted); text-align: center; font-size: .9rem; }
#py-frame { width: 100%; height: 100%; min-height: 420px; border: 0; background: #fff; }
.py-figs { padding: 10px; display: grid; gap: 12px; }
.py-figs figure { margin: 0; background: #fff; border-radius: 10px; padding: 6px; }
.py-figs img { width: 100%; height: auto; display: block; }
.py-figs figcaption { text-align: end; padding: 4px; font-size: .8rem; }
.py-figs figcaption a { color: #0369a1; }
.py-files ul { list-style: none; margin: 0; padding: 0 10px; }
.py-files li { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 7px 0; border-bottom: 1px solid var(--line); }
.py-fn { font: .85rem var(--mono); flex: 1; min-width: 120px; }
.py-files small { color: var(--muted); }
.py-view { margin: 10px; padding: 10px; background: #070c11; border-radius: 8px; font: .8rem var(--mono); white-space: pre-wrap; max-height: 260px; overflow: auto; }

@media (max-width: 1100px) { .py-split { grid-template-columns: 1fr; } .py-edcol { border-inline-end: 0; border-bottom: 1px solid var(--line); } .py-op { max-height: none; } .py-console { max-height: 60vh; } }
@media (max-width: 900px) { .py-app { grid-template-columns: 1fr; } .py-side { max-height: 60vh; border-inline-end: 0; border-bottom: 1px solid var(--line); } #ykpy.side-closed .py-app { grid-template-columns: 1fr; } .py-btn { padding: 8px 10px; } }
