/* Bölüm 07: modül ve paket şemaları (paylaşım, ad alanı, kütüphane haritası, adımlar, __name__, paket ağacı, bağımlılık). */
.reveal .slides section.slide.level1:not(#title-slide) > h1 {
  font-size: 1.7em;
}

/* ---- ortak parçalar ---- */
.ip7-file,
.ip7-tag {
  display: inline-block;
  padding: 0.2em 0.55em;
  border: 1px solid #107895;
  border-radius: 0.25em;
  background: #eaf5f8;
  color: #164c61;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  white-space: nowrap;
}

.ip7-file small {
  display: block;
  color: #42566a;
  font-size: 0.78em;
}

.ip7-file.mod { border-color: #287d5b; background: #e1f2e8; color: #1b6448; }
.ip7-file.mod small { color: #1b6448; }
.ip7-tag.ok { border-color: #287d5b; background: #e1f2e8; color: #1b6448; }

/* ---- 1. kopyalamak ya da modül ---- */
.ip7-share {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.8em;
  width: min(100%, 38em);
  margin: 1em auto;
  font-size: 0.92em;
}

.ip7-share-col {
  padding: 0.7em 0.8em;
  border-top: 4px solid #d1492e;
  border-radius: 0.3em;
  background: #f4f7f9;
  text-align: center;
}

.ip7-share-col.iyi { border-top-color: #287d5b; }
.ip7-share-head { margin-bottom: 0.6em; font-weight: 700; color: #42566a; }

.ip7-share-files {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35em;
}

.ip7-share-row { display: flex; justify-content: center; gap: 0.5em; }
.ip7-share-arrow { color: #107895; font-weight: 700; }
.ip7-share-note { margin-top: 0.6em; font-size: 0.88em; color: #8f2f24; }
.ip7-share-col.iyi .ip7-share-note { color: #1b6448; }

/* ---- 3. standart kütüphane haritası ---- */
.ip7-lib {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.6em;
  width: min(100%, 46em);
  margin: 1em auto;
  font-size: 0.88em;
}

.ip7-lib > div {
  padding: 0.55em 0.6em;
  border-radius: 0.3em;
  background: #f4f7f9;
  border-top: 3px solid currentColor;
  line-height: 1.35;
}

.ip7-lib b { display: block; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.ip7-lib span { display: block; color: #42566a; font-size: 0.88em; }
.ip7-lib code { font-size: 0.82em; }
.ip7-lib .m { color: #107895; }
.ip7-lib .r { color: #7542b4; }
.ip7-lib .d { color: #b0701a; }
.ip7-lib .o { color: #287d5b; }

/* ---- 4. yatay adım dizisi (keşif, arama yolu, önbellek, kurulum) ---- */
.ip7-steps,
.reveal ol.ip7-steps {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;
  gap: 0.35em;
  width: min(100%, 50em);
  margin: 1em auto;
  padding: 0;
  list-style: none;
  font-size: 0.88em;
}

.ip7-steps li,
.reveal ol.ip7-steps li {
  position: relative;
  flex: 1 1 8em;
  max-width: 11.5em;
  margin: 0;
  padding: 0.55em 0.6em;
  border-top: 3px solid #107895;
  border-radius: 0.3em;
  background: #f4f7f9;
  line-height: 1.35;
  text-align: center;
}

.ip7-steps li + li::before {
  content: "→";
  position: absolute;
  left: -0.95em;
  top: 50%;
  transform: translateY(-50%);
  color: #107895;
  font-weight: 700;
}

.ip7-steps b { display: block; }
.ip7-steps span { display: block; color: #42566a; font-size: 0.88em; }
.ip7-steps code { font-size: 0.85em; }
.ip7-steps li.ok { border-top-color: #287d5b; background: #e1f2e8; }
.ip7-steps li.bad { border-top-color: #d1492e; background: #fbe9e6; }

/* ---- 5. __name__: aynı dosya iki yoldan (animasyonlu) ---- */
.ip7-run {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.8em;
  width: min(100%, 44em);
  margin: 1em auto;
  font-size: 0.9em;
}

.ip7-run-col {
  padding: 0.65em 0.8em;
  border-top: 4px solid #7542b4;
  border-radius: 0.3em;
  background: #f4f7f9;
  text-align: center;
}

.ip7-run-col.ice { border-top-color: #b0701a; }
.ip7-run .komut { display: block; margin-bottom: 0.35em; font-weight: 700; }

.ip7-run .kod {
  margin: 0.5em 0;
  padding: 0.3em;
  border: 1px solid #c9d6dd;
  border-radius: 0.3em;
  background: #fff;
  text-align: left;
}

.ip7-run .ln {
  display: flex;
  justify-content: space-between;
  gap: 0.5em;
  padding: 0.1em 0.4em;
  border-radius: 0.2em;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.82em;
  white-space: pre;
}

.ip7-run .ln b { font-family: inherit; }
.ip7-run .ln.ran { background: #e1f2e8; color: #1b6448; }
.ip7-run .ln.skip { background: #eceff1; color: #8a99a3; text-decoration: line-through; }
.ip7-run .cikti { padding: 0.4em; border-radius: 0.3em; background: #e1f2e8; color: #1b6448; }
.ip7-run .cikti.bos { background: #eceff1; color: #6b7c88; }
.ip7-run .cikti small { display: block; color: #42566a; font-size: 0.75em; }

@keyframes ip7-ln-ran { 0% { background: transparent; color: #7a8d99; } 15%, 55% { background: #fff1b8; color: #1f3a4a; } 100% { background: #e1f2e8; color: #1b6448; } }
@keyframes ip7-ln-skip { 0%, 40% { background: transparent; color: #7a8d99; text-decoration: none; } 100% { background: #eceff1; color: #8a99a3; text-decoration: line-through; } }

.reveal .slides section.present .ip7-run .ln.ran { animation: ip7-ln-ran 1.4s both; }
.reveal .slides section.present .ip7-run .ln.skip { animation: ip7-ln-skip 1.2s both; }
.reveal .slides section.present .ip7-run .ln.l1 { animation-delay: 0.4s; }
.reveal .slides section.present .ip7-run .ln.l2 { animation-delay: 1.4s; }
.reveal .slides section.present .ip7-run .ln.l3 { animation-delay: 2.4s; }
.reveal .slides section.present .ip7-run .ln.l4 { animation-delay: 3.8s; }
.reveal .slides section.present .ip7-run .ln.l5 { animation-delay: 4.8s; }
.reveal .slides section.present .ip7-run .cikti { animation: ip7-flow-pop 0.4s both; animation-delay: 6s; }

/* ---- 6. paket ağacı ve import yolu ---- */
.ip7-pkg {
  width: min(100%, 38em);
  margin: 1em auto;
  font-size: 0.9em;
}

.ip7-import {
  margin-top: 0.7em;
  text-align: center;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 1.05em;
}

.ip7-import span { padding: 0.1em 0.35em; border-bottom: 3px solid currentColor; }
.ip7-import .p { color: #7542b4; }
.ip7-import .m { color: #287d5b; }
.ip7-import .f { color: #b0701a; }

.ip7-legend {
  display: flex;
  justify-content: center;
  gap: 1.2em;
  margin-top: 0.4em;
  font-size: 0.85em;
}

.ip7-legend .p { color: #7542b4; }
.ip7-legend .m { color: #287d5b; }
.ip7-legend .f { color: #b0701a; }

/* ---- 7. neyi paylaşırız? ---- */
.ip7-sync {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.8em;
  width: min(100%, 38em);
  margin: 1em auto;
  font-size: 0.9em;
}

.ip7-sync > div {
  padding: 0.65em 0.8em;
  border-top: 4px solid #287d5b;
  border-radius: 0.3em;
  background: #f4f7f9;
  text-align: center;
}

.ip7-sync > div.hayir { border-top-color: #d1492e; }
.ip7-sync b { display: block; margin-bottom: 0.4em; color: #42566a; }
.ip7-sync .ip7-file { margin: 0.15em; }
.ip7-sync p { margin: 0.5em 0 0; font-size: 0.88em; color: #42566a; }


/* ---- 8. üç içe aktarma biçimi: satır, modül, ad alanı ---- */
.ip7-flow {
  display: grid;
  gap: 0.55em;
  width: min(100%, 46em);
  margin: 1em auto;
  font-size: 0.9em;
}

.ip7-flow-head,
.ip7-flow-row {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) 1.2em minmax(0, 1.1fr) 1.2em minmax(0, 1fr);
  align-items: center;
  gap: 0.4em;
}

.ip7-flow-head { color: #42566a; font-size: 0.8em; text-align: center; }

.ip7-flow-row {
  padding: 0.5em 0.6em;
  border-left: 4px solid #107895;
  border-radius: 0.3em;
  background: #f4f7f9;
}

.ip7-flow-row .satir {
  padding: 0.3em 0.5em;
  border: 1px solid #c9d6dd;
  border-radius: 0.25em;
  background: #fff;
  white-space: nowrap;
}

.ip7-flow-row .ok { color: #107895; font-weight: 700; text-align: center; }

.ip7-flow-row .mod {
  display: block;
  padding: 0.3em 0.5em;
  border: 2px dashed #9aaeb8;
  border-radius: 0.3em;
  background: #fff;
  text-align: center;
  line-height: 1.3;
}

.ip7-flow-row .mod.tum { border-style: solid; border-color: #107895; background: #eaf5f8; }
.ip7-flow-row .mod b { display: block; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.ip7-flow-row .mod .adlar { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.8em; color: #42566a; }
.ip7-flow-row .mod u { text-decoration: none; padding: 0 0.25em; border-radius: 0.2em; background: #fff1b8; color: #7a5a00; }

.ip7-flow-row .ad { display: block; text-align: center; }
.ip7-flow-row .ad small { display: block; margin-top: 0.2em; color: #42566a; font-size: 0.78em; }

@keyframes ip7-flow-in { from { opacity: 0; transform: translateX(-0.8em); } to { opacity: 1; transform: none; } }
@keyframes ip7-flow-pulse { 0%, 100% { box-shadow: none; } 50% { box-shadow: 0 0 0 0.25em rgba(16, 120, 149, 0.28); } }
@keyframes ip7-flow-pop { from { opacity: 0; transform: scale(0.6); } to { opacity: 1; transform: none; } }

.reveal .slides section.present .ip7-flow-row { animation: ip7-flow-in 0.5s both; }
.reveal .slides section.present .ip7-flow-row.r2 { animation-delay: 2.4s; }
.reveal .slides section.present .ip7-flow-row.r3 { animation-delay: 4.8s; }
.reveal .slides section.present .ip7-flow-row .mod { animation: ip7-flow-pulse 0.9s 2 both; animation-delay: 0.9s; }
.reveal .slides section.present .ip7-flow-row.r2 .mod { animation-delay: 3.3s; }
.reveal .slides section.present .ip7-flow-row.r3 .mod { animation-delay: 5.7s; }
.reveal .slides section.present .ip7-flow-row .ad .ip7-tag { animation: ip7-flow-pop 0.4s both; animation-delay: 1.6s; }
.reveal .slides section.present .ip7-flow-row.r2 .ad .ip7-tag { animation-delay: 4s; }
.reveal .slides section.present .ip7-flow-row.r3 .ad .ip7-tag { animation-delay: 6.4s; }
.reveal .slides section.present .ip7-flow-row.r2,
.reveal .slides section.present .ip7-flow-row.r3 { animation-fill-mode: both; }

@media (prefers-reduced-motion: reduce) {
  .reveal .slides section.present .ip7-flow-row,
  .reveal .slides section.present .ip7-flow-row .mod,
  .reveal .slides section.present .ip7-flow-row .ad .ip7-tag { animation: none; }
}

/* ---- 9. import sırasında ne olur: bellek ve çıktı (animasyonlu) ---- */
.ip7-imp {
  display: grid;
  gap: 0.5em;
  width: min(100%, 46em);
  margin: 1em auto;
  font-size: 0.9em;
}

.ip7-imp-mem {
  display: flex;
  align-items: center;
  gap: 0.7em;
  padding: 0.4em 0.7em;
  border: 1px dashed #9aaeb8;
  border-radius: 0.3em;
  color: #42566a;
  font-size: 0.88em;
}

.ip7-imp-mem .slot { min-width: 6em; min-height: 1.9em; }

.ip7-imp-row {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.3fr) minmax(0, 1.1fr);
  align-items: center;
  gap: 0.6em;
  padding: 0.5em 0.7em;
  border-left: 4px solid #107895;
  border-radius: 0.3em;
  background: #f4f7f9;
}

.ip7-imp-row .satir {
  padding: 0.3em 0.5em;
  border: 1px solid #c9d6dd;
  border-radius: 0.25em;
  background: #fff;
  font-size: 0.9em;
  white-space: nowrap;
}

.ip7-imp-row .not { font-size: 0.9em; line-height: 1.35; }
.ip7-imp-row .cikti { padding: 0.3em 0.5em; border-radius: 0.3em; background: #e1f2e8; color: #1b6448; font-size: 0.85em; text-align: center; }
.ip7-imp-row .cikti.bos { background: #eceff1; color: #6b7c88; }
.ip7-imp-row .cikti small { display: block; color: #42566a; font-size: 0.75em; }
.ip7-imp-row.r2 { border-left-color: #b0701a; }

.reveal .slides section.present .ip7-imp-row { animation: ip7-flow-in 0.5s both; }
.reveal .slides section.present .ip7-imp-row.r2 { animation-delay: 3s; }
.reveal .slides section.present .ip7-imp-row.r3 { animation-delay: 5.6s; }
.reveal .slides section.present .ip7-imp-row .cikti { animation: ip7-flow-pop 0.4s both; animation-delay: 1.2s; }
.reveal .slides section.present .ip7-imp-row.r2 .cikti { animation-delay: 3.7s; }
.reveal .slides section.present .ip7-imp-row.r3 .cikti { animation-delay: 6.3s; }
.reveal .slides section.present .ip7-imp-mem .chip { animation: ip7-flow-pop 0.4s both 1.8s, ip7-flow-pulse 0.9s 2 3.6s; }

/* ---- 10. modül nerede aranır: üç örnek (animasyonlu) ---- */
.ip7-find {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.7em;
  width: min(100%, 46em);
  margin: 1em auto;
  font-size: 0.9em;
}

.ip7-find-col {
  display: grid;
  align-content: start;
  gap: 0.4em;
  padding: 0.6em 0.6em 0.7em;
  border-top: 3px solid #107895;
  border-radius: 0.3em;
  background: #f4f7f9;
  text-align: center;
}

.ip7-find .komut { font-weight: 700; font-size: 0.85em; }

.ip7-find .adim {
  display: block;
  padding: 0.35em 0.4em;
  border-radius: 0.25em;
  font-size: 0.82em;
  line-height: 1.3;
}

.ip7-find .adim b { margin-right: 0.35em; }
.ip7-find .adim em { display: block; font-style: normal; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.88em; }
.ip7-find .bul { background: #e1f2e8; color: #1b6448; }
.ip7-find .bul em::before { content: "✓ "; font-weight: 700; }
.ip7-find .yok { background: #fbe9e6; color: #8f2f24; }
.ip7-find .yok em::before { content: "✗ "; font-weight: 700; }
.ip7-find .atla { background: #eceff1; color: #8a99a3; }

.ip7-find .sonuc {
  display: block;
  margin-top: 0.2em;
  padding: 0.4em 0.4em;
  border-radius: 0.25em;
  font-size: 0.82em;
  line-height: 1.3;
}

.ip7-find .sonuc.ok { background: #287d5b; color: #fff; }
.ip7-find .sonuc.bad { background: #d1492e; color: #fff; }
.ip7-find .sonuc code { color: inherit; background: none; }

@keyframes ip7-st-bul { 0% { background: transparent; color: #7a8d99; } 20%, 55% { background: #fff1b8; color: #1f3a4a; } 100% { background: #e1f2e8; color: #1b6448; } }
@keyframes ip7-st-yok { 0% { background: transparent; color: #7a8d99; } 20%, 55% { background: #fff1b8; color: #1f3a4a; } 100% { background: #fbe9e6; color: #8f2f24; } }
@keyframes ip7-st-atla { 0%, 45% { background: transparent; color: #b4c0c8; } 100% { background: #eceff1; color: #8a99a3; } }

.reveal .slides section.present .ip7-find .bul { animation: ip7-st-bul 1.3s both; }
.reveal .slides section.present .ip7-find .yok { animation: ip7-st-yok 1.3s both; }
.reveal .slides section.present .ip7-find .atla { animation: ip7-st-atla 1.1s both; }
.reveal .slides section.present .ip7-find .s1 { animation-delay: 0.5s; }
.reveal .slides section.present .ip7-find .s2 { animation-delay: 2s; }
.reveal .slides section.present .ip7-find .s3 { animation-delay: 3.5s; }
.reveal .slides section.present .ip7-find .sonuc { animation: ip7-flow-pop 0.4s both; animation-delay: 5s; }

/* ---- 12. bir dosya, iki rol: koruyucu yok / var (animasyonlu) ---- */
.ip7-role {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.8em;
  width: min(100%, 44em);
  margin: 1em auto;
  font-size: 0.9em;
}

.ip7-role-col {
  padding: 0.65em 0.8em;
  border-top: 4px solid #d1492e;
  border-radius: 0.3em;
  background: #f4f7f9;
  text-align: center;
}

.ip7-role-col.iyi { border-top-color: #287d5b; }
.ip7-role .baslik { display: block; margin-bottom: 0.3em; font-weight: 700; color: #42566a; }
.ip7-role .komut { display: block; font-size: 0.85em; font-weight: 700; }

.ip7-role .kod {
  margin: 0.5em 0;
  padding: 0.3em;
  border: 1px solid #c9d6dd;
  border-radius: 0.3em;
  background: #fff;
  text-align: left;
}

.ip7-role .ln {
  display: flex;
  justify-content: space-between;
  gap: 0.5em;
  padding: 0.1em 0.4em;
  border-radius: 0.2em;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.78em;
  white-space: pre;
}

.ip7-role .ln b { font-family: inherit; font-size: 0.9em; }
.ip7-role .ln.ran { background: #e1f2e8; color: #1b6448; }
.ip7-role .ln.bad { background: #fbe9e6; color: #8f2f24; }
.ip7-role .ln.skip { background: #eceff1; color: #8a99a3; text-decoration: line-through; }

.ip7-role .cikti {
  padding: 0.4em;
  border-radius: 0.3em;
  background: #e1f2e8;
  color: #1b6448;
}

.ip7-role .cikti.kotu { background: #fbe9e6; color: #8f2f24; }
.ip7-role .cikti small { display: block; color: #42566a; font-size: 0.75em; }
.ip7-role .cikti code { display: block; font-size: 0.95em; }

.ip7-role-son {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 0.7em;
  padding: 0.5em 0.8em;
  border-left: 4px solid #7542b4;
  border-radius: 0.3em;
  background: #f4f7f9;
  font-size: 0.88em;
}

.ip7-role-son > code { white-space: nowrap; font-weight: 700; }

@keyframes ip7-ln-bad { 0% { background: transparent; color: #7a8d99; } 15%, 55% { background: #fff1b8; color: #1f3a4a; } 100% { background: #fbe9e6; color: #8f2f24; } }

.reveal .slides section.present .ip7-role .ln.ran { animation: ip7-ln-ran 1.4s both; }
.reveal .slides section.present .ip7-role .ln.bad { animation: ip7-ln-bad 1.4s both; }
.reveal .slides section.present .ip7-role .ln.skip { animation: ip7-ln-skip 1.2s both; }
.reveal .slides section.present .ip7-role .ln.a1 { animation-delay: 0.6s; }
.reveal .slides section.present .ip7-role .ln.a2 { animation-delay: 2s; }
.reveal .slides section.present .ip7-role .ln.a3 { animation-delay: 3.2s; }
.reveal .slides section.present .ip7-role .cikti { animation: ip7-flow-pop 0.4s both; animation-delay: 4.4s; }
.reveal .slides section.present .ip7-role-son { animation: ip7-flow-in 0.5s both; animation-delay: 6.4s; }

@media (prefers-reduced-motion: reduce) {
  .reveal .slides section.present .ip7-role .ln,
  .reveal .slides section.present .ip7-role .cikti,
  .reveal .slides section.present .ip7-role-son,
  .reveal .slides section.present .ip7-run .ln,
  .reveal .slides section.present .ip7-run .cikti,
  .reveal .slides section.present .ip7-imp-row,
  .reveal .slides section.present .ip7-imp-row .cikti,
  .reveal .slides section.present .ip7-imp-mem .chip,
  .reveal .slides section.present .ip7-find .adim,
  .reveal .slides section.present .ip7-find .sonuc { animation: none; }
}

/* ---- sunum ölçekleri ---- */
.reveal .ip7-share,
.reveal .ip7-run,
.reveal .ip7-role,
.reveal .ip7-pkg,
.reveal .ip7-sync { font-size: 0.85em; }
.reveal .ip7-flow,
.reveal .ip7-imp { font-size: 0.8em; }
.reveal .ip7-find { font-size: 0.78em; }

.reveal .ip7-lib { font-size: 0.8em; }
.reveal ol.ip7-steps { font-size: 0.7em; }

@media (max-width: 640px) {
  .ip7-share,
  .ip7-run,
  .ip7-role,
  .ip7-find,
  .ip7-sync { grid-template-columns: minmax(0, 1fr); }
  .ip7-imp-row { grid-template-columns: minmax(0, 1fr); }
  .ip7-role-son { flex-direction: column; text-align: center; }

  .ip7-flow-head { display: none; }
  .ip7-flow-row { grid-template-columns: minmax(0, 1fr); text-align: center; }
  .ip7-flow-row .ok { transform: rotate(90deg); }

  .ip7-lib { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ip7-steps li { max-width: none; flex-basis: 100%; }
  .ip7-steps li + li::before { content: "↓"; left: 50%; top: -0.85em; transform: translateX(-50%); }
}
