/* Hafta 5 (V2, kitabevi örneği): görünüm (VIEW) dersinin adım tabanlı görselleri. Genel görünüm clean.scss'den gelir.
   Her sahne bir .anim bileşenidir; lecture5-animation.js bulunduğu slayttaki görünür
   .anim-step sayısını data-step olarak yazar, geri kalanı bu dosyadaki CSS yapar. */

/* animasyonlanabilir uzunluk: JOIN sahnesinde anahtar sütunlar tek değerle kapanır */
@property --w-key { syntax: "<length>"; inherits: true; initial-value: 3.4em; }

.reveal {
  --lecture-accent: #107895;
  --lecture-accent-soft: rgb(16 120 149 / 0.1);
  --lecture-border: #cbdce1;
  --lecture-surface: #f9fbfc;
  --lecture-danger: #b23a48;
  --lecture-danger-soft: rgb(178 58 72 / 0.12);
  --lecture-ok: #2e7d32;
  --lecture-ok-soft: rgb(46 125 50 / 0.12);
  --lecture-warn: #b9770e;
  --lecture-warn-soft: rgb(185 119 14 / 0.14);
  --lecture-muted: #57666b;
  /* satır izleme renkleri: aynı renk, aynı kaydın farklı tablolardaki izi */
  --track-a: #107895;
  --track-a-soft: rgb(16 120 149 / 0.2);
  --track-b: #8e3b8e;
  --track-b-soft: rgb(142 59 142 / 0.18);
  --track-c: #b9770e;
  --track-c-soft: rgb(185 119 14 / 0.2);
}

.reveal .slides section pre { font-size: 0.55em; line-height: 1.3; }
.reveal .slides section table { font-size: 0.68em; }
.reveal .slides section table:not(.dtable) th, .reveal .slides section table:not(.dtable) td { padding-top: 0.14em; padding-bottom: 0.14em; }
.reveal .slides section table th { color: var(--lecture-accent); font-weight: 500; }

/* gövde metni: bu ders yoğun; paragraf ve listeler 1050x700 alana sığsın diye bir kademe küçük */
.reveal .slides section > p,
.reveal .slides section > ul,
.reveal .slides section > ol,
.reveal .slides section > .fragment > p { font-size: 0.82em; line-height: 1.3; margin: 0.45em 0; }
.reveal .slides section > ul li,
.reveal .slides section > ol li { margin: 0.15em 0; }
.reveal .slides section h2 { margin-bottom: 0.25em; }

/* ================= ortak parçalar ================= */
.reveal .anim { position: relative; margin: 0.4em 0 0.2em; text-align: left; }
.reveal .anim > * { min-width: 0; }
.reveal .anim-step { position: absolute; width: 1px; height: 1px; overflow: hidden; pointer-events: none; }
.reveal .anim-status { margin: 0.35em 0 0; color: #37454a; font-size: 0.66em; min-height: 1.3em; }

.reveal .dtable { width: 100%; margin: 0; table-layout: auto; font-size: 0.68em; border-collapse: collapse; }
.reveal .dtable caption { caption-side: top; text-align: left; padding: 0 0 0.2em; color: var(--lecture-accent); font-size: 0.78em; font-weight: 400; font-family: monospace; }
.reveal .dtable th, .reveal .dtable td { padding: 0.22em 0.4em; border-bottom: 1px solid var(--lecture-border); text-align: left; font-weight: 300; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: opacity 0.4s ease, background-color 0.4s ease, color 0.4s ease; }
.reveal .dtable th { font-weight: 400; }
.reveal .dtable td.num, .reveal .dtable th.num { text-align: right; }
.reveal .dtable td.is-null { color: var(--lecture-muted); font-style: italic; }
.reveal .dtable tr.gone td { opacity: 0; }

.reveal .badge { display: inline-block; padding: 0.22em 0.55em; border-radius: 0.18em; font-size: 0.62em; font-weight: 400; line-height: 1.25; opacity: 0; transform: translateY(0.3em); transition: opacity 0.3s ease, transform 0.3s ease; }
.reveal .badge-error { background: var(--lecture-danger-soft); color: var(--lecture-danger); border: 1px solid var(--lecture-danger); font-family: monospace; }
.reveal .badge-ok { background: var(--lecture-ok-soft); color: var(--lecture-ok); border: 1px solid var(--lecture-ok); }
.reveal .badge-warn { background: #fff5e0; color: #8a5a00; border: 1px solid #d9a441; }
.reveal .badge.is-on { opacity: 1; transform: none; }

@keyframes swap-in { from { opacity: 0; transform: translateY(-0.3em); } }
.reveal .anim .swap { display: inline-block; }
.reveal .anim .swap .old { display: inline; }
.reveal .anim .swap .new { display: none; animation: swap-in 0.35s ease; }

.reveal .answer-panel { padding: 0.15em 0.45em; border-left: 0.14em solid var(--lecture-accent); background: var(--lecture-surface); }
.reveal .answer-panel p { margin: 0.35em 0; font-size: 0.85em; }
.reveal .file-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.4em 0.8em; margin: 0.5em 0; font-size: 0.74em; text-align: left; }
.reveal .file-list a { display: block; padding: 0.4em 0.6em; border: 1px solid var(--lecture-border); border-radius: 0.2em; background: var(--lecture-surface); text-decoration: none; }
.reveal .file-list a b { font-family: monospace; font-weight: 400; color: var(--lecture-accent); }
.reveal .file-list a small { display: block; color: var(--lecture-muted); font-size: 0.82em; }
.reveal .compare-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6em; margin-top: 0.4em; }
.reveal .compare-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.reveal .compare-grid > div { padding: 0.4em 0.6em; border: 1px solid var(--lecture-border); border-radius: 0.2em; background: var(--lecture-surface); font-size: 0.7em; text-align: left; }
.reveal .compare-grid > div b { display: block; color: var(--lecture-accent); font-weight: 400; margin-bottom: 0.2em; }
.reveal .option-table td:first-child { font-family: monospace; white-space: nowrap; }

/* satır numarasız çıktı blokları ({.text code-line-numbers="false"}): kod kutusuyla aynı çerçeve */
.reveal .slides section pre.text { display: block; width: 100%; box-sizing: border-box; margin: 0.45em 0; padding: 6px 9px; border: 1px solid #a8afb3; border-radius: 4px; background: #fff; font-size: 0.55em; line-height: 1.3; white-space: pre; overflow-x: auto; }

/* ================= amaç kartları (sadeleştir, topla, böl, güvene al) ================= */
.reveal .purpose-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.45em; margin: 0.7em 0 0.4em; }
.reveal .purpose-card { display: flex; flex-direction: column; gap: 0.25em; padding: 0.6em 0.6em 0.7em; border: 1px solid var(--lecture-border); border-top: 0.22em solid var(--p, var(--lecture-accent)); border-radius: 0.2em; background: var(--lecture-surface); font-size: 0.76em; text-align: left; }
.reveal .purpose-card span { color: var(--p, var(--lecture-accent)); font-weight: 500; font-size: 0.82em; letter-spacing: 0.02em; }
.reveal .purpose-card strong { display: block; font-size: 1.12em; font-weight: 400; line-height: 1.15; }
.reveal .purpose-card small { font-size: 0.84em; line-height: 1.28; color: var(--lecture-muted); }
.reveal .purpose-card.p-simple { --p: var(--track-a); }
.reveal .purpose-card.p-agg { --p: var(--track-b); }
.reveal .purpose-card.p-part { --p: var(--track-c); }
.reveal .purpose-card.p-sec { --p: var(--lecture-danger); }
.reveal .purpose-bonus { margin-top: 0.1em; font-size: 0.68em; color: var(--lecture-muted); text-align: left; }
.reveal .purpose-bonus b { color: var(--lecture-ok); font-weight: 500; }

