/* ARTCODEAS Akademik Program Sistemi — kırmızı / beyaz / gri akademik tema */
:root {
  --aic-crimson: #A51C30;
  --aic-deep: #7A1422;
  --aic-graphite: #2B2F33;
  --aic-gray: #6B7280;
  --aic-mist: #F2F3F5;
  --aic-white: #FFFFFF;
  --aic-rule: #D9DCE1;
  --aic-soft: #FBEFF1;
  --aic-ok: #1F7A4D;
  --aic-warn: #B45309;
  --radius: 10px;
  --shadow: 0 1px 2px rgba(20, 24, 28, .06), 0 4px 14px rgba(20, 24, 28, .04);
  --bs-primary: var(--aic-crimson);
  --bs-primary-rgb: 165, 28, 48;
  --bs-link-color: var(--aic-crimson);
  --bs-link-color-rgb: 165, 28, 48;
  --bs-link-hover-color: var(--aic-deep);
  --bs-body-font-family: "Source Sans 3", "Segoe UI", system-ui, -apple-system, sans-serif;
  --bs-body-color: var(--aic-graphite);
  --bs-body-bg: var(--aic-mist);
  --bs-border-color: var(--aic-rule);
}

body { font-size: .95rem; min-height: 100vh; }
h1, h2, h3, .brand-text, .a4-title strong, .panel-title { font-family: "Source Serif 4", Georgia, serif; }
h1 { font-size: 1.6rem; font-weight: 700; margin: 0; letter-spacing: -.01em; }
a { text-decoration: none; }
a:hover { text-decoration: underline; }
.text-primary { color: var(--aic-crimson) !important; }

/* Butonlar */
.btn-primary { --bs-btn-bg: var(--aic-crimson); --bs-btn-border-color: var(--aic-crimson); --bs-btn-hover-bg: var(--aic-deep);
  --bs-btn-hover-border-color: var(--aic-deep); --bs-btn-active-bg: var(--aic-deep); --bs-btn-active-border-color: var(--aic-deep);
  --bs-btn-disabled-bg: var(--aic-crimson); --bs-btn-disabled-border-color: var(--aic-crimson); }
.btn-outline-primary { --bs-btn-color: var(--aic-crimson); --bs-btn-border-color: var(--aic-crimson); --bs-btn-hover-bg: var(--aic-crimson);
  --bs-btn-hover-border-color: var(--aic-crimson); --bs-btn-active-bg: var(--aic-deep); --bs-btn-active-border-color: var(--aic-deep); }