/* aynı veri, farklı bakış */
.reveal .role-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.6em; margin: 0.7em 0 0.3em; }
.reveal .role-card { padding: 0.5em 0.65em; border: 1px solid var(--lecture-border); border-radius: 0.2em; background: var(--lecture-surface); font-size: 0.72em; text-align: left; }
.reveal .role-card b { display: block; color: var(--lecture-accent); font-weight: 400; font-size: 1.05em; }
.reveal .role-card .role-sees { display: block; margin-top: 0.3em; padding: 0.3em 0.45em; border-radius: 0.15em; background: #fff; border: 1px dashed var(--lecture-accent); font-family: monospace; font-size: 0.82em; color: #26434b; }
.reveal .role-base { margin-top: 0.55em; padding: 0.35em 0.6em; border: 2px solid var(--lecture-ink, #2d3b40); border-radius: 0.2em; background: #eef3f5; font-size: 0.7em; text-align: center; }
.reveal .role-base b { font-family: monospace; font-weight: 400; }

/* ================= ER haritası (satır içi SVG) ================= */
.reveal .er-demo svg { display: block; width: 100%; height: auto; max-height: 430px; }
.reveal .er-demo text { font-family: inherit; fill: #233b43; }
.reveal .er-box { fill: #f3f9fa; stroke: #7ca7b2; stroke-width: 2; }
.reveal .er-box.is-bridge { fill: #fff9ed; stroke: #c2a66a; }
.reveal .er-head { fill: #dbeef2; }
.reveal .er-head.is-bridge { fill: #f6e8c6; }
.reveal .er-name { font-size: 30px; font-weight: 500; }
.reveal .er-field { font-size: 22px; fill: #3e565d; }
.reveal .er-tag { font-size: 14px; font-weight: 500; fill: #107895; letter-spacing: 0.04em; }
.reveal .er-tag.fk { fill: #8e3b8e; }
.reveal .er-link { fill: none; stroke: #6c919c; stroke-width: 2.8; stroke-linecap: round; }
.reveal .er-card { fill: none; stroke: #6c919c; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.reveal .er-verb { font-size: 21px; font-style: italic; fill: #566b72; }
.reveal .er-cap { font-size: 19px; fill: #6a7d83; }
.reveal .er-m2m { fill: none; stroke: #b9770e; stroke-width: 2.6; stroke-dasharray: 9 7; }
.reveal .er-m2m-text { font-size: 21px; fill: #8a5a00; font-weight: 500; }
.reveal .er-demo .g { opacity: 0; transition: opacity 0.5s ease, transform 0.55s cubic-bezier(0.22, 1, 0.36, 1); transform: translateY(0.4em); }
.reveal .er-demo .g.g0 { opacity: 1; transform: none; }
.reveal .er-demo[data-step="1"] .g1, .reveal .er-demo[data-step="2"] .g1, .reveal .er-demo[data-step="3"] .g1,
.reveal .er-demo[data-step="2"] .g2, .reveal .er-demo[data-step="3"] .g2,
.reveal .er-demo[data-step="3"] .g3 { opacity: 1; transform: none; }

/* ================= JOIN: üç tablo tek bakışa ================= */
.reveal .join-demo { --cell-h: 1.85em; --gap: 1.2em; --w-key: 3.4em; --w-h: 7.6em; --w-d: 5.9em; --w-n: 6.4em; transition: --w-key 0.75s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .join-demo[data-step="4"], .reveal .join-demo[data-step="5"] { --w-key: 0em; }
.reveal .join-title { position: relative; height: 1.5em; margin: 0 0 0.2em; text-align: center; font-size: 0.7em; }
.reveal .join-title span { position: absolute; inset: 0; opacity: 0; transition: opacity 0.4s ease; font-family: monospace; color: var(--lecture-accent); }
.reveal .join-demo[data-step="0"] .jt-split, .reveal .join-demo[data-step="1"] .jt-split, .reveal .join-demo[data-step="2"] .jt-split { opacity: 1; }
.reveal .join-demo[data-step="3"] .jt-joined, .reveal .join-demo[data-step="4"] .jt-joined { opacity: 1; }
.reveal .join-demo[data-step="5"] .jt-view { opacity: 1; color: var(--lecture-ok); font-weight: 500; }
.reveal .join-stage { display: flex; justify-content: center; align-items: flex-start; gap: var(--gap); margin: 0.2em 0 0.3em; font-size: 0.58em; transition: gap 0.75s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .join-demo[data-step="3"] .join-stage, .reveal .join-demo[data-step="4"] .join-stage, .reveal .join-demo[data-step="5"] .join-stage { --gap: 0em; gap: 0; }
.reveal .gwrap { display: flex; flex-direction: column; align-items: stretch; }
.reveal .gcap { height: 1.6em; line-height: 1.6em; text-align: center; font-family: monospace; font-size: 0.82em; color: var(--lecture-accent); transition: opacity 0.35s ease; }
.reveal .join-demo[data-step="3"] .gcap, .reveal .join-demo[data-step="4"] .gcap, .reveal .join-demo[data-step="5"] .gcap { opacity: 0; }
.reveal .gt { display: grid; border: 1.5px solid #8aa9b1; border-radius: 0.2em; background: #fff; overflow: hidden; transition: border-color 0.4s ease, border-radius 0.4s ease, box-shadow 0.4s ease; }
.reveal .join-demo[data-step="3"] .gwrap + .gwrap .gt, .reveal .join-demo[data-step="4"] .gwrap + .gwrap .gt, .reveal .join-demo[data-step="5"] .gwrap + .gwrap .gt { border-left-width: 0; }
.reveal .join-demo[data-step="3"] .gwrap:not(:last-child) .gt, .reveal .join-demo[data-step="4"] .gwrap:not(:last-child) .gt, .reveal .join-demo[data-step="5"] .gwrap:not(:last-child) .gt { border-right-width: 0; }
.reveal .join-demo[data-step="3"] .gwrap:first-child .gt, .reveal .join-demo[data-step="4"] .gwrap:first-child .gt, .reveal .join-demo[data-step="5"] .gwrap:first-child .gt { border-radius: 0.2em 0 0 0.2em; }
.reveal .join-demo[data-step="3"] .gwrap:last-child .gt, .reveal .join-demo[data-step="4"] .gwrap:last-child .gt, .reveal .join-demo[data-step="5"] .gwrap:last-child .gt { border-radius: 0 0.2em 0.2em 0; }
/* anahtar sütunlar kapanırken dönüşüm her karede yeniden hesaplanır; geçiş kapatılır */
.reveal .join-demo[data-step="4"] .gt > *, .reveal .join-demo[data-step="5"] .gt > * { transition: background-color 0.45s ease, color 0.45s ease; }
.reveal .gt > * { height: var(--cell-h); line-height: var(--cell-h); padding: 0; overflow: hidden; white-space: nowrap; min-width: 0; border-bottom: 1px solid #dde7ea; transition: background-color 0.45s ease, color 0.45s ease, transform 0.7s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .gt > .r4 { border-bottom: 0; }
.reveal .gt-cards { grid-template-columns: calc(var(--w-key) * 0.78) var(--w-h); }
.reveal .gt-swipes { grid-template-columns: calc(var(--w-key) * 1.95) var(--w-d) calc(var(--w-key) * 1.4); }
.reveal .gt-stations { grid-template-columns: calc(var(--w-key) * 0.78) var(--w-n); }
.reveal .gt .h { font-weight: 500; color: var(--lecture-accent); background: #eef6f8; font-size: 0.92em; }
.reveal .gt .ink { padding: 0 0.55em; display: block; overflow: hidden; text-overflow: clip; }
.reveal .gt .key { text-align: right; }
.reveal .gt .key .ink { padding: 0 0.7em; }
/* kimlik sütunu çevirme: cards tablosunda id, sağ kenara (swipes.card_id yanına) geçer */
.reveal .join-demo[data-step="2"] .gt-cards .c-id, .reveal .join-demo[data-step="3"] .gt-cards .c-id, .reveal .join-demo[data-step="4"] .gt-cards .c-id, .reveal .join-demo[data-step="5"] .gt-cards .c-id { transform: translateX(var(--w-h)); }
.reveal .join-demo[data-step="2"] .gt-cards .c-h, .reveal .join-demo[data-step="3"] .gt-cards .c-h, .reveal .join-demo[data-step="4"] .gt-cards .c-h, .reveal .join-demo[data-step="5"] .gt-cards .c-h { transform: translateX(calc(var(--w-key) * -0.78)); }
/* satır izleme: teal = kart bağı, mor = durak bağı */
.reveal .join-demo:not([data-step="0"]) .gt-cards .r1 { background: var(--track-a-soft); }
.reveal .join-demo:not([data-step="0"]) .gt-cards .r1.c-id, .reveal .join-demo:not([data-step="0"]) .gt-swipes .r1.k-card { background: var(--track-a); color: #fff; }
.reveal .join-demo:not([data-step="0"]) .gt-swipes .r1.k-station, .reveal .join-demo:not([data-step="0"]) .gt-stations .r1.c-id { background: var(--track-b); color: #fff; }
.reveal .join-demo:not([data-step="0"]) .gt-swipes .r1.k-when { background: #f1f4f5; }
.reveal .join-demo:not([data-step="0"]) .gt-stations .r1.c-n { background: var(--track-b-soft); }
.reveal .join-demo[data-step="5"] .gt .r1:not(.key) { box-shadow: inset 0 0 0 0 transparent; font-weight: 500; }
.reveal .join-demo[data-step="5"] .join-stage { filter: drop-shadow(0 0.18em 0.35em rgb(16 120 149 / 0.22)); }

/* ================= iç içe sorgu ve görünüm ================= */
.reveal .nest-demo { display: grid; grid-template-columns: 1.3fr 0.7fr; gap: 0.9em; align-items: start; }
.reveal .nest-code { margin: 0; padding: 0.55em 0.7em; border: 1px solid var(--lecture-border); border-radius: 0.25em; background: #fff; font-size: 0.5em; line-height: 1.5; font-family: monospace; white-space: pre; text-align: left; }
.reveal .nest-code .lv { display: block; padding: 0.1em 0.3em; border-radius: 0.15em; transition: background-color 0.35s ease, box-shadow 0.35s ease; }
.reveal .nest-demo[data-step="1"] .lv3, .reveal .nest-demo[data-step="2"] .lv2, .reveal .nest-demo[data-step="3"] .lv1 { background: var(--lecture-accent-soft); box-shadow: inset 0.18em 0 0 var(--lecture-accent); }
.reveal .nest-chips { display: flex; flex-direction: column; gap: 0.45em; margin-top: 0.1em; }
.reveal .nest-chip { padding: 0.4em 0.6em; border: 1px solid var(--lecture-border); border-radius: 0.2em; background: var(--lecture-surface); font-size: 0.62em; opacity: 0; transform: translateX(0.8em); transition: opacity 0.4s ease, transform 0.4s ease; }
.reveal .nest-chip b { display: block; color: var(--lecture-accent); font-weight: 400; font-family: monospace; margin-bottom: 0.1em; }
.reveal .nest-demo[data-step="1"] .nest-chip:nth-child(-n+1), .reveal .nest-demo[data-step="2"] .nest-chip:nth-child(-n+2), .reveal .nest-demo[data-step="3"] .nest-chip:nth-child(-n+3), .reveal .nest-demo[data-step="4"] .nest-chip:nth-child(-n+3) { opacity: 1; transform: none; }
.reveal .nest-demo .nest-view { grid-column: 1 / -1; padding: 0.5em 0.7em; border: 1px solid var(--lecture-ok); border-radius: 0.25em; background: var(--lecture-ok-soft); font-family: monospace; font-size: 0.6em; opacity: 0; transform: translateY(0.6em); transition: opacity 0.45s ease, transform 0.45s ease; }
.reveal .nest-demo .nest-view small { display: block; margin-top: 0.2em; font-family: inherit; color: var(--lecture-ok); }
.reveal .nest-demo[data-step="4"] .nest-view { opacity: 1; transform: none; }
.reveal .nest-demo .anim-status { grid-column: 1 / -1; }

/* ================= CREATE VIEW sarmalama ================= */
.reveal .wrap-demo { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.45em; align-items: stretch; }
.reveal .wrap-box { position: relative; padding: 0.5em 0.65em; border: 1px solid var(--lecture-border); border-radius: 0.25em; background: #fff; font-family: monospace; font-size: 0.54em; line-height: 1.5; white-space: pre; text-align: left; }
.reveal .wrap-box .wrap-head { display: block; max-height: 0; overflow: hidden; opacity: 0; color: #1a5276; font-weight: 700; transition: max-height 0.45s ease, opacity 0.45s ease; }
.reveal .wrap-demo[data-step="1"] .wrap-head, .reveal .wrap-demo[data-step="2"] .wrap-head, .reveal .wrap-demo[data-step="3"] .wrap-head { max-height: 2em; opacity: 1; }
.reveal .wrap-demo[data-step="1"] .wrap-box, .reveal .wrap-demo[data-step="2"] .wrap-box, .reveal .wrap-demo[data-step="3"] .wrap-box { border-color: var(--lecture-accent); box-shadow: 0 0 0 0.12em var(--lecture-accent-soft); }
.reveal .wrap-arrow { color: var(--lecture-muted); font-size: 0.8em; opacity: 0.3; transition: opacity 0.4s ease, color 0.4s ease; }
.reveal .wrap-demo[data-step="2"] .wrap-arrow, .reveal .wrap-demo[data-step="3"] .wrap-arrow { opacity: 1; color: var(--lecture-accent); }
.reveal .schema-list { padding: 0.45em 0.6em; border: 1px solid var(--lecture-border); border-radius: 0.25em; background: var(--lecture-surface); font-size: 0.6em; text-align: left; }
.reveal .schema-list h4 { margin: 0 0 0.35em; font-family: monospace; font-size: 0.95em; font-weight: 400; color: var(--lecture-accent); }
.reveal .schema-list .row { display: flex; justify-content: space-between; gap: 0.5em; padding: 0.18em 0; border-bottom: 1px solid #e3edf0; font-family: monospace; }
.reveal .schema-list .row:last-child { border-bottom: 0; }
.reveal .schema-list .row i { font-style: normal; color: var(--lecture-muted); font-size: 0.86em; }
.reveal .schema-list .row.is-view { border: 1px dashed var(--lecture-ok); border-radius: 0.15em; padding: 0.18em 0.3em; background: var(--lecture-ok-soft); opacity: 0; transform: translateX(0.5em); transition: opacity 0.45s ease, transform 0.45s ease; }
.reveal .schema-list .row.is-view i { color: var(--lecture-ok); }
.reveal .wrap-demo[data-step="2"] .row.is-view, .reveal .wrap-demo[data-step="3"] .row.is-view { opacity: 1; transform: none; }
.reveal .schema-list .size { margin-top: 0.4em; color: var(--lecture-muted); font-size: 0.9em; opacity: 0; transition: opacity 0.4s ease; }
.reveal .wrap-demo[data-step="3"] .size { opacity: 1; }
.reveal .wrap-demo .anim-status { grid-column: 1 / -1; }
.reveal .wrap-demo .wrap-arrow { display: none; }
.reveal .wrap-demo .schema-list { display: flex; flex-wrap: wrap; align-items: center; gap: 0.3em 0.6em; font-size: 0.6em; }
.reveal .wrap-demo .schema-list h4 { margin: 0 0.5em 0 0; }
.reveal .wrap-demo .schema-list .row { gap: 0.6em; padding: 0.12em 0.5em; border: 1px solid #d5e2e6; border-radius: 0.2em; background: #fff; }
.reveal .wrap-demo .schema-list .row.is-view { border: 1px dashed var(--lecture-ok); background: var(--lecture-ok-soft); }
.reveal .wrap-demo .schema-list .size { margin: 0 0 0 auto; }

/* ================= her sorguda yeniden hesap ================= */
.reveal .fresh-demo { display: grid; grid-template-columns: minmax(0, 1.05fr) auto minmax(0, 0.95fr); gap: 0.7em; align-items: start; }
.reveal .fresh-demo .dtable { font-size: 0.62em; }
.reveal .fresh-demo tr.incoming td { opacity: 0; transform: translateY(-0.5em); }
.reveal .fresh-demo[data-step="1"] tr.incoming td, .reveal .fresh-demo[data-step="2"] tr.incoming td { opacity: 1; transform: none; background: var(--track-c-soft); }
.reveal .fresh-demo .fresh-mid { align-self: center; display: flex; flex-direction: column; align-items: center; gap: 0.2em; color: var(--lecture-muted); font-size: 0.56em; font-family: monospace; opacity: 0.35; transition: opacity 0.35s ease, color 0.35s ease; }
.reveal .fresh-demo .fresh-mid i { font-style: normal; font-size: 2.2em; line-height: 1; }
.reveal .fresh-demo[data-step="2"] .fresh-mid { opacity: 1; color: var(--lecture-accent); }
.reveal .fresh-demo .swap .new { color: var(--lecture-ok); font-weight: 400; }
.reveal .fresh-demo[data-step="2"] tr.target .swap .old { display: none; }
.reveal .fresh-demo[data-step="2"] tr.target .swap .new { display: inline; }
.reveal .fresh-demo[data-step="2"] tr.target td { background: var(--lecture-ok-soft); }
.reveal .fresh-demo .anim-status { grid-column: 1 / -1; }

/* ================= GROUP BY çökmesi ================= */
.reveal .group-demo { --rh: 1.95em; position: relative; font-size: 0.66em; }
.reveal .group-stage { position: relative; height: calc(var(--rh) * 6.3); max-width: 40em; margin: 0 auto; }
.reveal .group-head, .reveal .grow { position: absolute; left: 0; right: 0; height: var(--rh); display: grid; grid-template-columns: 1.6fr 0.9fr 1.2fr 1.25fr; align-items: center; padding: 0 0.6em; box-sizing: border-box; }
.reveal .group-head { top: 0; font-family: monospace; font-size: 0.88em; color: var(--lecture-accent); border-bottom: 2px solid var(--lecture-border); transition: opacity 0.4s ease; }
.reveal .group-head.agg-head { opacity: 0; }
.reveal .group-demo[data-step="3"] .group-head.raw-head { opacity: 0; }
.reveal .group-demo[data-step="3"] .group-head.agg-head { opacity: 1; }
.reveal .group-head span:nth-child(n+3), .reveal .grow span:nth-child(n+3) { text-align: right; }
.reveal .grow { border-bottom: 1px solid var(--lecture-border); border-radius: 0.15em; transition: top 0.75s cubic-bezier(0.22, 1, 0.36, 1), background-color 0.45s ease, opacity 0.45s ease; }
.reveal .grow.r1 { top: calc(var(--rh) * 1); } .reveal .grow.r2 { top: calc(var(--rh) * 2); } .reveal .grow.r3 { top: calc(var(--rh) * 3); } .reveal .grow.r4 { top: calc(var(--rh) * 4); } .reveal .grow.r5 { top: calc(var(--rh) * 5); }
.reveal .group-demo:not([data-step="0"]) .grow.g-a { background: var(--track-a-soft); }
.reveal .group-demo:not([data-step="0"]) .grow.g-b { background: var(--track-b-soft); }
/* adım 2: aynı renkler yan yana toplanır (Gar önce, Cumhuriyet Meydanı sonra) */
.reveal .group-demo[data-step="2"] .grow.r2 { top: calc(var(--rh) * 1); } .reveal .group-demo[data-step="2"] .grow.r4 { top: calc(var(--rh) * 2); }
.reveal .group-demo[data-step="2"] .grow.r1 { top: calc(var(--rh) * 3); } .reveal .group-demo[data-step="2"] .grow.r3 { top: calc(var(--rh) * 4); } .reveal .group-demo[data-step="2"] .grow.r5 { top: calc(var(--rh) * 5); }
/* adım 3: her grup tek satıra iner */
.reveal .group-demo[data-step="3"] .grow.raw { opacity: 0; }
.reveal .group-demo[data-step="3"] .grow.r2, .reveal .group-demo[data-step="3"] .grow.r4 { top: calc(var(--rh) * 1); }
.reveal .group-demo[data-step="3"] .grow.r1, .reveal .group-demo[data-step="3"] .grow.r3, .reveal .group-demo[data-step="3"] .grow.r5 { top: calc(var(--rh) * 2); }
.reveal .grow.agg-row { opacity: 0; pointer-events: none; }
.reveal .grow.agg-row.a1 { top: calc(var(--rh) * 1); } .reveal .grow.agg-row.a2 { top: calc(var(--rh) * 2); }
.reveal .group-demo[data-step="3"] .grow.agg-row { opacity: 1; font-weight: 500; }
.reveal .group-demo .anim-status { margin-top: 0.5em; font-size: 1.04em; }

/* ================= ömür çizelgesi: görünüm, TEMP görünüm, CTE ================= */
.reveal .life-demo { font-size: 0.64em; }
.reveal .life-axis { position: relative; }
.reveal .life-row { display: grid; grid-template-columns: 9.2em 1fr; gap: 0.8em; align-items: center; margin: 0.28em 0; }
.reveal .life-row.is-conn { margin-bottom: 0.5em; }
.reveal .life-conn { display: grid; grid-template-columns: 1fr 1fr; gap: 0.25em; }
.reveal .life-conn span { padding: 0.25em 0.5em; border: 1px dashed var(--lecture-border); border-radius: 0.2em; background: var(--lecture-surface); font-family: monospace; font-size: 0.82em; text-align: center; color: var(--lecture-muted); }
.reveal .life-label { text-align: right; font-family: monospace; font-size: 0.9em; line-height: 1.2; }
.reveal .life-label small { display: block; font-family: inherit; color: var(--lecture-muted); font-size: 0.8em; }
.reveal .life-track { position: relative; height: 2.1em; border-radius: 0.2em; background: #f4f7f8; }
.reveal .life-bar { position: absolute; top: 0.2em; bottom: 0.2em; left: var(--l); width: 0; border-radius: 0.2em; background: var(--c); color: #fff; font-size: 0.8em; line-height: 1.7em; padding: 0 0.5em; box-sizing: border-box; overflow: hidden; white-space: nowrap; opacity: 0; transition: width 0.8s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.3s ease; }
.reveal .life-bar.is-perm { --l: 0%; --c: var(--track-a); }
.reveal .life-bar.is-temp { --l: 2%; --c: var(--track-b); }
.reveal .life-bar.is-cte { --l: 12%; --c: var(--track-c); }
.reveal .life-demo[data-step="1"] .is-perm, .reveal .life-demo[data-step="2"] .is-perm, .reveal .life-demo[data-step="3"] .is-perm, .reveal .life-demo[data-step="4"] .is-perm { opacity: 1; width: 100%; }
.reveal .life-demo[data-step="2"] .is-temp, .reveal .life-demo[data-step="3"] .is-temp, .reveal .life-demo[data-step="4"] .is-temp { opacity: 1; width: 48%; }
.reveal .life-demo[data-step="3"] .is-cte, .reveal .life-demo[data-step="4"] .is-cte { opacity: 1; width: 21%; }
.reveal .life-quit { position: absolute; left: calc(10em + (100% - 10em) / 2); top: 1.9em; bottom: -0.2em; width: 0; border-left: 2px dashed var(--lecture-danger); opacity: 0; transition: opacity 0.4s ease; pointer-events: none; }
.reveal .life-quit::after { content: ".quit"; position: absolute; bottom: -1.5em; left: -1.5em; font-family: monospace; font-size: 0.78em; color: var(--lecture-danger); background: #fff; padding: 0 0.3em; }
.reveal .life-demo[data-step="2"] .life-quit, .reveal .life-demo[data-step="3"] .life-quit, .reveal .life-demo[data-step="4"] .life-quit { opacity: 1; }
.reveal .life-end { margin-left: 0.4em; color: #fff; font-size: 1em; opacity: 0; transition: opacity 0.4s ease 0.7s; }
.reveal .life-demo[data-step="4"] .is-temp .life-end { opacity: 1; }
.reveal .life-demo .anim-status { margin-top: 0.9em; font-size: 1.04em; }

/* ================= CTE anatomisi ================= */
.reveal .slides section .cte-demo pre { margin: 0.2em 0; font-size: 0.54em; line-height: 1.3; }
.reveal .cte-demo .anim-status { display: none; }
.reveal .cte-demo code span { padding: 0.04em 0.12em; border-radius: 0.12em; transition: background-color 0.3s ease, color 0.3s ease; }
.reveal .cte-demo .k { color: #1a5276; }
.reveal .cte-demo[data-step="1"] .c-name, .reveal .cte-demo[data-step="3"] .c-use { background: var(--track-b-soft); color: #5e2360; }
.reveal .cte-demo[data-step="2"] .c-def { background: var(--track-a-soft); }
.reveal .cte-demo[data-step="3"] .c-def { background: transparent; }
.reveal .cte-legend { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4em; margin-top: 0.2em; }
.reveal .cte-legend div { padding: 0.3em 0.5em; border: 1px solid var(--lecture-border); border-radius: 0.2em; font-size: 0.58em; opacity: 0.4; transition: opacity 0.3s ease, border-color 0.3s ease; }
.reveal .cte-legend div b { display: block; font-weight: 400; font-family: monospace; color: var(--lecture-accent); }
.reveal .cte-demo[data-step="1"] .cte-legend div:nth-child(1), .reveal .cte-demo[data-step="2"] .cte-legend div:nth-child(2), .reveal .cte-demo[data-step="3"] .cte-legend div:nth-child(3) { opacity: 1; border-color: var(--lecture-accent); }
.reveal .cte-demo[data-step="3"] .cte-legend div:nth-child(1), .reveal .cte-demo[data-step="3"] .cte-legend div:nth-child(2) { opacity: 0.7; }

/* ================= bölümleme: bir tablo, üç pencere ================= */
.reveal .part-demo { display: grid; grid-template-columns: 1.06fr 0.94fr; gap: 0.8em; align-items: start; }
.reveal .part-demo .dtable { font-size: 0.6em; }
.reveal .part-demo .dtable th, .reveal .part-demo .dtable td { padding: 0.12em 0.4em; }
.reveal .part-demo .dtable td:nth-child(2) { font-family: monospace; font-size: 0.92em; }
.reveal .part-demo[data-step="1"] tr.t-b td, .reveal .part-demo[data-step="2"] tr.t-b td, .reveal .part-demo[data-step="3"] tr.t-b td, .reveal .part-demo[data-step="4"] tr.t-b td { background: var(--track-a-soft); }
.reveal .part-demo[data-step="1"] tr.t-t td, .reveal .part-demo[data-step="2"] tr.t-t td, .reveal .part-demo[data-step="3"] tr.t-t td, .reveal .part-demo[data-step="4"] tr.t-t td { background: var(--lecture-ok-soft); }
.reveal .part-demo[data-step="1"] tr.t-r td, .reveal .part-demo[data-step="2"] tr.t-r td, .reveal .part-demo[data-step="3"] tr.t-r td, .reveal .part-demo[data-step="4"] tr.t-r td { background: var(--track-c-soft); }
.reveal .part-views { display: flex; flex-direction: column; gap: 0.45em; }
.reveal .view-box { padding: 0.35em 0.55em 0.4em; border: 1.5px dashed var(--lecture-border); border-radius: 0.25em; background: #fff; font-size: 0.6em; opacity: 0.28; transition: opacity 0.45s ease, border-color 0.45s ease, transform 0.45s ease; transform: translateX(0.6em); }
.reveal .view-box b { display: block; margin-bottom: 0.2em; font-family: monospace; font-weight: 400; color: var(--lecture-muted); }
.reveal .view-box b i { font-style: normal; float: right; font-family: inherit; color: var(--lecture-muted); font-size: 0.86em; }
.reveal .view-box .chips { display: flex; flex-wrap: wrap; gap: 0.25em; }
.reveal .view-box .chips span { padding: 0.08em 0.4em; border-radius: 0.15em; font-family: monospace; font-size: 0.9em; }
.reveal .view-box.v-b .chips span { background: var(--track-a-soft); }
.reveal .view-box.v-t .chips span { background: var(--lecture-ok-soft); }
.reveal .view-box.v-r .chips span { background: var(--track-c-soft); }
.reveal .part-demo[data-step="2"] .v-b, .reveal .part-demo[data-step="3"] .v-b, .reveal .part-demo[data-step="4"] .v-b { opacity: 1; transform: none; border-style: solid; border-color: var(--track-a); }
.reveal .part-demo[data-step="3"] .v-t, .reveal .part-demo[data-step="4"] .v-t { opacity: 1; transform: none; border-style: solid; border-color: var(--lecture-ok); }
.reveal .part-demo[data-step="4"] .v-r { opacity: 1; transform: none; border-style: solid; border-color: var(--track-c); }
.reveal .part-demo .anim-status { grid-column: 1 / -1; }

/* ================= güvenlik: görünüm ve sızıntı ================= */
.reveal .secure-demo { display: grid; grid-template-columns: 1fr auto 0.7fr auto 1fr; gap: 0.35em; align-items: center; }
.reveal .secure-demo .dtable { font-size: 0.54em; }
.reveal .secure-demo .sec-view { opacity: 0.1; transform: translateX(0.6em); transition: opacity 0.5s ease, transform 0.5s ease; }
.reveal .secure-demo:not([data-step="0"]) .sec-view { opacity: 1; transform: none; }
.reveal .secure-demo .pii { color: var(--lecture-danger); background: var(--lecture-danger-soft); }
.reveal .secure-demo .anon { color: var(--lecture-ok); background: var(--lecture-ok-soft); font-style: italic; }
.reveal .secure-demo .actor { padding: 0.5em 0.4em; border: 1.5px solid var(--lecture-muted); border-radius: 0.3em; background: var(--lecture-surface); font-size: 0.62em; text-align: center; }
.reveal .secure-demo .actor b { display: block; font-weight: 400; }
.reveal .secure-demo .actor small { color: var(--lecture-muted); }
.reveal .secure-demo .sec-arrow { font-size: 1.5em; line-height: 1; opacity: 0; transition: opacity 0.4s ease; }
.reveal .secure-demo .sec-arrow.to-view { color: var(--lecture-ok); }
.reveal .secure-demo .sec-arrow.to-raw { color: var(--lecture-danger); }
.reveal .secure-demo[data-step="2"] .to-view, .reveal .secure-demo[data-step="3"] .to-view, .reveal .secure-demo[data-step="4"] .to-view { opacity: 1; }
.reveal .secure-demo[data-step="3"] .to-raw, .reveal .secure-demo[data-step="4"] .to-raw { opacity: 1; }
.reveal .secure-demo[data-step="3"] .sec-raw .dtable, .reveal .secure-demo[data-step="4"] .sec-raw .dtable { box-shadow: 0 0 0 0.12em var(--lecture-danger-soft); }
.reveal .secure-demo .sec-note { grid-column: 1 / -1; display: flex; gap: 0.6em; align-items: flex-start; min-height: 2.6em; }
.reveal .secure-demo .sec-note .badge-error { margin-top: 0.1em; }
.reveal .secure-demo[data-step="3"] .badge-error, .reveal .secure-demo[data-step="4"] .badge-error { opacity: 1; transform: none; }
.reveal .secure-demo .lock-box { flex: 1; padding: 0.35em 0.6em; border: 1px dashed var(--lecture-ok); border-radius: 0.25em; background: var(--lecture-ok-soft); font-family: monospace; font-size: 0.56em; line-height: 1.45; white-space: pre; opacity: 0; transform: translateY(0.4em); transition: opacity 0.45s ease, transform 0.45s ease; }
.reveal .secure-demo[data-step="4"] .lock-box { opacity: 1; transform: none; }
.reveal .secure-demo .anim-status { grid-column: 1 / -1; }

/* ================= yumuşak silme: tablo ve görünüm eş zamanlı ================= */
.reveal .soft-sync { display: grid; grid-template-columns: 1.15fr auto 0.85fr; gap: 0.6em; align-items: start; }
.reveal .soft-sync .sync-mid { align-self: center; display: flex; flex-direction: column; align-items: center; gap: 0.15em; color: var(--lecture-muted); font-family: monospace; font-size: 0.54em; }
.reveal .soft-sync .sync-mid i { font-style: normal; font-size: 2.3em; line-height: 1; }
.reveal .soft-sync .swap .new { color: var(--lecture-danger); font-weight: 400; }
.reveal .soft-sync[data-step="1"] tr.target td, .reveal .soft-sync[data-step="2"] tr.target td, .reveal .soft-sync[data-step="3"] tr.target td { background: var(--track-b-soft); }
.reveal .soft-sync[data-step="1"] .st-table tr.target .swap .old, .reveal .soft-sync[data-step="2"] .st-table tr.target .swap .old, .reveal .soft-sync[data-step="3"] .st-table tr.target .swap .old { display: none; }
.reveal .soft-sync[data-step="1"] .st-table tr.target .swap .new, .reveal .soft-sync[data-step="2"] .st-table tr.target .swap .new, .reveal .soft-sync[data-step="3"] .st-table tr.target .swap .new { display: inline; }
.reveal .soft-sync .vw-table tr.target td { transition: opacity 0.5s ease 0.15s, background-color 0.4s ease; }
.reveal .soft-sync[data-step="2"] .vw-table tr.target td, .reveal .soft-sync[data-step="3"] .vw-table tr.target td { opacity: 0; }
.reveal .soft-sync[data-step="1"] .sync-mid, .reveal .soft-sync[data-step="2"] .sync-mid, .reveal .soft-sync[data-step="3"] .sync-mid { color: var(--lecture-accent); }
.reveal .soft-sync .sync-foot { grid-column: 1 / -1; display: flex; gap: 0.5em; min-height: 1.6em; }
.reveal .soft-sync[data-step="3"] .badge-error { opacity: 1; transform: none; }
.reveal .soft-sync .anim-status { grid-column: 1 / -1; }
.reveal .soft-sync[data-step="3"] .anim-status { color: var(--lecture-danger); font-family: monospace; }

/* ================= INSTEAD OF DELETE akışı ================= */
.reveal .instead-demo { display: grid; grid-template-columns: 1fr auto 1fr auto 1.1fr; gap: 0.35em; align-items: center; min-height: 7.2em; }
.reveal .inst-box { padding: 0.4em 0.5em; border: 1px solid var(--lecture-border); border-radius: 0.25em; background: var(--lecture-surface); font-size: 0.56em; line-height: 1.4; text-align: left; transition: opacity 0.4s ease, border-color 0.4s ease, box-shadow 0.4s ease, background-color 0.4s ease; }
.reveal .inst-box b { display: block; margin-bottom: 0.2em; font-family: monospace; font-weight: 400; color: var(--lecture-accent); }
.reveal .inst-box pre { margin: 0; font-size: 0.98em; line-height: 1.4; background: transparent; box-shadow: none; white-space: pre-wrap; }
.reveal .inst-box.is-stmt { opacity: 0.4; }
.reveal .instead-demo:not([data-step="0"]) .inst-box.is-stmt { opacity: 1; border-color: var(--lecture-accent); }
.reveal .instead-demo[data-step="2"] .inst-box.is-stmt, .reveal .instead-demo[data-step="3"] .inst-box.is-stmt { text-decoration: line-through; opacity: 0.45; }
.reveal .inst-box.is-view { opacity: 0.55; }
.reveal .instead-demo:not([data-step="0"]) .inst-box.is-view { opacity: 1; border-color: var(--lecture-danger); background: var(--lecture-danger-soft); }
.reveal .instead-demo[data-step="3"] .inst-box.is-view { border-color: var(--lecture-border); background: var(--lecture-surface); }
.reveal .inst-box.is-trig { opacity: 0.35; border-style: dashed; }
.reveal .instead-demo[data-step="2"] .inst-box.is-trig, .reveal .instead-demo[data-step="3"] .inst-box.is-trig { opacity: 1; border-style: solid; border-color: #d9a441; background: #fff9ea; box-shadow: 0 0 0.7em #ffd77a; }
.reveal .inst-arrow { color: var(--lecture-muted); font-size: 1.1em; opacity: 0.3; transition: opacity 0.35s ease, color 0.35s ease; }
.reveal .instead-demo[data-step="1"] .inst-arrow:nth-of-type(1), .reveal .instead-demo[data-step="2"] .inst-arrow, .reveal .instead-demo[data-step="3"] .inst-arrow { opacity: 1; color: var(--lecture-accent); }
.reveal .inst-box .mini { width: 100%; font-size: 0.95em; border-collapse: collapse; }
.reveal .inst-box .mini td { padding: 0.12em 0.3em; border-bottom: 1px solid var(--lecture-border); font-family: monospace; }
.reveal .instead-demo[data-step="3"] .mini tr.target td { background: var(--track-b-soft); }
.reveal .instead-demo[data-step="3"] .mini tr.target .swap .old { display: none; }
.reveal .instead-demo[data-step="3"] .mini tr.target .swap .new { display: inline; color: var(--lecture-danger); font-weight: 700; }
.reveal .inst-box .vgone { transition: opacity 0.5s ease 0.2s; }
.reveal .instead-demo[data-step="3"] .is-view .vgone { opacity: 0.15; text-decoration: line-through; }
.reveal .instead-demo .anim-status { grid-column: 1 / -1; }

/* ================= INSTEAD OF INSERT karar akışı ================= */
.reveal .insert-flow { display: grid; grid-template-columns: 1fr 1.05fr 1.2fr; grid-template-rows: auto auto; gap: 0.5em 0.5em; align-items: center; min-height: 8.6em; }
.reveal .if-box { padding: 0.4em 0.55em; border: 1px solid var(--lecture-border); border-radius: 0.25em; background: var(--lecture-surface); font-size: 0.56em; line-height: 1.4; text-align: left; transition: opacity 0.4s ease, border-color 0.4s ease, box-shadow 0.4s ease, background-color 0.4s ease; }
.reveal .if-box b { display: block; margin-bottom: 0.15em; font-family: monospace; font-weight: 400; color: var(--lecture-accent); }
.reveal .if-box code { background: transparent; font-size: 1em; }
.reveal .if-start { grid-row: 1 / span 2; }
.reveal .if-start .if-row { margin-top: 0.35em; padding: 0.3em 0.45em; border: 1px dashed var(--lecture-accent); border-radius: 0.2em; background: #fff; font-family: monospace; opacity: 0; transition: opacity 0.4s ease; }
.reveal .insert-flow[data-step="1"] .if-start .if-row.r-old, .reveal .insert-flow[data-step="2"] .if-start .if-row.r-old { opacity: 1; }
.reveal .insert-flow[data-step="3"] .if-start .if-row.r-new { opacity: 1; }
.reveal .if-check { grid-row: 1 / span 2; position: relative; display: flex; align-items: center; justify-content: center; text-align: center; min-height: 6.2em; font-size: 0.56em; font-family: monospace; line-height: 1.35; opacity: 0.45; transition: opacity 0.4s ease; }
.reveal .if-check::before { content: ""; position: absolute; inset: 0.2em 0.6em; background: var(--lecture-surface); border: 1.5px solid var(--lecture-border); transform: rotate(45deg) scale(0.74); border-radius: 0.2em; transition: border-color 0.4s ease, background-color 0.4s ease; }
.reveal .if-check span { position: relative; padding: 0 1em; }
.reveal .insert-flow:not([data-step="0"]) .if-check { opacity: 1; }
.reveal .insert-flow:not([data-step="0"]) .if-check::before { border-color: var(--lecture-accent); background: var(--lecture-accent-soft); }
.reveal .if-yes, .reveal .if-no { opacity: 0.35; border-style: dashed; }
.reveal .insert-flow[data-step="2"] .if-yes { opacity: 1; border-style: solid; border-color: var(--lecture-ok); background: var(--lecture-ok-soft); box-shadow: 0 0 0.6em rgb(46 125 50 / 0.25); }
.reveal .insert-flow[data-step="3"] .if-no { opacity: 1; border-style: solid; border-color: var(--track-b); background: var(--track-b-soft); box-shadow: 0 0 0.6em rgb(142 59 142 / 0.25); }
.reveal .if-yes b, .reveal .if-no b { color: inherit; }
.reveal .insert-flow .anim-status { grid-column: 1 / -1; }

/* ================= katman haritası: tablolar altta, görünümler üstte ================= */
.reveal .layers-demo { display: flex; flex-direction: column; gap: 0.5em; margin-top: 0.5em; }
.reveal .layer-views { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.4em; }
.reveal .lv-card { padding: 0.4em 0.5em; border: 1.5px dashed var(--lv, var(--lecture-border)); border-radius: 0.25em; background: #fff; font-size: 0.56em; text-align: left; opacity: 0.18; transform: translateY(0.5em); transition: opacity 0.45s ease, transform 0.45s ease, box-shadow 0.45s ease; }
.reveal .lv-card b { display: block; color: var(--lv, var(--lecture-accent)); font-weight: 500; font-size: 0.9em; letter-spacing: 0.02em; }
.reveal .lv-card code { display: block; margin: 0.15em 0 0.3em; background: transparent; font-size: 1.02em; line-height: 1.3; word-break: break-word; }
.reveal .lv-card .src { display: flex; flex-wrap: wrap; gap: 0.2em; }
.reveal .lv-card .src i { padding: 0.05em 0.35em; border-radius: 0.15em; background: #eef3f5; font-style: normal; font-family: monospace; font-size: 0.9em; color: #3d5560; }
.reveal .lv-card.l-simple { --lv: var(--track-a); }
.reveal .lv-card.l-agg { --lv: var(--track-b); }
.reveal .lv-card.l-part { --lv: var(--track-c); }
.reveal .lv-card.l-sec { --lv: var(--lecture-danger); }
.reveal .lv-card.l-soft { --lv: var(--lecture-ok); }
.reveal .layers-demo[data-step="1"] .l-simple, .reveal .layers-demo[data-step="2"] .l-simple, .reveal .layers-demo[data-step="3"] .l-simple, .reveal .layers-demo[data-step="4"] .l-simple, .reveal .layers-demo[data-step="5"] .l-simple { opacity: 1; transform: none; border-style: solid; }
.reveal .layers-demo[data-step="2"] .l-agg, .reveal .layers-demo[data-step="3"] .l-agg, .reveal .layers-demo[data-step="4"] .l-agg, .reveal .layers-demo[data-step="5"] .l-agg { opacity: 1; transform: none; border-style: solid; }
.reveal .layers-demo[data-step="3"] .l-part, .reveal .layers-demo[data-step="4"] .l-part, .reveal .layers-demo[data-step="5"] .l-part { opacity: 1; transform: none; border-style: solid; }
.reveal .layers-demo[data-step="4"] .l-sec, .reveal .layers-demo[data-step="5"] .l-sec { opacity: 1; transform: none; border-style: solid; }
.reveal .layers-demo[data-step="5"] .l-soft { opacity: 1; transform: none; border-style: solid; }
.reveal .layer-temp { display: flex; align-items: center; gap: 0.5em; padding: 0.3em 0.55em; border: 1px dashed var(--lecture-border); border-radius: 0.25em; background: var(--lecture-surface); font-size: 0.56em; color: var(--lecture-muted); }
.reveal .layer-temp b { color: var(--lecture-accent); font-weight: 400; font-family: monospace; }
.reveal .layer-tables { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4em; padding-top: 0.45em; border-top: 2px solid var(--lecture-ink, #2d3b40); }
.reveal .lt-card { padding: 0.45em 0.6em; border: 1.8px solid #4a6670; border-radius: 0.25em; background: #eef3f5; font-size: 0.6em; text-align: left; }
.reveal .lt-card b { font-family: monospace; font-weight: 500; }
.reveal .lt-card small { display: block; color: var(--lecture-muted); font-size: 0.82em; }
.reveal .layers-demo .anim-status { margin-top: 0.1em; }

@media (prefers-reduced-motion: reduce) {
  .reveal .anim *, .reveal .badge { transition: none !important; animation: none !important; }
}

@media print {
  .reveal .anim-step { display: none !important; }
  .reveal .badge { opacity: 1 !important; transform: none !important; }
}

/* anahtar kelime tablosu: dokuz satır sığsın */
.reveal .slides section .keyword-table table { font-size: 0.56em; }
.reveal .slides section .keyword-table th, .reveal .slides section .keyword-table td { padding: 0.18em 0.5em; }

.reveal .answer-panel table { font-size: 0.62em; }
.reveal .answer-panel p { margin: 0.25em 0; }
.reveal .slides section .cte-demo pre { padding: 4px 9px; }

.reveal .group-stage { transition: height 0.6s ease; }
.reveal .group-demo[data-step="3"] .group-stage { height: calc(var(--rh) * 3.3); }

/* katman haritası: beş görünüm kartı 3 + 2 dizilir, adlar kırılmaz */
.reveal .layer-views { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.reveal .lv-card { grid-column: span 2; font-size: 0.6em; }
.reveal .lv-card.l-sec { grid-column: 2 / span 2; }
.reveal .lv-card.l-soft { grid-column: 4 / span 2; }
.reveal .lv-card code { word-break: normal; overflow-wrap: anywhere; }
.reveal .layers-demo { gap: 0.3em; margin-top: 0.2em; }
.reveal .layer-views { gap: 0.3em; }
.reveal .lv-card { font-size: 0.54em; padding: 0.3em 0.5em; }
.reveal .lv-card code { margin: 0.05em 0 0.15em; }
.reveal .layer-temp { font-size: 0.5em; padding: 0.2em 0.5em; }
.reveal .layer-tables { padding-top: 0.3em; }
.reveal .lt-card { font-size: 0.54em; padding: 0.3em 0.55em; }

/* V2: kitabevi örneği */
.reveal .nest-demo { grid-template-columns: 1.5fr 0.5fr; }
.reveal .nest-chip { font-size: 0.54em; }
.reveal .slides section .wide-table table { font-size: 0.56em; }
.reveal .slides section .wide-table td, .reveal .slides section .wide-table th { white-space: nowrap; }

/* ================= giriş: senaryo, tek tablo, tablo kurulumu ================= */
.reveal { --t-cust: var(--track-b); --t-book: var(--track-c); --t-ord: var(--track-a); }

/* senaryo */
.reveal .story-demo { margin-top: 0.5em; }
.reveal .st-row { display: grid; grid-template-columns: minmax(0, 1fr) 4.2em minmax(0, 1fr) 4.2em minmax(0, 1fr); align-items: center; font-size: 0.72em; min-height: 9.2em; }
.reveal .st-card { display: flex; flex-direction: column; gap: 0.15em; padding: 0.55em 0.7em 0.65em; border: 1px solid var(--lecture-border); border-top: 0.26em solid var(--c); border-radius: 0.22em; background: var(--lecture-surface); opacity: 0; transform: translateY(0.5em); transition: opacity 0.5s ease, transform 0.55s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .st-card small { color: var(--c); font-weight: 500; font-size: 0.7em; letter-spacing: 0.08em; }
.reveal .st-card b { font-size: 1.25em; font-weight: 400; line-height: 1.15; }
.reveal .st-card span { font-size: 0.82em; color: var(--lecture-muted); }
.reveal .st-card .st-mono { font-family: monospace; font-size: 0.7em; color: #3e565d; }
.reveal .st-card .st-flag { align-self: flex-start; margin-top: 0.15em; padding: 0.05em 0.5em; border-radius: 0.8em; background: var(--lecture-ok-soft); color: var(--lecture-ok); font-size: 0.72em; }
.reveal .st-cust { --c: var(--t-cust); }
.reveal .st-ord { --c: var(--t-ord); }
.reveal .st-book { --c: var(--t-book); }
.reveal .story-demo .st-cust, .reveal .story-demo[data-step="1"] .st-book, .reveal .story-demo[data-step="2"] .st-book, .reveal .story-demo[data-step="3"] .st-book,
.reveal .story-demo[data-step="2"] .st-ord, .reveal .story-demo[data-step="3"] .st-ord { opacity: 1; transform: none; }
.reveal .st-link { position: relative; height: 3.2em; opacity: 0; transition: opacity 0.5s ease 0.15s; }
.reveal .st-link i { position: absolute; left: 0; right: 0; top: 0.2em; text-align: center; font-size: 0.72em; color: var(--lecture-muted); }
.reveal .st-link em { position: absolute; left: 0.2em; right: 0.4em; top: 50%; height: 0.14em; background: #8aa9b1; transform-origin: left; transform: scaleX(0.2); transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.2s; }
.reveal .st-link em::after { content: ""; position: absolute; right: -0.05em; top: 50%; width: 0.5em; height: 0.5em; border-top: 0.14em solid #8aa9b1; border-right: 0.14em solid #8aa9b1; transform: translateY(-50%) rotate(45deg); }
.reveal .story-demo[data-step="2"] .st-link, .reveal .story-demo[data-step="3"] .st-link { opacity: 1; }
.reveal .story-demo[data-step="2"] .st-link em, .reveal .story-demo[data-step="3"] .st-link em { transform: none; }
.reveal .st-qhead { margin: 0.7em 0 0.25em; font-size: 0.66em; color: var(--lecture-muted); opacity: 0; transition: opacity 0.4s ease; }
.reveal .st-q { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.45em; font-size: 0.68em; }
.reveal .st-qc { padding: 0.45em 0.6em 0.55em; border: 1px solid var(--lecture-border); border-top: 0.22em solid var(--p); border-radius: 0.2em; background: var(--lecture-surface); line-height: 1.25; opacity: 0; transform: translateY(0.4em); transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .st-qc small { display: block; margin-bottom: 0.15em; color: var(--p); font-weight: 500; font-size: 0.82em; letter-spacing: 0.04em; }
.reveal .st-qc.q-simple { --p: var(--track-a); transition-delay: 0s; }
.reveal .st-qc.q-agg { --p: var(--track-b); transition-delay: 0.1s; }
.reveal .st-qc.q-part { --p: var(--track-c); transition-delay: 0.2s; }
.reveal .st-qc.q-sec { --p: var(--lecture-danger); transition-delay: 0.3s; }
.reveal .story-demo[data-step="3"] .st-qhead, .reveal .story-demo[data-step="3"] .st-qc { opacity: 1; transform: none; }

/* tek tablo */
.reveal .flat-demo .dtable { font-size: 0.6em; margin-top: 0.2em; }
.reveal .flat-demo .dtable th, .reveal .flat-demo .dtable td { text-overflow: clip; }
.reveal .flat-demo[data-step="1"] .cu, .reveal .flat-demo[data-step="2"] .cu, .reveal .flat-demo[data-step="3"] .cu, .reveal .flat-demo[data-step="4"] .cu { background: rgb(142 59 142 / 0.08); }
.reveal .flat-demo[data-step="1"] .cu.rep, .reveal .flat-demo[data-step="2"] .cu.rep, .reveal .flat-demo[data-step="3"] .cu.rep, .reveal .flat-demo[data-step="4"] .cu.rep { background: var(--track-b-soft); color: #5f2a5f; font-weight: 400; }
.reveal .flat-demo[data-step="2"] .bk, .reveal .flat-demo[data-step="3"] .bk, .reveal .flat-demo[data-step="4"] .bk { background: rgb(185 119 14 / 0.08); }
.reveal .flat-demo[data-step="2"] .bk.rep, .reveal .flat-demo[data-step="3"] .bk.rep, .reveal .flat-demo[data-step="4"] .bk.rep { background: var(--track-c-soft); color: #7a4f08; font-weight: 400; }
.reveal .fl-problems { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.5em; margin: 0.8em 0 0.4em; font-size: 0.72em; opacity: 0; transform: translateY(0.4em); transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .fl-problems > div { padding: 0.4em 0.6em 0.5em; border: 1px solid #e3b7bd; border-left: 0.22em solid var(--lecture-danger); border-radius: 0.2em; background: #fdf4f5; line-height: 1.28; }
.reveal .fl-problems b { display: block; color: var(--lecture-danger); font-weight: 500; margin-bottom: 0.1em; }
.reveal .flat-demo[data-step="3"] .fl-problems, .reveal .flat-demo[data-step="4"] .fl-problems { opacity: 1; transform: none; }
.reveal .fl-fix { display: flex; align-items: center; gap: 0.5em; margin: 0.5em 0 0.1em; font-size: 0.76em; opacity: 0; transform: translateY(0.4em); transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .fl-fix .fx-lead { margin-right: 0.4em; color: var(--lecture-ok); font-weight: 500; }
.reveal .fl-fix .fx-t { display: inline-flex; flex-direction: column; align-items: center; padding: 0.25em 0.8em; border: 1.5px solid var(--c); border-radius: 0.2em; background: #fff; font-family: monospace; color: var(--c); line-height: 1.2; }
.reveal .fl-fix .fx-t small { font-family: inherit; font-size: 0.62em; color: var(--lecture-muted); }
.reveal .fl-fix .t-cust { --c: var(--t-cust); }
.reveal .fl-fix .t-book { --c: #a4690a; }
.reveal .fl-fix .t-ord { --c: var(--t-ord); }
.reveal .fl-fix .fx-plus { color: var(--lecture-muted); }
.reveal .flat-demo[data-step="4"] .fl-fix { opacity: 1; transform: none; }
.reveal .flat-demo[data-step="4"] .fl-problems { opacity: 0.55; }

/* tablo kurulumu: kod satırı yanar, karttaki sütun belirir */
.reveal .build-demo { --tc: var(--t-cust); }
.reveal .build-demo.bd-book { --tc: var(--t-book); }
.reveal .build-demo.bd-ord { --tc: var(--t-ord); }
.reveal .bd-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 0.9em; align-items: start; }
.reveal .slides section pre.bd-code { margin: 0; padding: 0.55em 0.4em; border: 1px solid #a8afb3; border-radius: 4px; background: #fff; font-size: 0.52em; line-height: 1.4; white-space: pre; overflow: hidden; box-shadow: none; width: 100%; box-sizing: border-box; }
.reveal .bd-code .bl { display: block; padding: 0 0.6em; opacity: 0.3; transition: opacity 0.4s ease, background-color 0.4s ease, box-shadow 0.4s ease; }
.reveal .bd-code .bl.s0 { opacity: 1; }
.reveal .bd-code .kw { font-style: normal; font-weight: 600; color: #107895; }
.reveal .bd-code .ty { font-style: normal; color: #8e3b8e; }
.reveal .bd-card { border: 1.5px solid var(--tc); border-radius: 0.25em; background: #fff; overflow: hidden; font-size: 0.66em; }
.reveal .bd-cap { padding: 0.3em 0.7em; background: color-mix(in srgb, var(--tc) 14%, #fff); color: var(--tc); font-family: monospace; font-weight: 500; }
.reveal .bd-row { display: grid; grid-template-columns: var(--lab, 6.4em) minmax(0, 1fr) auto; align-items: baseline; column-gap: 0.5em; padding: 0.13em 0.7em; border-top: 1px solid var(--lecture-border); opacity: 0; transform: translateX(0.5em); transition: opacity 0.4s ease, transform 0.45s cubic-bezier(0.22, 1, 0.36, 1), background-color 0.4s ease; }
.reveal .bd-row b { font-family: monospace; font-weight: 400; color: #3e565d; font-size: 0.9em; }
.reveal .bd-row span { overflow-wrap: anywhere; }
.reveal .bd-row u { text-decoration: none; padding: 0 0.45em; border-radius: 0.8em; background: color-mix(in srgb, var(--tc) 16%, #fff); color: var(--tc); font-size: 0.68em; font-weight: 500; letter-spacing: 0.03em; }
.reveal .bd-row u.none { display: none; }
.reveal .bd-row em { grid-column: 2 / -1; font-style: normal; font-size: 0.82em; color: var(--lecture-muted); }
.reveal .bd-row em.now { color: #8a5a00; }
.reveal .bd-row em.ptr { opacity: 0; transition: opacity 0.5s ease 0.15s; font-weight: 500; }
.reveal .bd-row em.p-cust { color: var(--t-cust); }
.reveal .bd-row em.p-book { color: #8a5a00; }
.reveal .bd-ord .bd-row.s2 { }
.reveal .bd-table { margin: 0.45em 0 0; opacity: 0; transform: translateY(0.4em); font-size: 0.62em; transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .bd-table tr.me td { background: color-mix(in srgb, var(--tc) 14%, #fff); }
.reveal .bd-table tr.off td { color: var(--lecture-muted); }
.reveal .bd-table tr.more td { color: var(--lecture-muted); }
.reveal .bd-table th { color: var(--tc); }
.reveal .build-demo[data-step="0"] .bd-card { opacity: 0.55; }
.reveal .build-demo .anim-status { margin-top: 0.4em; font-size: 0.7em; line-height: 1.3; min-height: 2.6em; }
.reveal .build-demo .bd-table th, .reveal .build-demo .bd-table td { padding-top: 0.14em; padding-bottom: 0.14em; }
.reveal .build-demo.bd-cust { --lab: 4.6em; }
.reveal .build-demo.bd-book .bd-table { font-size: 0.56em; }
.reveal .build-demo.bd-book { --lab: 7.6em; }
.reveal .build-demo.bd-ord { --lab: 9.4em; }
.reveal .build-demo[data-step="1"] .bl.s1 { opacity: 1; }
.reveal .build-demo[data-step="1"] .bd-row.s1 { opacity: 1; transform: none; }
.reveal .build-demo[data-step="1"] .bl.s1 { background: color-mix(in srgb, var(--tc) 13%, #fff); box-shadow: inset 0.22em 0 0 var(--tc); }
.reveal .build-demo[data-step="1"] .bd-row.s1 { background: color-mix(in srgb, var(--tc) 9%, #fff); }
.reveal .build-demo[data-step="2"] .bl.s1, .reveal .build-demo[data-step="2"] .bl.s2 { opacity: 1; }
.reveal .build-demo[data-step="2"] .bd-row.s1, .reveal .build-demo[data-step="2"] .bd-row.s2 { opacity: 1; transform: none; }
.reveal .build-demo[data-step="2"] .bl.s2 { background: color-mix(in srgb, var(--tc) 13%, #fff); box-shadow: inset 0.22em 0 0 var(--tc); }
.reveal .build-demo[data-step="2"] .bd-row.s2 { background: color-mix(in srgb, var(--tc) 9%, #fff); }
.reveal .build-demo[data-step="3"] .bl.s1, .reveal .build-demo[data-step="3"] .bl.s2, .reveal .build-demo[data-step="3"] .bl.s3 { opacity: 1; }
.reveal .build-demo[data-step="3"] .bd-row.s1, .reveal .build-demo[data-step="3"] .bd-row.s2, .reveal .build-demo[data-step="3"] .bd-row.s3 { opacity: 1; transform: none; }
.reveal .build-demo[data-step="3"] .bl.s3 { background: color-mix(in srgb, var(--tc) 13%, #fff); box-shadow: inset 0.22em 0 0 var(--tc); }
.reveal .build-demo[data-step="3"] .bd-row.s3 { background: color-mix(in srgb, var(--tc) 9%, #fff); }
.reveal .build-demo[data-step="4"] .bl.s1, .reveal .build-demo[data-step="4"] .bl.s2, .reveal .build-demo[data-step="4"] .bl.s3, .reveal .build-demo[data-step="4"] .bl.s4 { opacity: 1; }
.reveal .build-demo[data-step="4"] .bd-row.s1, .reveal .build-demo[data-step="4"] .bd-row.s2, .reveal .build-demo[data-step="4"] .bd-row.s3, .reveal .build-demo[data-step="4"] .bd-row.s4 { opacity: 1; transform: none; }
.reveal .build-demo[data-step="4"] .bl.s4 { background: color-mix(in srgb, var(--tc) 13%, #fff); box-shadow: inset 0.22em 0 0 var(--tc); }
.reveal .build-demo[data-step="4"] .bd-row.s4 { background: color-mix(in srgb, var(--tc) 9%, #fff); }
.reveal .build-demo[data-step="5"] .bl.s1, .reveal .build-demo[data-step="5"] .bl.s2, .reveal .build-demo[data-step="5"] .bl.s3, .reveal .build-demo[data-step="5"] .bl.s4, .reveal .build-demo[data-step="5"] .bl.s5 { opacity: 1; }
.reveal .build-demo[data-step="5"] .bd-row.s1, .reveal .build-demo[data-step="5"] .bd-row.s2, .reveal .build-demo[data-step="5"] .bd-row.s3, .reveal .build-demo[data-step="5"] .bd-row.s4, .reveal .build-demo[data-step="5"] .bd-row.s5 { opacity: 1; transform: none; }
.reveal .build-demo[data-step="5"] .bl.s5 { background: color-mix(in srgb, var(--tc) 13%, #fff); box-shadow: inset 0.22em 0 0 var(--tc); }
.reveal .build-demo[data-step="5"] .bd-row.s5 { background: color-mix(in srgb, var(--tc) 9%, #fff); }
.reveal .build-demo[data-step="6"] .bl.s1, .reveal .build-demo[data-step="6"] .bl.s2, .reveal .build-demo[data-step="6"] .bl.s3, .reveal .build-demo[data-step="6"] .bl.s4, .reveal .build-demo[data-step="6"] .bl.s5, .reveal .build-demo[data-step="6"] .bl.s6 { opacity: 1; }
.reveal .build-demo[data-step="6"] .bd-row.s1, .reveal .build-demo[data-step="6"] .bd-row.s2, .reveal .build-demo[data-step="6"] .bd-row.s3, .reveal .build-demo[data-step="6"] .bd-row.s4, .reveal .build-demo[data-step="6"] .bd-row.s5, .reveal .build-demo[data-step="6"] .bd-row.s6 { opacity: 1; transform: none; }
.reveal .build-demo[data-step="6"] .bl.s6 { background: color-mix(in srgb, var(--tc) 13%, #fff); box-shadow: inset 0.22em 0 0 var(--tc); }
.reveal .build-demo[data-step="6"] .bd-row.s6 { background: color-mix(in srgb, var(--tc) 9%, #fff); }
.reveal .build-demo.bd-cust[data-step="5"] .bd-table, .reveal .build-demo.bd-book[data-step="6"] .bd-table { opacity: 1; transform: none; }
.reveal .build-demo.bd-ord[data-step="5"] .bd-row em.ptr { opacity: 1; }
.reveal .build-demo.bd-ord[data-step="5"] .bd-row.s2 { background: rgb(142 59 142 / 0.07); }

/* ================= 6 tablolu şema: yeni tablolar, ER haritası, yazar birleştirme ================= */
.reveal { --t-cat: #2e7d32; --t-auth: #3a5fa8; --t-ba: #596f78; }
.reveal .build-demo.bd-cat { --tc: var(--t-cat); --lab: 4.2em; }
.reveal .build-demo.bd-auth { --tc: var(--t-auth); --lab: 5.4em; }
.reveal .build-demo.bd-ba { --tc: var(--t-ba); --lab: 7.4em; }
.reveal .build-demo.bd-ba .bd-table { font-size: 0.56em; }
.reveal .build-demo.bd-cat .bd-table { width: 52%; }
.reveal .build-demo.bd-auth .bd-table { width: 72%; }
.reveal .bd-row em.p-cat { color: var(--t-cat); }
.reveal .bd-row em.p-auth { color: var(--t-auth); }
.reveal .bd-table .aux, .reveal .bd-table th.aux { color: var(--lecture-muted); font-style: italic; }
.reveal .bd-table tr.ga td { background: var(--track-a-soft); }
.reveal .bd-table tr.gb td { background: var(--track-c-soft); }
.reveal .build-demo.bd-cat[data-step="3"] .bd-table, .reveal .build-demo.bd-auth[data-step="4"] .bd-table, .reveal .build-demo.bd-ba[data-step="5"] .bd-table { opacity: 1; transform: none; }
.reveal .build-demo.bd-book[data-step="3"] .bd-row em.ptr, .reveal .build-demo.bd-book[data-step="4"] .bd-row em.ptr, .reveal .build-demo.bd-book[data-step="5"] .bd-row em.ptr, .reveal .build-demo.bd-book[data-step="6"] .bd-row em.ptr,
.reveal .build-demo.bd-ba[data-step="4"] .bd-row em.ptr, .reveal .build-demo.bd-ba[data-step="5"] .bd-row em.ptr { opacity: 1; }
.reveal .build-demo.bd-ba[data-step="4"] .bd-row.s1, .reveal .build-demo.bd-ba[data-step="4"] .bd-row.s2, .reveal .build-demo.bd-ba[data-step="5"] .bd-row.s1, .reveal .build-demo.bd-ba[data-step="5"] .bd-row.s2 { background: rgb(89 111 120 / 0.07); }
.reveal .build-demo.bd-book[data-step="3"] .bd-row.s3 { background: rgb(46 125 50 / 0.09); }
.reveal .build-demo.bd-book[data-step="3"] .bl.s3 { background: rgb(46 125 50 / 0.12); box-shadow: inset 0.22em 0 0 var(--t-cat); }
.reveal .build-demo.bd-ba[data-step="4"] .bl.s4 { background: color-mix(in srgb, var(--tc) 13%, #fff); box-shadow: inset 0.22em 0 0 var(--tc); }

/* katman haritası: altı tablo tek sırada */
.reveal .layer-tables { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.reveal .lt-card { padding: 0.3em 0.4em; }
.reveal .lt-card b { font-size: 0.92em; }

/* tek tablo çözümü: beş çip */
.reveal .fl-fix { flex-wrap: wrap; row-gap: 0.25em; }
.reveal .fl-fix .fx-lead { flex-basis: 100%; margin: 0; }
.reveal .fl-fix .t-auth { --c: var(--t-auth); }
.reveal .fl-fix .t-cat { --c: var(--t-cat); }

/* ER haritası: tablo renkleri build slaytlarıyla aynı */
.reveal .er-demo svg { max-height: 424px; }
.reveal .er-box, .reveal .er-box.is-bridge { fill: #fff; stroke: var(--c, #7ca7b2); stroke-width: 2.2; transition: stroke 0.5s ease, stroke-dasharray 0.5s ease, stroke-width 0.5s ease; }
.reveal .er-head { fill: color-mix(in srgb, var(--c, #7ca7b2) 15%, #fff); }
.reveal .er-demo .er-name { font-size: 27px; fill: var(--c, #233b43); }
.reveal .er-demo .er-tag { fill: #107895; }
.reveal .er-demo .er-tag.fk { fill: #8e3b8e; }
.reveal .er-demo .er-verb { fill: #566b72; }
.reveal .er-demo .er-cap { fill: #6a7d83; }
.reveal .er-demo .er-m2m-text { fill: #8a5a00; }
.reveal .er-field { font-size: 21px; }
.reveal .er-demo .t-cust { --c: var(--t-cust); }
.reveal .er-demo .t-ord { --c: var(--t-ord); }
.reveal .er-demo .t-book { --c: var(--t-book); }
.reveal .er-demo .t-cat { --c: var(--t-cat); }
.reveal .er-demo .t-auth { --c: var(--t-auth); }
.reveal .er-demo .t-ba { --c: var(--t-ba); }
.reveal .er-demo[data-step="5"] .er-box.is-bridge { stroke: #b9770e; stroke-width: 3; stroke-dasharray: 10 6; }
.reveal .er-demo .er-m2m-text { font-size: 22px; }
.reveal .er-demo .er-sub { font-size: 19px; font-weight: 400; fill: #6a7d83; }
.reveal .er-demo .g { opacity: 0; transform: translateY(0.4em); }
.reveal .er-demo .g.g0 { opacity: 1; transform: none; }
.reveal .er-demo[data-step="1"] .g1, .reveal .er-demo[data-step="2"] .g1, .reveal .er-demo[data-step="3"] .g1, .reveal .er-demo[data-step="4"] .g1, .reveal .er-demo[data-step="5"] .g1,
.reveal .er-demo[data-step="2"] .g2, .reveal .er-demo[data-step="3"] .g2, .reveal .er-demo[data-step="4"] .g2, .reveal .er-demo[data-step="5"] .g2,
.reveal .er-demo[data-step="3"] .g3, .reveal .er-demo[data-step="4"] .g3, .reveal .er-demo[data-step="5"] .g3,
.reveal .er-demo[data-step="4"] .g4, .reveal .er-demo[data-step="5"] .g4,
.reveal .er-demo[data-step="5"] .g5 { opacity: 1; transform: none; }

/* GROUP_CONCAT: üç tablo -> JOIN satırları -> tek satır */
.reveal .cc-demo { font-size: 0.66em; }
.reveal .cc-demo .dtable { font-size: 1em; }
.reveal .cc-demo .dtable caption { font-size: 0.9em; padding-bottom: 0.15em; }
.reveal .slides section .cat-table table { font-size: 0.64em; }
.reveal .slides section .cat-table td, .reveal .slides section .cat-table th { white-space: nowrap; }
.reveal .cc-demo .dtable td, .reveal .cc-demo .dtable th { padding-top: 0.12em; padding-bottom: 0.12em; }
.reveal .cc-demo .dtable td.num, .reveal .cc-demo .dtable th.num { width: 2.4em; }
.reveal .cc-top { display: grid; }
.reveal .cc-top > * { grid-area: 1 / 1; align-self: start; }
.reveal .cc-src { display: grid; grid-template-columns: 1.45fr 0.8fr 1fr; gap: 1.4em; transition: opacity 0.5s ease; }
.reveal .cc-src .dtable { align-self: start; }
.reveal .cc-src .t-book caption { color: var(--t-book); }
.reveal .cc-src .t-ba caption { color: var(--t-ba); }
.reveal .cc-src .t-auth caption { color: var(--t-auth); }
.reveal .cc-src tr { transition: background-color 0.45s ease; }
.reveal .cc-demo[data-step="1"] .cc-src tr.g-a { background: var(--track-a-soft); }
.reveal .cc-demo[data-step="1"] .cc-src tr.g-b { background: var(--track-c-soft); }
.reveal .cc-demo:not([data-step="0"]):not([data-step="1"]) .cc-src { opacity: 0; }
.reveal .cc-raw { opacity: 0; transition: opacity 0.5s ease; }
.reveal .cc-raw tr.g-a { background: var(--track-a-soft); }
.reveal .cc-raw tr.g-b { background: var(--track-c-soft); }
.reveal .cc-demo[data-step="2"] .cc-raw, .reveal .cc-demo[data-step="3"] .cc-raw { opacity: 1; }
.reveal .cc-demo[data-step="4"] .cc-raw { opacity: 0.45; }
.reveal .cc-mid { display: flex; align-items: center; justify-content: center; gap: 0.8em; height: 2.2em; opacity: 0; transform: translateY(-0.3em); transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); font-size: 0.86em; }
.reveal .cc-mid i { font-style: normal; color: var(--lecture-accent); font-size: 1.4em; }
.reveal .cc-mid code { background: var(--lecture-accent-soft); color: #134c5c; padding: 0.1em 0.5em; border-radius: 0.2em; font-size: 0.95em; }
.reveal .cc-demo[data-step="3"] .cc-mid, .reveal .cc-demo[data-step="4"] .cc-mid { opacity: 1; transform: none; }
.reveal .cc-out { opacity: 0; transform: translateY(0.4em); transition: opacity 0.5s ease, transform 0.55s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .cc-out tr.g-a td { background: var(--track-a-soft); }
.reveal .cc-out tr.g-b td { background: var(--track-c-soft); }
.reveal .cc-demo[data-step="4"] .cc-out { opacity: 1; transform: none; }
.reveal .cc-demo .anim-status { font-size: 1.04em; margin-top: 0.5em; }

/* ================= inceleme: eksik görsel açıklamalar ================= */
/* JOIN / LEFT JOIN */
.reveal .lj-demo { font-size: 0.86em; }
.reveal .lj-mode { display: flex; gap: 0.5em; margin: 0.3em 0 0.6em; }
.reveal .lj-mode span { padding: 0.12em 0.9em; border: 1px solid var(--lecture-border); border-radius: 1em; background: #fff; color: var(--lecture-muted); transition: background-color 0.4s ease, color 0.4s ease, border-color 0.4s ease; }
.reveal .lj-demo[data-step="0"] .m0, .reveal .lj-demo[data-step="1"] .m1, .reveal .lj-demo[data-step="2"] .m2, .reveal .lj-demo[data-step="3"] .m3 { background: var(--lecture-accent-soft); color: #0c5a70; border-color: var(--lecture-accent); font-weight: 500; }
.reveal .lj-table { font-size: 1.12em; }
.reveal .lj-table td, .reveal .lj-table th { padding-top: 0.28em; padding-bottom: 0.28em; }
.reveal .lj-table .c1, .reveal .lj-table .c2 { opacity: 0; }
.reveal .lj-demo[data-step="3"] .lj-table .c1, .reveal .lj-demo[data-step="3"] .lj-table .c2 { opacity: 1; }
.reveal .lj-table .mu { display: none; font-style: italic; }
.reveal .lj-demo[data-step="2"] .mn, .reveal .lj-demo[data-step="3"] .mn { display: none; }
.reveal .lj-demo[data-step="2"] .mu, .reveal .lj-demo[data-step="3"] .mu { display: inline; }
.reveal .lj-demo[data-step="1"] .lj-table tr.none td { opacity: 0.2; text-decoration: line-through; }
.reveal .lj-demo[data-step="2"] .lj-table tr.none td, .reveal .lj-demo[data-step="3"] .lj-table tr.none td { background: var(--lecture-ok-soft); }
.reveal .lj-demo[data-step="3"] .lj-table td.bad { color: var(--lecture-danger); font-weight: 500; }
.reveal .lj-demo .anim-status { margin-top: 0.6em; font-size: 1.02em; }

/* ağırlıklı ortalama */
.reveal .wa-demo { font-size: 0.8em; }
.reveal .wa-table td, .reveal .wa-table th { padding-top: 0.2em; padding-bottom: 0.2em; }
.reveal .wa-table td.bar { width: 14em; }
.reveal .wa-table td.bar span { display: block; height: 0.8em; background: var(--track-a); border-radius: 0.2em; opacity: 0.75; }
.reveal .wa-table td.bar .w100 { width: 100%; } .reveal .wa-table td.bar .w33 { width: 33%; } .reveal .wa-table td.bar .w29 { width: 29%; } .reveal .wa-table td.bar .w14 { width: 14%; }
.reveal .wa-table .wc { opacity: 0; transition: opacity 0.4s ease; }
.reveal .wa-demo[data-step="1"] .wa-table .wc, .reveal .wa-demo[data-step="2"] .wa-table .wc, .reveal .wa-demo[data-step="3"] .wa-table .wc { opacity: 1; }
.reveal .wa-table .w-un { display: none; }
.reveal .wa-demo[data-step="2"] .w-eq, .reveal .wa-demo[data-step="3"] .w-eq { display: none; }
.reveal .wa-demo[data-step="2"] .w-un, .reveal .wa-demo[data-step="3"] .w-un { display: inline; color: var(--lecture-ok); font-weight: 500; }
.reveal .wa-res { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6em; margin-top: 0.7em; }
.reveal .wa-res > div { padding: 0.4em 0.7em 0.5em; border-radius: 0.2em; opacity: 0; transform: translateY(0.4em); transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .wa-res b { display: block; font-weight: 500; margin-bottom: 0.15em; }
.reveal .wa-res code { background: transparent; font-size: 0.92em; }
.reveal .wa-bad { border: 1px solid #e3b7bd; border-left: 0.22em solid var(--lecture-danger); background: #fdf4f5; }
.reveal .wa-bad b { color: var(--lecture-danger); }
.reveal .wa-ok { border: 1px solid #b9d9bb; border-left: 0.22em solid var(--lecture-ok); background: #f3faf3; }
.reveal .wa-ok b { color: var(--lecture-ok); }
.reveal .wa-demo[data-step="1"] .wa-bad, .reveal .wa-demo[data-step="2"] .wa-bad, .reveal .wa-demo[data-step="3"] .wa-bad { opacity: 1; transform: none; }
.reveal .wa-demo[data-step="2"] .wa-ok, .reveal .wa-demo[data-step="3"] .wa-ok { opacity: 1; transform: none; }
.reveal .wa-demo[data-step="2"] .wa-bad { opacity: 0.55; }
.reveal .wa-gap { margin-top: 0.5em; color: var(--lecture-danger); font-weight: 500; opacity: 0; transition: opacity 0.4s ease; }
.reveal .wa-demo[data-step="3"] .wa-gap { opacity: 1; }
.reveal .wa-demo .anim-status { margin-top: 0.5em; font-size: 1.04em; }

/* sızıntı zinciri */
.reveal .lk-demo { font-size: 0.64em; }
.reveal .lk-row { display: grid; grid-template-columns: auto 3.4em auto 5.6em auto; align-items: center; justify-content: space-between; margin-top: 0.4em; }
.reveal .lk-box { border: 1px solid var(--lecture-border); border-radius: 0.25em; background: var(--lecture-surface); padding: 0.3em 0.5em 0.4em; transition: opacity 0.5s ease, transform 0.55s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .lk-box .dtable { font-size: 1em; }
.reveal .lk-box .dtable td, .reveal .lk-box .dtable th { padding: 0.25em 0.5em; }
.reveal .lk-b, .reveal .lk-c, .reveal .lk-arrow { opacity: 0; transform: translateX(-0.5em); transition: opacity 0.5s ease, transform 0.55s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .lk-arrow { display: flex; flex-direction: column; align-items: center; color: var(--lecture-muted); font-size: 0.82em; }
.reveal .lk-arrow i { font-style: normal; font-size: 1.8em; line-height: 1; color: var(--lecture-accent); }
.reveal .lk-demo[data-step="1"] .lk-b, .reveal .lk-demo[data-step="1"] .lk-a1, .reveal .lk-demo[data-step="2"] .lk-b, .reveal .lk-demo[data-step="2"] .lk-a1, .reveal .lk-demo[data-step="3"] .lk-b, .reveal .lk-demo[data-step="3"] .lk-a1,
.reveal .lk-demo[data-step="2"] .lk-c, .reveal .lk-demo[data-step="2"] .lk-a2, .reveal .lk-demo[data-step="3"] .lk-c, .reveal .lk-demo[data-step="3"] .lk-a2 { opacity: 1; transform: none; }
.reveal .lk-demo[data-step="1"] .lk-a .hit td, .reveal .lk-demo[data-step="1"] .lk-b .hit td, .reveal .lk-demo[data-step="2"] .lk-a .hit td, .reveal .lk-demo[data-step="2"] .lk-b .hit td, .reveal .lk-demo[data-step="3"] .lk-a .hit td, .reveal .lk-demo[data-step="3"] .lk-b .hit td { background: var(--track-a-soft); }
.reveal .lk-demo[data-step="2"] .lk-c .hit td, .reveal .lk-demo[data-step="3"] .lk-c .hit td { background: var(--track-b-soft); }
.reveal .lk-demo[data-step="3"] .lk-c .leak { background: var(--lecture-danger-soft); color: var(--lecture-danger); font-weight: 500; }
.reveal .lk-demo .anim-status { margin-top: 0.8em; font-size: 1.04em; }

/* görünüme yazma: hangi tablo? */
.reveal .wr-demo { font-size: 0.7em; }
.reveal .wr-stmt { margin-bottom: 0.6em; opacity: 0; transition: opacity 0.4s ease; }
.reveal .wr-stmt code { display: block; padding: 0.4em 0.7em; background: #fff; border: 1px solid #a8afb3; border-radius: 4px; font-size: 0.82em; }
.reveal .wr-demo:not([data-step="0"]) .wr-stmt { opacity: 1; }
.reveal .wr-row { display: grid; grid-template-columns: 1.2fr 0.9fr 1.3fr 1.1fr; gap: 0.4em; }
.reveal .wr-cell { padding: 0.35em 0.6em 0.4em; border: 1px solid var(--lecture-border); border-top: 0.24em solid var(--c); border-radius: 0.2em; background: #fff; transition: box-shadow 0.4s ease, background-color 0.4s ease; }
.reveal .wr-cell small { display: block; color: var(--lecture-muted); font-size: 0.8em; }
.reveal .wr-cell b { display: block; font-weight: 400; }
.reveal .wr-cell i { display: block; font-style: normal; font-family: monospace; font-size: 0.74em; color: var(--c); }
.reveal .wr-cell.c-cu { --c: var(--t-cust); } .reveal .wr-cell.c-or { --c: var(--t-ord); } .reveal .wr-cell.c-bk { --c: var(--t-book); }
.reveal .wr-demo[data-step="1"] .wr-cell.target, .reveal .wr-demo[data-step="2"] .wr-cell.target, .reveal .wr-demo[data-step="3"] .wr-cell.target { background: var(--track-c-soft); box-shadow: 0 0 0 0.12em var(--t-book); }
.reveal .wr-cand { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6em; margin-top: 0.7em; }
.reveal .wr-opt { padding: 0.4em 0.7em 0.5em; border: 1.5px dashed var(--t-book); border-radius: 0.2em; background: #fffaf0; opacity: 0; transform: translateY(0.4em); transition: opacity 0.45s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); }
.reveal .wr-opt b { display: block; color: #8a5a00; font-weight: 500; }
.reveal .wr-demo[data-step="2"] .wr-opt, .reveal .wr-demo[data-step="3"] .wr-opt { opacity: 1; transform: none; }
.reveal .wr-demo[data-step="3"] .wr-opt { opacity: 0.45; }
.reveal .wr-err { margin-top: 0.6em; min-height: 1.8em; }
.reveal .wr-demo[data-step="3"] .wr-err .badge { opacity: 1; transform: none; }
.reveal .wr-demo .anim-status { margin-top: 0.4em; font-size: 1.04em; }

/* sorgu çalışma sırası */
.reveal .pipe { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35em 0.4em; margin-top: 0.6em; font-size: 0.6em; }
.reveal .pipe small { flex-basis: 100%; color: var(--lecture-muted); }
.reveal .pipe span { padding: 0.2em 0.55em; border: 1.5px solid var(--lecture-accent); border-radius: 0.25em; background: #fff; font-family: monospace; color: #134c5c; }
.reveal .pipe span b { margin-right: 0.45em; color: var(--lecture-accent); font-weight: 600; }
.reveal .pipe i { font-style: normal; color: var(--lecture-muted); }

.reveal .slides section .st-table td, .reveal .slides section .st-table th { padding-left: 1.2em; padding-right: 1.2em; }
.reveal .er-demo .er-m2m-card { stroke: #b9770e; }