.btn-light { --bs-btn-bg: #fff; --bs-btn-border-color: var(--aic-rule); --bs-btn-hover-bg: var(--aic-mist); --bs-btn-hover-border-color: #c8ccd2; }
.btn-icon { border: 0; background: transparent; font-size: 1.25rem; color: var(--aic-graphite); padding: .35rem .55rem; border-radius: 8px; }
.btn-icon:hover { background: var(--aic-mist); }
.btn-user { border: 0; background: transparent; color: var(--aic-graphite); font-weight: 500; }
.form-control:focus, .form-select:focus, .form-check-input:focus { border-color: var(--aic-crimson); box-shadow: 0 0 0 .2rem rgba(165, 28, 48, .15); }
.form-check-input:checked { background-color: var(--aic-crimson); border-color: var(--aic-crimson); }
.form-label { font-weight: 600; font-size: .88rem; margin-bottom: .3rem; }
.req { color: var(--aic-crimson); margin-left: 2px; }
.pagination { --bs-pagination-color: var(--aic-crimson); --bs-pagination-active-bg: var(--aic-crimson); --bs-pagination-active-border-color: var(--aic-crimson); margin-top: 1rem; }

/* Üst şerit ve başlık */
.brand-band { height: 4px; background: linear-gradient(90deg, var(--aic-deep), var(--aic-crimson) 60%, #C9404F); }
.topbar { position: sticky; top: 0; z-index: 1030; display: flex; align-items: center; gap: .5rem; height: 58px;
  padding: 0 1rem; background: var(--aic-white); border-bottom: 1px solid var(--aic-rule); }
.brand { display: flex; align-items: center; gap: .6rem; color: var(--aic-graphite); }
.brand:hover { text-decoration: none; }
.brand-mark { display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 8px; background: var(--aic-crimson);
  color: #fff; font-weight: 700; font-size: .85rem; letter-spacing: .04em; }
.brand-mark.big { width: 56px; height: 56px; font-size: 1.15rem; border-radius: 12px; }
.brand-text { font-weight: 700; font-size: 1.08rem; }
.notif-dot { position: absolute; top: 2px; right: 0; min-width: 18px; height: 18px; padding: 0 4px; border-radius: 9px;
  background: var(--aic-crimson); color: #fff; font-size: .68rem; font-weight: 700; display: grid; place-items: center; }
.notif-menu { width: 340px; max-height: 420px; overflow: auto; }
.notif-item { display: flex; gap: .7rem; align-items: flex-start; white-space: normal; padding: .6rem 1rem; }
.notif-item.unread { background: var(--aic-soft); }
.notif-kind { flex: 0 0 auto; display: inline-block; min-width: 9px; min-height: 9px; margin-top: .35rem; border-radius: 5px; background: var(--aic-gray); }
.list-group .notif-kind { margin-top: .1rem; padding: .1rem .5rem; font-size: .75rem; color: #fff; font-weight: 600; min-width: 88px; text-align: center; }
.kind-approval { background: var(--aic-crimson); } .kind-revision { background: #6B7280; }
.kind-publish { background: var(--aic-ok); } .kind-task { background: var(--aic-crimson); } .kind-info { background: var(--aic-gray); }

/* Kabuk */
.shell { display: flex; min-height: calc(100vh - 62px); }
.sidebar { width: 250px; flex: 0 0 250px; background: var(--aic-white); border-right: 1px solid var(--aic-rule); }
@media (min-width: 992px) { .sidebar { position: sticky; top: 58px; height: calc(100vh - 58px); overflow-y: auto; } }
.sidebar .offcanvas-body { display: flex; padding: .8rem .6rem 2rem; }
.sidebar .nav-link { display: flex; align-items: center; gap: .65rem; padding: .48rem .75rem; border-radius: 8px; color: var(--aic-graphite); font-weight: 500; }
.sidebar .nav-link i { color: var(--aic-gray); font-size: 1.05rem; }
.sidebar .nav-link:hover { background: var(--aic-mist); text-decoration: none; }
.sidebar .nav-link.active { background: var(--aic-soft); color: var(--aic-deep); box-shadow: inset 3px 0 0 var(--aic-crimson); }
.sidebar .nav-link.active i { color: var(--aic-crimson); }
.nav-group { margin: 1.1rem .75rem .35rem; font-size: .76rem; font-weight: 700; color: var(--aic-gray); letter-spacing: .02em; }
.content { flex: 1 1 auto; min-width: 0; padding: 1.6rem clamp(1rem, 2.5vw, 2.2rem) 3rem; }
.public-content { max-width: 1400px; margin: 0 auto; }

/* Sayfa başlığı ve paneller */
.page-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 1rem; margin-bottom: 1.4rem;
  padding-bottom: 1rem; border-bottom: 1px solid var(--aic-rule); }
.lead-muted { color: var(--aic-gray); margin: .25rem 0 0; }
.head-actions { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.panel { background: var(--aic-white); border: 1px solid var(--aic-rule); border-radius: var(--radius); box-shadow: var(--shadow);
  padding: 1.15rem 1.25rem; margin-bottom: 1.25rem; }
.panel.p-0 { overflow: hidden; }
.panel-title { font-size: 1.05rem; font-weight: 700; margin: 0 0 .85rem; }
.panel-head { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.panel.attention { border-left: 4px solid var(--aic-crimson); }
a.panel { color: inherit; transition: border-color .15s, transform .15s; }
a.panel:hover { border-color: var(--aic-crimson); text-decoration: none; transform: translateY(-1px); }
.form-panel { max-width: 980px; }
.form-panel.narrow { max-width: 560px; }
.form-actions { display: flex; gap: .5rem; margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--aic-rule); }
.check-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .25rem .75rem; }
.toolbar { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: 1rem; }
.toolbar .form-select { width: auto; min-width: 180px; }
.toolbar .search { max-width: 320px; }
.list-plain { list-style: none; margin: 0; padding: 0; }
.list-plain li { padding: .38rem 0; border-bottom: 1px dashed var(--aic-rule); }
.list-plain li:last-child { border-bottom: 0; }
.count { display: inline-block; min-width: 22px; padding: 0 6px; margin-left: 4px; border-radius: 11px; background: var(--aic-mist);
  font-family: var(--bs-body-font-family); font-size: .78rem; text-align: center; color: var(--aic-graphite); }
.def-list { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; margin: 0; }
.def-list dt { color: var(--aic-gray); font-weight: 500; }
.def-list dd { margin: 0; }

/* Tablolar */
.data-table { --bs-table-bg: transparent; }
.data-table thead th { background: #F7F8FA; color: var(--aic-gray); font-weight: 600; font-size: .83rem; border-bottom: 1px solid var(--aic-rule);
  white-space: nowrap; padding: .6rem .75rem; }
.data-table td { padding: .6rem .75rem; vertical-align: middle; border-color: #ECEEF1; }
.data-table tbody tr:hover { background: #FAFAFB; }
.empty-row { text-align: center; color: var(--aic-gray); padding: 2rem !important; }
.heat-cell { background: rgba(165, 28, 48, calc(var(--h, 0) * .0035)); }

/* İstatistik kartları */
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1rem; margin-bottom: 1.25rem; }
.stat { background: #fff; border: 1px solid var(--aic-rule); border-radius: var(--radius); padding: 1rem 1.1rem; box-shadow: var(--shadow); }
.stat strong { display: block; font-size: 1.7rem; font-family: "Source Serif 4", serif; color: var(--aic-graphite); line-height: 1.1; }
.stat span { color: var(--aic-gray); font-size: .85rem; }

/* Durum rozetleri */
.status { display: inline-flex; align-items: center; gap: .35rem; padding: .18rem .6rem; border-radius: 20px; font-size: .78rem; font-weight: 600; white-space: nowrap; vertical-align: middle; }
.status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.status-draft { background: #EEF0F3; color: #4B5563; }
.status-pending_vice, .status-pending_dean { background: #FBECEE; color: #8E1B2B; }
.status-revision { background: #FEF3E2; color: var(--aic-warn); }
.status-published { background: #E6F4EC; color: var(--aic-ok); }

/* Onay akışı ve zaman çizelgesi */
.flow { list-style: none; padding: 0; margin: 0; counter-reset: f; }
.flow li { position: relative; padding: .35rem 0 .35rem 2rem; color: var(--aic-gray); counter-increment: f; }
.flow li::before { content: counter(f); position: absolute; left: 0; top: .3rem; width: 22px; height: 22px; border-radius: 50%;
  display: grid; place-items: center; font-size: .75rem; font-weight: 700; background: var(--aic-mist); border: 1px solid var(--aic-rule); }
.flow li:not(:last-child)::after { content: ""; position: absolute; left: 10.5px; top: 1.75rem; height: calc(100% - 1.3rem); width: 1px; background: var(--aic-rule); }
.flow li.done { color: var(--aic-graphite); }
.flow li.done::before { content: "✓"; background: var(--aic-ok); border-color: var(--aic-ok); color: #fff; }
.flow li.current { color: var(--aic-deep); font-weight: 700; }
.flow li.current:not(.done)::before { background: var(--aic-crimson); border-color: var(--aic-crimson); color: #fff; }
.timeline { list-style: none; padding: 0 0 0 1rem; margin: 0; border-left: 2px solid var(--aic-rule); }
.timeline li { position: relative; padding: 0 0 1rem .9rem; }
.timeline li::before { content: ""; position: absolute; left: -1.43rem; top: .35rem; width: 11px; height: 11px; border-radius: 50%; background: var(--aic-gray); border: 2px solid #fff; }
.tl-submit::before { background: #6B7280 !important; } .tl-approve::before { background: #8E1B2B !important; }
.tl-revise::before { background: var(--aic-warn) !important; } .tl-publish::before { background: var(--aic-ok) !important; }
.tl-unpublish::before { background: var(--aic-crimson) !important; }
.tl-head { line-height: 1.3; }
.tl-note { margin-top: .3rem; padding: .45rem .6rem; background: var(--aic-mist); border-radius: 6px; font-size: .88rem; }

/* Kontroller */
.problem-list { list-style: none; padding: 0; margin: 0; max-height: 360px; overflow: auto; }
.problem-list li { position: relative; padding: .35rem 0 .35rem 1.3rem; font-size: .88rem; border-bottom: 1px dashed var(--aic-rule); }
.problem-list li::before { content: "!"; position: absolute; left: 0; top: .4rem; width: 15px; height: 15px; border-radius: 50%;
  background: var(--aic-crimson); color: #fff; font-size: .7rem; font-weight: 700; display: grid; place-items: center; }
.ok-line { color: var(--aic-ok); font-weight: 600; }
.hint { color: var(--aic-gray); font-size: .85rem; }

/* Yük çubuğu */
.load { height: 8px; background: var(--aic-mist); border-radius: 4px; overflow: hidden; }
.load span { display: block; height: 100%; max-width: 100%; background: var(--aic-graphite); border-radius: 4px; }
.load.over span { background: var(--aic-crimson); }
.load-list { list-style: none; padding: 0; margin: 0; }
.load-list li { padding: .35rem 0; }

/* Uygun olmayan saat ızgarası (form) */
.slot-grid { border-collapse: separate; border-spacing: 3px; font-size: .8rem; }
.slot-grid th { font-weight: 600; color: var(--aic-gray); text-align: center; padding: 2px 4px; }
.slot-grid td { text-align: center; }
.slot-grid input { width: 1.15rem; height: 1.15rem; accent-color: var(--aic-crimson); }

/* ===== aSc tarzı haftalık tablo ===== */
.view-selector { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-bottom: 1rem; }
.view-selector .form-select { width: auto; min-width: 240px; }
.seg { display: inline-flex; background: var(--aic-mist); border: 1px solid var(--aic-rule); border-radius: 9px; padding: 3px; }
.seg a { display: inline-flex; gap: .35rem; align-items: center; padding: .35rem .8rem; border-radius: 7px; color: var(--aic-gray); font-weight: 600; font-size: .88rem; }
.seg a:hover { text-decoration: none; color: var(--aic-graphite); }
.seg a.on { background: #fff; color: var(--aic-deep); box-shadow: 0 1px 3px rgba(0, 0, 0, .1); }
.tt-panel { padding: 1rem; }
.tt-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.timetable { width: 100%; min-width: 900px; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.timetable th, .timetable td { border-right: 1px solid var(--aic-rule); border-bottom: 1px solid var(--aic-rule); }
.timetable thead th { border-top: 1px solid var(--aic-rule); }
.timetable tr > :first-child { border-left: 1px solid var(--aic-rule); }
.tt-corner { width: 92px; background: var(--aic-graphite); border-top-left-radius: 8px; }
.tt-slot { background: var(--aic-graphite); color: #fff; text-align: center; padding: .4rem .2rem; font-weight: 600; }
.tt-slot:last-child { border-top-right-radius: 8px; }
.tt-num { display: block; font-size: .95rem; }
.tt-time { display: block; font-size: .7rem; font-weight: 400; opacity: .8; line-height: 1.2; }
.tt-day { background: #F7F8FA; font-weight: 700; padding: .5rem; text-align: left; font-size: .9rem; }
.tt-cell { height: 74px; padding: 3px; vertical-align: top; background: #fff; }
.tt-cell.empty { background: repeating-linear-gradient(135deg, #fff, #fff 6px, #FAFAFB 6px, #FAFAFB 12px); }
.timetable .before-lunch { border-right: 4px double var(--aic-rule); }
.timetable.editable .tt-cell.drag-over { background: var(--aic-soft); outline: 2px dashed var(--aic-crimson); outline-offset: -3px; }
.tt-block { position: relative; height: 100%; min-height: 64px; padding: .3rem .45rem .3rem .6rem; border-radius: 6px; overflow: hidden;
  border-left: 4px solid var(--c); background: var(--bg); font-size: .78rem; line-height: 1.25; }
.tt-block + .tt-block { margin-top: 3px; }
.tt-block[draggable="true"] { cursor: grab; }
.tt-block.dragging { opacity: .45; }
/* Başka programdaki (ör. lisansüstü) dersler soluk değil, net görünür; yalnızca küçük bir etiketle ayrılır */
.tt-block.external { opacity: 1; }
.b-unit { display: inline-block; margin-left: .3rem; padding: 0 .3rem; border-radius: 3px; font-size: .6rem; font-weight: 700;
  border: 1px solid var(--c); color: var(--c); background: #fff; letter-spacing: .02em; }
.tt-block.locked { box-shadow: inset 0 0 0 1px var(--c); }
.tt-block.mini { min-height: 0; height: auto; margin-bottom: 4px; }
.b-code { font-weight: 700; color: var(--c); display: flex; align-items: center; gap: .3rem; }
.b-tag { font-size: .65rem; padding: 0 4px; border-radius: 3px; background: var(--c); color: #fff; }
.b-pin { margin-left: auto; font-size: .75rem; }
.b-name { font-weight: 600; color: var(--aic-graphite); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.b-meta { display: flex; flex-wrap: wrap; gap: 0 .55rem; color: #4B5563; font-size: .72rem; margin-top: 1px; }
.b-meta i { margin-right: 2px; }
.b-edit { position: absolute; right: 3px; bottom: 2px; font-size: .75rem; color: var(--aic-gray); opacity: 0; transition: opacity .15s; }
.tt-block:hover .b-edit { opacity: 1; }
/* Ders renkleri: kırmızı ve gri tonları */
.c0  { --c: #A51C30; --bg: #FBECEE; } .c1  { --c: #374151; --bg: #EEF0F2; } .c2  { --c: #C62828; --bg: #FDEDED; }
.c3  { --c: #6B7280; --bg: #F3F4F6; } .c4  { --c: #8E1B2B; --bg: #F6E8EA; } .c5  { --c: #52525B; --bg: #F0F0F1; }
.c6  { --c: #B23A48; --bg: #FAEFF0; } .c7  { --c: #44403C; --bg: #F1F0EE; } .c8  { --c: #D14343; --bg: #FCEFEF; }
.c9  { --c: #71717A; --bg: #F4F4F5; } .c10 { --c: #7A1422; --bg: #F4E6E8; } .c11 { --c: #57534E; --bg: #F2F1EF; }
.unplaced { border-style: dashed; }
.unplaced.drag-over { border-color: var(--aic-crimson); background: var(--aic-soft); }
.unplaced.slim { padding: .8rem 1rem; }
#dnd-toast { position: fixed; right: 1rem; bottom: 1rem; z-index: 1090; background: var(--aic-graphite); color: #fff; }

/* Program editörü yerleşimi: geniş ekranda yan panel, diğerlerinde alt alta */
.sched-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 1.5rem; }
.sched-side { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 0 1.25rem; align-items: start; }
@media (min-width: 1720px) { .sched-layout { grid-template-columns: minmax(0, 1fr) 330px; } .sched-side { display: block; } }

/* Giriş */
.login-page { background: var(--aic-mist); }
.login-wrap { min-height: calc(100vh - 4px); display: grid; grid-template-columns: 1.1fr 1fr; }
.login-side { background: linear-gradient(160deg, var(--aic-deep), var(--aic-crimson)); color: #fff; padding: 3rem clamp(1.5rem, 5vw, 4rem);
  display: flex; flex-direction: column; justify-content: center; gap: 1.5rem; }
.login-side h1 { font-size: 2.1rem; color: #fff; }
.login-side p { opacity: .85; max-width: 480px; }
.login-side .brand-mark { background: #fff; color: var(--aic-crimson); }
.mini-grid { border-collapse: separate; border-spacing: 4px; max-width: 420px; }
.mini-grid td { height: 26px; width: 56px; border-radius: 4px; background: rgba(255, 255, 255, .12); }
.mini-grid td.f1 { background: rgba(255, 255, 255, .85); } .mini-grid td.f2 { background: rgba(255, 255, 255, .55); }
.mini-grid td.f3 { background: rgba(255, 255, 255, .35); } .mini-grid td.f4 { background: #F2C5CC; }
.login-card { align-self: center; justify-self: center; width: min(420px, 92vw); background: #fff; padding: 2.2rem; border-radius: 14px; box-shadow: var(--shadow); border: 1px solid var(--aic-rule); }
.public-link { display: inline-flex; gap: .4rem; align-items: center; margin-top: 1.2rem; font-weight: 600; }
@media (max-width: 860px) { .login-wrap { grid-template-columns: 1fr; } .login-side { padding: 2rem 1.5rem; } .mini-grid { display: none; } }

/* Yayın sayfaları */
.public-top { position: static; }
.public-hero { background: #fff; border: 1px solid var(--aic-rule); border-left: 5px solid var(--aic-crimson); border-radius: var(--radius);
  padding: 1.5rem 1.75rem; margin-bottom: 1.5rem; }
.semester-pick { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.semester-label { color: var(--aic-gray); font-weight: 600; }
.faculty-block { margin-bottom: 2rem; }
.faculty-block > h2 { font-size: 1.2rem; margin-bottom: .8rem; }
.dept-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.dept-card { background: #fff; border: 1px solid var(--aic-rule); border-radius: var(--radius); padding: 1rem 1.15rem; box-shadow: var(--shadow); }
.dept-card h3 { font-size: 1.05rem; margin-bottom: .5rem; }
.dept-link { display: flex; align-items: center; gap: .45rem; padding: .3rem 0; font-weight: 500; }

/* Ders dağılımı */
.class-table { margin-bottom: 1.5rem; }
.class-head { display: flex; justify-content: space-between; align-items: baseline; padding: .6rem .9rem; background: var(--aic-graphite);
  color: #fff; border-radius: 8px 8px 0 0; }
.class-head h3 { font-size: 1rem; margin: 0; color: #fff; }

/* Mesajlar */
.messages .alert { border-radius: 8px; border-width: 0 0 0 4px; box-shadow: var(--shadow); }
.alert-success { border-color: var(--aic-ok) !important; } .alert-danger { border-color: var(--aic-crimson) !important; }
.alert-warning { border-color: var(--aic-warn) !important; } .alert-info { border-color: #4B5563 !important; }

/* Yazdırma önizleme (A4) */
.print-header { display: none; }
body.print-doc { background: #D6D8DC; }
.print-bar { position: sticky; top: 0; z-index: 10; display: flex; justify-content: space-between; align-items: center; padding: .6rem 1.2rem;
  background: var(--aic-graphite); color: #fff; }
.a4-page { width: 297mm; min-height: 210mm; margin: 1.2rem auto; padding: 10mm 11mm; background: #fff; box-shadow: 0 4px 20px rgba(0, 0, 0, .18);
  display: flex; flex-direction: column; }
.a4-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; border-bottom: 3px solid var(--aic-crimson);
  padding-bottom: 5mm; margin-bottom: 5mm; }
.a4-uni { font-family: "Source Serif 4", serif; font-weight: 700; font-size: 1.15rem; }
.a4-fac { color: var(--aic-gray); }
.a4-title { text-align: right; }
.a4-title strong { display: block; font-size: 1.3rem; color: var(--aic-deep); }
.a4-title span { color: var(--aic-gray); font-size: .85rem; }
.a4-foot { margin-top: auto; padding-top: 4mm; display: flex; justify-content: space-between; font-size: .75rem; color: var(--aic-gray);
  border-top: 1px solid var(--aic-rule); }
.a4-page .timetable { min-width: 0; }
.a4-page .tt-cell { height: 58px; }
.a4-page .tt-block { min-height: 50px; font-size: .7rem; }
.exam-print { font-size: .82rem; }
.exam-print th { background: var(--aic-graphite) !important; color: #fff !important; }

@media (max-width: 991.98px) {
  .sidebar { width: 270px; }
  .content { padding-top: 1.2rem; }
  h1 { font-size: 1.35rem; }
}
@media (max-width: 575.98px) {
  .brand-text { font-size: .95rem; }
  .page-head { align-items: flex-start; }
  .head-actions .btn { padding: .3rem .6rem; font-size: .85rem; }
  .panel { padding: 1rem; }
}

/* ===== Yazdırma ===== */
@page { size: A4 landscape; size: 297mm 210mm; margin: 8mm; }
@media print {
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
  body, body.print-doc { background: #fff !important; font-size: 10pt; }
  .brand-band, .topbar, .sidebar, .print-bar, .messages, .head-actions, .form-actions, .toolbar, .view-selector, .b-edit, .btn { display: none !important; }
  .shell { display: block; min-height: 0; }
  .content { padding: 0 !important; }
  .page-head { border: 0; margin-bottom: 3mm; padding: 0; }
  .print-header { display: block; font-size: 11pt; padding-bottom: 2mm; margin-bottom: 3mm; border-bottom: 2px solid var(--aic-crimson); }
  .panel { box-shadow: none; border: 0; padding: 0; margin-bottom: 4mm; break-inside: avoid; }
  .col-xl-3, .col-lg-4, .sched-side { display: none; }
  .sched-layout { display: block; }
  .col-xl-9, .col-lg-8, .col-lg-7, .col-lg-5 { width: 100% !important; flex: 0 0 100% !important; max-width: 100% !important; }
  .tt-wrap { overflow: visible; }
  .timetable { min-width: 0; }
  .tt-cell { height: 54px; }
  .tt-block { font-size: 7.5pt; min-height: 48px; }
  .tt-block.external { opacity: 1; }
  .a4-page { width: auto; min-height: 190mm; margin: 0; padding: 0; box-shadow: none; page-break-after: always; break-after: page; }
  .a4-page:last-child { page-break-after: auto; break-after: auto; }
  a { color: inherit !important; text-decoration: none !important; }
}

/* ===== Kamuya açık ana sayfa ===== */
.pub-hero { background: #fff; border: 1px solid var(--aic-rule); border-radius: 14px; padding: 1.4rem 1.6rem;
  margin-bottom: 1rem; box-shadow: var(--shadow); position: relative; overflow: hidden;
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; }
.pub-hero::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 4px;
  background: linear-gradient(90deg, var(--aic-deep), var(--aic-crimson) 60%, #C9404F); }
.pub-ident { display: flex; align-items: center; gap: 1.1rem; min-width: 0; }
.pub-logo { height: 72px; width: auto; max-width: 140px; object-fit: contain; }
.pub-names { min-width: 0; }
.pub-uni { color: var(--aic-gray); font-weight: 600; letter-spacing: .01em; }
.pub-fac { font-size: 1.65rem; margin: .1rem 0; color: var(--aic-graphite); }
.pub-sub { color: var(--aic-crimson); font-weight: 600; font-size: .95rem; }
.pub-pickers { display: flex; flex-wrap: wrap; gap: .5rem; }
.pub-pickers .form-select { width: auto; min-width: 220px; }
.pub-tabs { display: flex; gap: .25rem; border-bottom: 2px solid var(--aic-rule); margin-bottom: 1rem; }
.pub-tabs a { display: inline-flex; align-items: center; gap: .45rem; padding: .65rem 1.1rem; font-weight: 700;
  color: var(--aic-gray); border-bottom: 3px solid transparent; margin-bottom: -2px; }
.pub-tabs a:hover { color: var(--aic-graphite); text-decoration: none; }
.pub-tabs a.on { color: var(--aic-deep); border-bottom-color: var(--aic-crimson); }
.pub-live { font-size: .7rem; font-weight: 700; color: #fff; background: var(--aic-crimson); padding: .1rem .45rem; border-radius: 10px; }
.pub-empty { display: block; text-align: center; padding: 3rem 1.5rem; }
.seg-edu a { font-weight: 700; }
.tt-date { display: block; font-weight: 400; font-size: .75rem; color: var(--aic-gray); }
.b-time { margin-left: auto; font-weight: 600; font-size: .68rem; color: var(--aic-graphite); }
.exam-grid .tt-cell { height: auto; min-height: 74px; }
.exam-grid .tt-block { height: auto; }
.b-sup { color: #374151; }
.warn-list { list-style: none; padding: 0; margin: 0; }
.warn-list li { position: relative; padding: .3rem 0 .3rem 1.3rem; font-size: .88rem; border-bottom: 1px dashed var(--aic-rule); }
.warn-list li::before { content: "!"; position: absolute; left: 0; top: .35rem; width: 15px; height: 15px; border-radius: 50%;
  background: var(--aic-warn); color: #fff; font-size: .7rem; font-weight: 700; display: grid; place-items: center; }
@media (max-width: 575.98px) {
  .pub-logo { height: 52px; }
  .pub-fac { font-size: 1.25rem; }
  .pub-pickers .form-select { min-width: 0; width: 100%; }
  .pub-tabs a { padding: .55rem .7rem; font-size: .9rem; }
}
@media print { .pub-tabs, .pub-pickers { display: none !important; } .pub-hero { box-shadow: none; border: 0; padding: 0 0 3mm; } }

/* ===== Aynı hücrede birden fazla ders (seçmeli grubu / paralel gruplar) =====
   Dersler alt alta, tam genişlikte: üstte kod ve ad, ortada sınıf, altta solda derslik, sağda öğretim üyesi/elemanı. */
.b-class { display: none; }
.tt-cell.multi { padding: 2px; }
.tt-cell.multi .tt-block { height: auto; min-height: 0; padding: .2rem .45rem .2rem .5rem; margin: 0 0 2px; border-radius: 4px; }
.tt-cell.multi .tt-block:last-child { margin-bottom: 0; }
.tt-cell.multi .b-code { display: inline-flex; margin-right: .3rem; }
.tt-cell.multi .b-name { display: inline; white-space: normal; font-weight: 700; }
.tt-cell.multi .b-class { display: block; text-align: left; font-size: .7rem; color: #374151; line-height: 1.2; }
.tt-cell.multi .b-meta { justify-content: space-between; flex-wrap: nowrap; gap: .4rem; }
.tt-cell.multi .b-meta .m-class { display: none; }
.tt-cell.multi .b-meta span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tt-cell.multi .b-time { margin-left: .4rem; }
.a4-page .tt-cell.multi .tt-block { min-height: 0; font-size: .64rem; padding: .12rem .35rem; }
.a4-page tr, .timetable tr { break-inside: avoid; page-break-inside: avoid; }
@media print {
  .tt-cell.multi .tt-block { min-height: 0; padding: 1pt 3pt; }
  .tt-cell.multi .b-class { font-size: 7pt; }
  .a4-title span:empty { display: none; }
}

.load-table tr.over td { color: var(--aic-crimson); }
.load-table td, .load-table th { padding: .3rem .4rem; }

.check-scroll { max-height: 320px; overflow-y: auto; padding: .5rem .75rem; border: 1px solid var(--aic-rule); border-radius: 8px; background: #fff; }
.check-scroll .form-check { margin: 0; min-width: 0; }
.check-scroll .form-check-label { font-size: .88rem; }

/* ===== Blok içeriğinin tamamı okunur: kırpma yok, metin satıra sarılır ===== */
.tt-cell { height: auto; }
.tt-block { height: auto; min-height: 64px; overflow: visible; }
.tt-block .b-name { white-space: normal; overflow: visible; text-overflow: clip; }
.tt-block .b-meta { flex-wrap: wrap; }
.tt-block .b-meta span { white-space: normal; overflow: visible; text-overflow: clip; }
.tt-cell.multi .b-meta { flex-wrap: wrap; }
.tt-cell.multi .b-meta span { white-space: normal; overflow: visible; }
.a4-page .tt-block { min-height: 0; }
@media print { .tt-block { min-height: 0; } .tt-cell { height: auto; } }

/* Ders dağılımı onay akışı (yatay) */
.flow-h { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; }
.flow-h li { padding-left: 2rem; }
.flow-h li::after { display: none; }
.flow-h li span { display: block; font-size: .78rem; color: var(--aic-gray); font-weight: 400; }

/* Ürün kimliği */
.login-full { font-size: 1.05rem; opacity: .95; margin-bottom: .2rem; }
.login-slogan { font-family: "Source Serif 4", Georgia, serif; font-style: italic; font-size: 1.15rem; opacity: 1 !important; }
.pub-footer { margin-top: 2.5rem; padding: 1rem 0 .5rem; border-top: 1px solid var(--aic-rule); text-align: center;
  color: var(--aic-gray); font-size: .85rem; }
.pub-footer strong { color: var(--aic-graphite); font-weight: 600; }

/* İki aşamalı doğrulama */
.otp-input { letter-spacing: .3em; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.secret-key { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 1.05rem; letter-spacing: .05em;
  background: var(--aic-mist); border: 1px dashed var(--aic-rule); border-radius: 8px; padding: .5rem .75rem; word-break: break-all; }
.setup-steps { padding-left: 1.2rem; } .setup-steps li { margin-bottom: .4rem; }
.qr-panel svg { width: 100%; max-width: 240px; height: auto; }
.recovery-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem 1rem; }
.recovery-grid code { font-size: 1.05rem; color: var(--aic-graphite); background: var(--aic-mist); padding: .35rem .6rem; border-radius: 6px; text-align: center; }

.a4-ident { display: flex; align-items: center; gap: 4mm; }
.a4-logo { height: 15mm; width: auto; max-width: 30mm; object-fit: contain; }
.a4-edu { font-size: .8rem; font-weight: 700; color: var(--aic-deep); margin-top: 1mm; }
.pub-mail { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; margin-left: .6rem;
  border-radius: 50%; border: 1px solid var(--aic-rule); color: var(--aic-gray); vertical-align: middle; }
.pub-mail:hover { color: var(--aic-crimson); border-color: var(--aic-crimson); text-decoration: none; }
.pub-window { border-top: 1px dashed var(--aic-rule); }

/* Sınav çıktısı: kompakt bloklar (tek sayfaya sığması için) */
.a4-page .exam-grid .tt-cell { height: auto; min-height: 0; }
.a4-page .exam-grid .tt-block { min-height: 0; padding: .15rem .35rem; font-size: .66rem; }
.a4-page .exam-grid .b-meta { font-size: .62rem; }
.a4-page .exam-grid .tt-day { font-size: .72rem; padding: .25rem .4rem; }

.tt-time-only { font-size: .8rem; font-weight: 600; opacity: 1; }
.a4-brand { display: inline-flex; align-items: center; gap: 2mm; font-weight: 700; color: var(--aic-graphite); }
.a4-mark { display: inline-grid; place-items: center; width: 6mm; height: 6mm; border-radius: 1.5mm; background: var(--aic-crimson);
  color: #fff; font-size: .55rem; font-weight: 700; letter-spacing: .02em; }

/* Sınav çıktısı (yatay): günler sütunlarda, saatler satırlarda */
.exam-print-grid { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: .72rem; }
.exam-print-grid th, .exam-print-grid td { border: 1px solid var(--aic-rule); vertical-align: top; padding: 1.2mm; }
.exam-print-grid thead th { background: var(--aic-graphite); color: #fff; text-align: center; font-weight: 700; }
.exam-print-grid thead th span { display: block; font-weight: 400; font-size: .66rem; opacity: .85; }
.exam-print-grid .ep-corner { width: 22mm; }
.exam-print-grid .ep-time { background: #F7F8FA; font-weight: 700; white-space: nowrap; text-align: center; vertical-align: middle; }
.ep-item { border-left: 3px solid var(--c); background: var(--bg); border-radius: 3px; padding: .8mm 1.2mm; margin-bottom: 1mm; }
.ep-item:last-child { margin-bottom: 0; }
.ep-bundle { --c: #2B2F33; --bg: #F4F5F7; }
.ep-bundle .b-groups { margin-top: .6mm; }
.ep-code { font-weight: 700; color: var(--c); }
.ep-name { font-weight: 600; line-height: 1.2; }
.ep-meta { color: #374151; line-height: 1.25; }
.ep-meta i { margin-right: 1mm; }
@media print { .exam-print-grid thead th { background: #2B2F33 !important; color: #fff !important; } }
.holder { display: inline-flex; align-items: center; margin-right: .6rem; }

.err-page .err-code { font-family: "Source Serif 4", Georgia, serif; font-size: 3rem; font-weight: 700; color: var(--aic-crimson); line-height: 1; margin-bottom: .5rem; }

/* Sınıf adı her yerde sola hizalı */
.tt-block .b-class, .tt-block .m-class, .exam-grid .b-class, .ep-meta { text-align: left; }
.tt-block .b-meta { justify-content: flex-start; }

.tt-block .b-time-row { font-size: .72rem; font-weight: 700; color: var(--c); margin: .05rem 0; }
.tt-block .b-time-row i { margin-right: .2rem; }

/* Genel bakış: tüm sınıflar × günün saatleri */
.ov-days { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .75rem; }
.ov-days a { padding: .3rem .8rem; border: 1px solid var(--aic-rule); border-radius: 999px; color: var(--aic-graphite); font-size: .85rem; text-decoration: none; background: #fff; }
.ov-days a.on { background: var(--aic-crimson); border-color: var(--aic-crimson); color: #fff; }
.timetable.overview { min-width: 1500px; table-layout: fixed; }
.timetable.overview th.ov-class { width: 150px; text-align: left; font-size: .78rem; padding: .3rem .5rem; position: sticky; left: 0; background: #F7F8FA; z-index: 2; }
.timetable.overview .ov-hours { display: block; font-weight: 400; color: var(--aic-gray); font-size: .7rem; }
.timetable.overview .ov-edu { font-size: .65rem; background: var(--aic-graphite); color: #fff; border-radius: 3px; padding: 0 .25rem; }
.timetable.overview .tt-cell { height: auto; min-height: 44px; padding: 2px; }
.timetable.overview .ov-block { min-height: 0; padding: .15rem .3rem; font-size: .68rem; }
.timetable.overview .ov-block .b-meta { font-size: .62rem; gap: .2rem .4rem; }
.timetable.overview .ov-free { background: repeating-linear-gradient(45deg, #F3FAF4, #F3FAF4 6px, #fff 6px, #fff 12px); }
.timetable.overview .ov-off { background: #EEF0F2; }
.ov-legend { display: inline-block; width: 14px; height: 10px; border: 1px solid var(--aic-rule); vertical-align: middle; }
.ov-legend.ov-free { background: repeating-linear-gradient(45deg, #DCEFE0, #DCEFE0 3px, #fff 3px, #fff 6px); }
.ov-legend.ov-off { background: #EEF0F2; }

/* Haftalık genel bakış */
.ov-wrap { max-height: 78vh; overflow: auto; }
.timetable.overview { min-width: 0; width: max-content; }
.timetable.overview thead th { position: sticky; top: 0; z-index: 3; }
.timetable.overview thead tr:nth-child(2) th { top: 2rem; }
.timetable.overview th.ov-class { z-index: 4; }
.timetable.overview th.ov-day { background: var(--aic-crimson); color: #fff; text-align: center; font-size: .85rem; height: 2rem; border-left: 3px solid #fff; }
.timetable.overview th.tt-slot { width: 46px; min-width: 46px; padding: .2rem 0; }
.timetable.overview th.tt-slot .tt-time-only { font-size: .66rem; }
.timetable.overview td.tt-cell { min-width: 46px; }
.timetable.overview .ov-sep { border-left: 3px solid var(--aic-graphite) !important; }
.timetable.overview .ov-block .b-code { font-size: .64rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.timetable.overview .ov-block .b-meta span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }

/* Haftalık genel bakış: yalnızca ders kodu, dar sütunlar */
.timetable.overview th.tt-slot { width: 34px; min-width: 34px; }
.timetable.overview td.tt-cell { min-width: 34px; min-height: 0; height: 30px; padding: 1px; }
.timetable.overview th.tt-slot .tt-time-only { font-size: .58rem; letter-spacing: -.02em; }
.timetable.overview th.ov-class { width: 130px; font-size: .74rem; padding: .2rem .4rem; }
.timetable.overview .ov-hours { display: inline; margin-left: .3rem; }
.timetable.overview .ov-block { padding: .1rem .2rem; min-height: 24px; display: flex; align-items: center; }
.timetable.overview .ov-block + .ov-block { margin-top: 1px; }
.timetable.overview .ov-code { font-size: .64rem; font-weight: 700; color: var(--c); line-height: 1.1; word-break: break-all; text-decoration: none; }
.timetable.overview .ov-code small { font-weight: 600; opacity: .8; }
.timetable.overview .ov-block { position: relative; }
.timetable.overview .ov-block .b-edit { display: none; position: absolute; top: 1px; right: 1px; width: 18px; height: 18px;
  align-items: center; justify-content: center; border-radius: 4px; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.2); font-size: .6rem; }
.timetable.overview .ov-block:hover .b-edit { display: flex; }

/* Ders yükü raporu */
.load-report .load-row:hover td { background: #FBF3F4; }
.load-sub { background: #FBFAF8; font-size: .85rem; }
.load-sub thead th { background: #F1F1F2; font-weight: 600; }
.load-sub .load-dept td { background: #F6E8EA; color: var(--aic-deep); font-weight: 700; }
.load-sub .load-subtotal td { background: #F3F4F6; font-weight: 700; }
.load-sub .load-total td { background: #E5E7EB; font-weight: 700; border-top: 2px solid var(--aic-graphite); }
@media print { .load-detail { display: table-row !important; } }

.b-elective { display: inline-block; margin-left: .3rem; padding: 0 .3rem; border-radius: 3px; font-size: .62rem; font-weight: 700;
  background: var(--c); color: #fff; vertical-align: 1px; letter-spacing: .02em; }
.login-contact { border-top: 1px solid var(--aic-rule); }

/* Kayarak çakışan bloklar: her blok kendi satırında, kendi saat sütunlarının altında; saat çizgileri görünür */
.tt-cell.staggered { background-image: linear-gradient(to right, var(--aic-rule) 1px, transparent 1px);
  background-size: calc(100% / var(--span)) 100%; background-position: 0 0; padding-left: 0; padding-right: 0; }
.tt-cell.staggered > .tt-block { box-sizing: border-box; }
.tt-cell.staggered > .tt-block + .tt-block { margin-top: 3px; }
.tt-cell.staggered .b-time-row { display: none; }   /* saat zaten sütun hizasından okunuyor */

/* Ekrandan yazdırma ("Bu görünüm"): menü ve düğmeler gizlenir, tablo tek yatay A4 sayfaya sığdırılır */
@media print {
  .sidebar, .topbar, .page-head .head-actions, .seg, .view-selector, .hint, .d-print-none, .ov-days,
  .panel.approval-panel, aside, nav, .toast-wrap { display: none !important; }
  .app-main, main, .content, .container-fluid { margin: 0 !important; padding: 0 !important; width: auto !important; }
  .tt-wrap, .ov-wrap { overflow: visible !important; max-height: none !important; }
  .print-fit-target { transform-origin: top left; }
  body { background: #fff !important; }
}

/* Paralel (seçmeli) bloklar: tek tip, okunaklı */
.tt-cell.multi .tt-block { font-size: .74rem; }
.tt-cell.multi .tt-block .b-name { font-size: .74rem; font-weight: 600; }
.tt-cell.multi .tt-block .b-meta { font-size: .68rem; }
@media print {
  .tt-cell.multi .tt-block { font-size: 7.6pt !important; padding: 1.2pt 3pt !important; }
  .tt-cell.multi .tt-block .b-meta { font-size: 7pt !important; }
}

/* Kamuya açık sayfa: kurum adı + sistem imzası, simgeli giriş, kurumsal bant */
.public-top { background: #fff; border-bottom: 1px solid var(--aic-rule); }
.pub-brand { gap: .7rem; text-decoration: none; }
.pub-brand-text { display: flex; flex-direction: column; line-height: 1.15; }
.pub-site { font-family: "Source Serif 4", Georgia, serif; font-weight: 700; font-size: 1.15rem; color: var(--aic-graphite); }
.pub-credit { font-size: .74rem; color: var(--aic-gray); letter-spacing: .01em; }
.pub-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%;
  border: 1px solid var(--aic-rule); color: var(--aic-graphite); font-size: 1.15rem; background: #fff; transition: all .15s; }
.pub-icon-btn:hover { background: var(--aic-crimson); border-color: var(--aic-crimson); color: #fff; }
.pub-hero { background: linear-gradient(120deg, #7A1422 0%, #A51C30 55%, #B8323F 100%) !important; color: #fff;
  border: none !important; box-shadow: 0 8px 24px rgba(122, 20, 34, .18); position: relative; overflow: hidden; }
.pub-hero::before { display: none; }
.pub-hero::after { content: ""; position: absolute; right: -60px; top: -60px; width: 260px; height: 260px; border-radius: 50%;
  background: rgba(255,255,255,.07); }
.pub-hero .pub-uni { color: rgba(255,255,255,.85); }
.pub-hero .pub-fac { color: #fff; }
.pub-hero .pub-sub { color: #F6D7DC; }
.pub-hero .pub-logo { background: #fff; border-radius: 12px; padding: 6px; }
.pub-hero .pub-pickers .form-select { background-color: rgba(255,255,255,.95); border: none; position: relative; z-index: 1; }
.pub-tabs { border-bottom: none; gap: .5rem; margin: 1.1rem 0 1rem; }
.pub-tabs a { border: 1px solid var(--aic-rule); border-radius: 999px; padding: .5rem 1.1rem; background: #fff; }
.pub-tabs a.on { background: var(--aic-graphite); color: #fff; border-color: var(--aic-graphite); }
.pub-tabs a.on i { color: #fff; }
.pub-footer { display: flex; flex-direction: column; align-items: center; gap: .35rem; }
.pub-footer-site { font-family: "Source Serif 4", Georgia, serif; font-weight: 700; color: var(--aic-graphite); font-size: 1rem; }
.pub-footer .a4-mark { vertical-align: 1px; }
/* Çıktı alt bilgisi */
.a4-brand { flex-direction: column; align-items: flex-end; gap: .5mm; }
.a4-site { font-weight: 700; color: var(--aic-graphite); }
.a4-credit { display: inline-flex; align-items: center; gap: 1.5mm; font-weight: 600; font-size: .62rem; color: var(--aic-gray); }

/* ===== Kamuya açık sayfa (yeni tasarım) ===== */
body.public { background: #F4F4F2; }
.pub-container { max-width: 1320px; margin: 0 auto; padding: 0 1.5rem; }
.pub-top { background: #fff; border-bottom: 1px solid var(--aic-rule); position: sticky; top: 0; z-index: 20; }
.pub-top-inner { display: flex; align-items: center; height: 68px; }
.pub-brand { display: flex; align-items: center; gap: .75rem; text-decoration: none; color: inherit; }
.pub-brand-text { display: flex; flex-direction: column; line-height: 1.15; }
.pub-site { font-family: "Source Serif 4", Georgia, serif; font-weight: 700; font-size: 1.12rem; color: var(--aic-graphite); }
.pub-credit { font-size: .72rem; color: var(--aic-gray); }
.public-content { padding: 0 !important; max-width: none !important; }
.pub-hero { background: var(--hero, #A51C30) !important; color: #fff; border: 0 !important; border-radius: 0 !important;
  box-shadow: none !important; margin: 0 0 1.5rem !important; padding: 2.2rem 0 0 !important; position: relative; overflow: hidden; }
.pub-hero::before { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 92% -10%, rgba(255,255,255,.16) 0, rgba(255,255,255,0) 38%),
              linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.18) 100%); }
.pub-hero::after { display: none; }
.pub-hero .pub-container { position: relative; }
.pub-hero-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; padding-bottom: 1.6rem; }
.pub-ident { display: flex; align-items: center; gap: 1rem; }
.pub-hero .pub-logo { width: 64px; height: 64px; object-fit: contain; background: #fff; border-radius: 14px; padding: 6px; box-shadow: 0 4px 14px rgba(0,0,0,.15); }
.pub-hero .pub-uni { color: rgba(255,255,255,.8); font-size: .9rem; letter-spacing: .02em; }
.pub-hero .pub-fac { color: #fff; font-size: 2.1rem; margin: .1rem 0 .25rem; }
.pub-hero .pub-sub { color: rgba(255,255,255,.9); font-size: .95rem; }
.pub-sem { display: inline-block; margin-left: .4rem; padding: .1rem .6rem; border-radius: 999px; background: rgba(255,255,255,.18);
  font-weight: 600; font-size: .85rem; }
.pub-pickers { display: flex; gap: .6rem; flex-wrap: wrap; }
.pub-pick { display: flex; flex-direction: column; gap: .2rem; font-size: .72rem; color: rgba(255,255,255,.8); text-transform: uppercase; letter-spacing: .05em; }
.pub-pick .form-select { min-width: 220px; border: 0; border-radius: 10px; background-color: #fff; color: var(--aic-graphite); font-size: .9rem;
  text-transform: none; letter-spacing: 0; }
.pub-hero .pub-tabs { display: flex; gap: .35rem; margin: 0; border: 0; }
.pub-hero .pub-tabs a { border: 0; border-radius: 12px 12px 0 0; padding: .7rem 1.3rem; background: rgba(255,255,255,.14); color: #fff;
  font-weight: 700; }
.pub-hero .pub-tabs a i { color: inherit; }
.pub-hero .pub-tabs a:hover { background: rgba(255,255,255,.24); }
.pub-hero .pub-tabs a.on { background: #F4F4F2; color: var(--aic-graphite); }
.pub-body .panel { border-radius: 16px; border: 1px solid #E6E4E0; box-shadow: 0 2px 10px rgba(0,0,0,.04); }
.pub-footer { margin-top: 3rem; padding: 2rem 0 2.5rem; border-top: 1px solid var(--aic-rule); background: #fff; text-align: center; }
.pub-footer .pub-container { display: flex; flex-direction: column; align-items: center; gap: .45rem; }
.pub-footer-site { font-family: "Source Serif 4", Georgia, serif; font-weight: 700; font-size: 1.05rem; color: var(--aic-graphite); }
.pub-footer-note { font-size: .85rem; color: var(--aic-gray); }
.pub-footer-row { display: flex; align-items: center; gap: .6rem; }
.pub-footer-credit { display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; color: var(--aic-gray); font-weight: 600; }
@media (max-width: 768px) {
  .pub-hero .pub-fac { font-size: 1.5rem; }
  .pub-hero .pub-logo { width: 48px; height: 48px; }
  .pub-pick .form-select { min-width: 0; width: 100%; }
  .pub-pickers, .pub-pick { width: 100%; }
}
.pub-hero.pub-empty { padding: 3.5rem 1.5rem !important; text-align: center; }
.pub-hero.pub-empty .text-muted { color: rgba(255,255,255,.85) !important; }

/* Site logosu ve üst çubuk metinleri */
.pub-top-inner { height: auto; min-height: 72px; padding-top: .5rem; padding-bottom: .5rem; }
.pub-site-logo { height: 52px; width: auto; max-width: 160px; object-fit: contain; }
.pub-slogan { font-family: "Source Serif 4", Georgia, serif; font-style: italic; font-size: .82rem; color: var(--aic-deep); }
.pub-credit { display: inline-flex; align-items: center; gap: .35rem; margin-top: .1rem; }
.pub-credit .a4-mark { width: 16px; height: 16px; font-size: .45rem; border-radius: 4px; }
.brand-logo { height: 36px; width: auto; max-width: 120px; object-fit: contain; }
.brand-logo.big { height: 72px; max-width: 200px; background: #fff; border-radius: 14px; padding: 6px; }

/* Birim seçimi (bant içinde düğmeler) */
.pub-units { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1.1rem; justify-content: center; }
.pub-units a { display: inline-flex; align-items: center; gap: .45rem; padding: .45rem 1rem; border-radius: 999px; font-weight: 600;
  font-size: .9rem; color: #fff; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.25); text-decoration: none; }
.pub-units a:hover { background: rgba(255,255,255,.24); }
.pub-units a.on { background: #fff; color: var(--hero, #A51C30); border-color: #fff; }
/* Boş sekme */
.pub-empty-panel { text-align: center; padding: 3rem 1.5rem !important; }
.pub-empty-panel > i { font-size: 2.6rem; color: var(--hero, #A51C30); opacity: .8; }
.pub-empty-panel h2 { font-family: "Source Serif 4", Georgia, serif; font-size: 1.3rem; margin: .8rem 0 .4rem; color: var(--aic-graphite); }
.pub-empty-panel p { color: var(--aic-gray); margin: 0; }
.pub-empty-note { color: var(--aic-gray); padding: .5rem 0; }
/* Yazdırmada renkler (ARTCODEAS işareti, başlıklar) tarayıcı ayarından bağımsız basılsın */
.a4-mark, .a4-credit, .exam-print-grid thead th, .timetable thead th, .tt-block, .ep-item, .b-tag, .b-elective {
  -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
@media print { * { -webkit-print-color-adjust: exact; print-color-adjust: exact; } }

/* Alt bilgi: sayfanın en altında sabit; solda ARTCODEAS, sağda kurum sitesi ve e-posta */
/* Genişlik eskisi gibi (normal akış); alt bilgi kısa sayfalarda da ekranın altında kalır */
body.public .public-content { min-height: calc(100vh - 72px); display: flex; flex-direction: column; }
body.public .public-content > * { width: 100%; }
body.public .pub-container { width: 100%; }
body.public .pub-footer { margin-top: auto; padding: .9rem 0; text-align: left; }
.pub-footer-bar { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.pub-footer-aic .a4-mark { width: 30px; height: 30px; font-size: .62rem; border-radius: 7px; }
.pub-footer-note { color: var(--aic-gray); font-size: .85rem; }
.pub-footer-links { margin-left: auto; display: flex; gap: 1.2rem; flex-wrap: wrap; }
.pub-footer-links a { display: inline-flex; align-items: center; gap: .4rem; color: var(--aic-graphite); font-size: .88rem; text-decoration: none; }
.pub-footer-links a:hover { color: var(--aic-crimson); }
/* Eski görünüm: bant içeriği ortada; alt bilgi tek satır */
.pub-hero .pub-hero-row { justify-content: center; text-align: left; }
.pub-hero .pub-tabs { justify-content: center; }
.pub-footer .pub-container.pub-footer-bar { flex-direction: row; align-items: center; justify-content: space-between; gap: 1rem; }

/* ===== Bir dersin aynı saatteki grupları tek blokta (toplu dersler satırı aşağı sarkıtmasın) ===== */
.tt-bundle { --c: #2B2F33; --bg: #F4F5F7; }
.tt-bundle .b-class { display: block; font-size: .7rem; color: #374151; }
.b-count { margin-left: .25rem; font-size: .62rem; font-weight: 600; color: var(--aic-gray); }
.b-groups { list-style: none; margin: .15rem 0 0; padding: 0; display: grid; gap: 1px; }
.b-group { position: relative; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .35rem; padding: .05rem .3rem;
  border-left: 3px solid var(--c); background: #fff; border-radius: 2px; font-size: .68rem; line-height: 1.2; }
.b-group[draggable="true"] { cursor: grab; }
.b-group.dragging { opacity: .45; }
.g-no { font-weight: 700; color: var(--c); }
.g-ins { font-weight: 600; color: var(--aic-graphite); }
.g-room { color: #4B5563; }
.g-name { color: #1F2937; }
.g-pin { font-size: .6rem; }
.g-edit { margin-left: auto; font-size: .62rem; color: var(--aic-gray); opacity: 0; transition: opacity .15s; }
.b-group:hover .g-edit { opacity: 1; }
/* Aynı hücredeki seçmeli / paralel derslerde uzun ad en fazla iki satır (tamamı üzerine gelince görünür) */
.tt-cell.multi .tt-block .b-name { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* Öğretim üyesi/elemanı rengi (liste) ve site logosu (alt bilgi) */
.ins-swatch { display: inline-block; width: 18px; height: 18px; border-radius: 4px; border: 1px solid rgba(0, 0, 0, .15); vertical-align: middle; }
.form-control-color { max-width: 4rem; }
.a4-site-logo { height: 7mm; width: auto; max-width: 30mm; object-fit: contain; }
.pub-footer-logo { height: 34px; width: auto; max-width: 150px; object-fit: contain; display: block; }

/* ===== Çıktılar: tek tip yatay A4 =====
   Her sayfa 297 × 210 mm; başlık ve alt bilgi sabit, tablo kalan alanı doldurur (çok doluysa küçültülür).
   Ekran önizlemesi ile yazıcı aynı ölçüleri kullanır; böylece önizlemede görülen, kâğıda çıkan olur. */
body.print-doc .a4-page { box-sizing: border-box; width: 297mm; height: 210mm; min-height: 0; padding: 9mm 10mm;
  overflow: hidden; display: flex; flex-direction: column; }
body.print-doc .a4-head { flex: 0 0 auto; padding-bottom: 3mm; margin-bottom: 3mm; }
body.print-doc .a4-body { flex: 1 1 auto; min-height: 0; overflow: hidden; }
body.print-doc .a4-fit { width: 100%; }
body.print-doc .a4-foot { flex: 0 0 auto; margin-top: 3mm; padding-top: 2mm; }
body.print-doc .a4-page .tt-wrap { overflow: visible; }
body.print-doc .a4-page .timetable { min-width: 0; width: 100%; }
body.print-doc .a4-page .tt-corner { width: 22mm; }
body.print-doc .a4-page .tt-day { font-size: 8pt; padding: 1mm 1.5mm; }
body.print-doc .a4-page .tt-slot { padding: .8mm .5mm; }
body.print-doc .a4-page .tt-time-only { font-size: 7pt; }
body.print-doc .a4-page .tt-cell { height: auto; padding: 2px; }
body.print-doc .a4-page .tt-block { min-height: 0; font-size: 7.5pt !important; padding: 1.2pt 3pt !important; }
body.print-doc .a4-page .tt-block .b-meta { font-size: 7pt !important; }
body.print-doc .a4-page .tt-cell.multi .tt-block .b-name { font-size: 7.5pt !important; }
body.print-doc .a4-page .b-group { font-size: 6.8pt; }
body.print-doc .a4-page .exam-print-grid { font-size: 7.5pt; }
@media print {
  body.print-doc .a4-page { width: 297mm; height: 209.5mm; margin: 0; padding: 9mm 10mm; box-shadow: none;
    page-break-after: always; break-after: page; }
  body.print-doc .a4-page:last-of-type { page-break-after: auto; break-after: auto; }
  body.print-doc .a4-page .tt-cell { height: auto; }
}

/* ===== Renksiz çıktı (siyah-beyaz yazıcılar için): bloklar beyaz zemin, siyah çizgi ve yazı ===== */
.seg-print a { color: #fff; opacity: .7; }
.seg-print { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .25); }
.seg-print a.on { opacity: 1; }
body.print-mono .tt-block, body.print-mono .ep-item, body.print-mono .tt-bundle, body.print-mono .b-group {
  --c: #1F1F1F !important; --bg: #FFFFFF !important; background: #fff !important; background-image: none !important; }
body.print-mono .tt-block, body.print-mono .ep-item { box-shadow: inset 0 0 0 1px #9CA3AF; }
body.print-mono .b-code, body.print-mono .g-no, body.print-mono .ep-code, body.print-mono .b-name, body.print-mono .b-meta,
body.print-mono .g-room, body.print-mono .ep-meta { color: #000 !important; }
body.print-mono .b-tag, body.print-mono .b-elective, body.print-mono .b-unit { background: #fff !important; color: #000 !important;
  border: 1px solid #000; }
body.print-mono .timetable thead th, body.print-mono .tt-corner, body.print-mono .tt-slot, body.print-mono .exam-print-grid thead th {
  background: #fff !important; color: #000 !important; border-bottom: 1.5px solid #000 !important; }
body.print-mono .tt-day, body.print-mono .ep-time { background: #fff !important; color: #000 !important; }
body.print-mono .tt-cell.empty, body.print-mono .tt-cell.staggered { background: #fff !important; background-image: none !important; }
body.print-mono .a4-head { border-bottom-color: #000; }
body.print-mono .a4-title strong, body.print-mono .a4-edu { color: #000; }
body.print-mono .a4-mark { background: #000 !important; }
body.print-mono .a4-site-logo, body.print-mono .a4-logo { filter: grayscale(1); }

/* Alternatif yerler listesi */
.alt-list li { padding: .45rem 0; border-bottom: 1px solid var(--aic-line, #E5E7EB); }
.alt-list li:last-child { border-bottom: 0; }

/* Giriş ve şifre ekranları: kamuya açık alanla aynı renk (Site ayarları > ana renk) ve aynı düzen */
.login-page { background: #F4F4F2; }
.login-side { background: var(--hero, #A51C30); position: relative; overflow: hidden; }
.login-side::before { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 92% -10%, rgba(255,255,255,.16) 0, rgba(255,255,255,0) 38%),
              linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.18) 100%); }
.login-side > * { position: relative; }
.login-side .brand-logo.big { width: 72px; height: 72px; object-fit: contain; background: #fff; border-radius: 14px; padding: 6px;
  box-shadow: 0 4px 14px rgba(0,0,0,.15); }
.login-side .brand-mark { color: var(--hero, #A51C30); box-shadow: 0 4px 14px rgba(0,0,0,.15); }
.login-side .mini-grid td.f4 { background: rgba(255,255,255,.7); }
.login-brand { display: inline-block; width: fit-content; }
.login-card { border-top: 4px solid var(--hero, #A51C30); }
.login-card h2 { color: var(--hero, #A51C30); }
.login-card .btn-primary { background: var(--hero, #A51C30); border-color: var(--hero, #A51C30); }
.login-card .btn-primary:hover, .login-card .btn-primary:focus { filter: brightness(.92); }
.login-card a:not(.btn) { color: var(--hero, #A51C30); }

/* ARTCODEAS işareti: kare kutu yerine yazıya göre genişleyen kutu (logo yüklenmemişse görünür) */
.brand-mark, .brand-mark.big, .a4-mark, .pub-credit .a4-mark, .pub-footer-aic .a4-mark {
  width: auto; min-width: 0; padding-left: .45em; padding-right: .45em; letter-spacing: .02em; white-space: nowrap; }
.brand-mark { font-size: .72rem; }
.brand-mark.big { font-size: 1rem; padding-left: .6em; padding-right: .6em; }
.a4-mark { font-size: 2.2mm; padding-left: 1.2mm; padding-right: 1.2mm; }

/* Kayarak çakışan seçmeli bloğunda her dersin kendi saati */
.g-time { font-variant-numeric: tabular-nums; color: #374151; font-weight: 600; }
.tt-cell.staggered > .tt-bundle { margin: 0 3px; }

/* KVKK aydınlatma metni */
.privacy-text p { line-height: 1.6; margin-bottom: .9rem; text-align: justify; }
.privacy-text p:last-child { margin-bottom: 0; }
.privacy-scroll { max-height: 60vh; overflow-y: auto; }

/* Öğretim üyeleri listesi: Lisans / Lisansüstü rozeti (ders programındaki etiketle aynı görünüm) */
.prog-badge { display: inline-block; font-size: .72rem; font-weight: 600; padding: .1rem .45rem; border-radius: 999px;
  border: 1px solid currentColor; white-space: nowrap; }
.prog-lisans { color: #1D4ED8; background: #EFF6FF; }
.prog-lisansustu { color: #7C2D12; background: #FFF7ED; }

.tt-programs { font-size: .85rem; margin: 0 0 .5rem; display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
body.print-doc .tt-programs { font-size: 7.5pt; margin-bottom: 1mm; }

/* Yazdırma: ders olan gün satırı uzamasın – blok içeriği sıkı satır aralığıyla, hücre üstten hizalı */
body.print-doc .a4-page .tt-cell { vertical-align: top; }
body.print-doc .a4-page .tt-block { line-height: 1.12; height: auto !important; }
body.print-doc .a4-page .tt-block .b-code,
body.print-doc .a4-page .tt-block .b-name,
body.print-doc .a4-page .tt-block .b-meta { margin: 0 !important; line-height: 1.12; }
body.print-doc .a4-page .b-group { line-height: 1.12; }

/* Seçmeli dersler bloğu: satırlar hizalı sütunlarda.
   Sütun 1: ders kodu (tüm satırlarda aynı genişlik) · (saatleri farklıysa) sütun 2: saat · son sütun: üstte dersin
   adı, altında öğretim üyesi ve derslik. Böylece kısa / uzun adlar öğretim üyesi bilgisini kaydırmaz. */
.b-groups.elective { grid-template-columns: max-content minmax(0, 1fr); column-gap: .45rem; }
.b-groups.elective.timed { grid-template-columns: max-content max-content minmax(0, 1fr); }
.b-groups.elective > .b-group { display: grid; grid-column: 1 / -1; grid-template-columns: subgrid;
  column-gap: .45rem; align-items: baseline; padding-right: 1.1rem; }
.b-groups.elective > .b-group > .g-no { grid-column: 1; grid-row: 1 / span 2; align-self: start; }
.b-groups.elective.timed > .b-group > .g-time { grid-column: 2; grid-row: 1 / span 2; align-self: start; }
.b-groups.elective > .b-group > .g-name { grid-column: -2 / -1; grid-row: 1; font-weight: 600; min-width: 0; }
.b-groups.elective > .b-group > .g-meta { grid-column: -2 / -1; grid-row: 2; display: flex; flex-wrap: wrap;
  gap: 0 .4rem; min-width: 0; font-size: .95em; }
.b-groups.elective > .b-group > .g-meta:empty { display: none; }
.b-groups.elective > .b-group > .g-pin { position: absolute; right: .25rem; top: .15rem; }
.b-groups.elective > .b-group > .g-edit { position: absolute; right: .25rem; bottom: .1rem; margin: 0; }
/* subgrid desteklemeyen eski tarayıcılarda da hizalı kalsın */
@supports not (grid-template-columns: subgrid) {
  .b-groups.elective > .b-group { grid-template-columns: 4.6rem minmax(0, 1fr); }
  .b-groups.elective.timed > .b-group { grid-template-columns: 4.6rem 5.6rem minmax(0, 1fr); }
}
