
/* Tek uygulama katmanı: okuldan bağımsız güvenli logo ve başlangıç düzeni */
html.is-booting body{visibility:hidden}
html.config-error body{visibility:visible}
.school-config-error{min-height:100vh;display:grid;place-items:center;padding:32px;background:#102d30;color:#fff;font-family:Inter,"Segoe UI",Arial,sans-serif;text-align:center}
.school-config-error div{max-width:560px;padding:32px;border:1px solid rgba(255,255,255,.16);border-radius:18px;background:rgba(0,0,0,.18)}
.school-config-error h1{margin:0 0 12px;font-size:28px}.school-config-error p{margin:0;color:#c9d5d3;line-height:1.6}
.logo-lockup{display:block!important;position:relative!important;overflow:visible!important}
.logo-lockup .school-logo,
.logo-lockup .theme-logo,
.login-logo .school-logo,
.student-logo .school-logo,
.brand .school-logo,
.sidebar-logo .school-logo{
  position:absolute!important;inset:0!important;left:0!important;top:0!important;
  width:100%!important;height:100%!important;max-width:100%!important;
  object-fit:contain!important;object-position:center!important;
  transform:none!important;filter:none!important;margin:0!important;padding:0!important;
}
.theme-logo-light{display:none!important}
html[data-theme="light"] .theme-logo-dark{display:none!important}
html[data-theme="light"] .theme-logo-light{display:block!important}
html[data-theme="dark"] .theme-logo-dark,html[data-theme="standard"] .theme-logo-dark{display:block!important}
html[data-theme="dark"] .theme-logo-light,html[data-theme="standard"] .theme-logo-light{display:none!important}
.login-logo,.student-logo{filter:none!important}
.brand img,.sidebar-logo img{filter:none!important}
/* Yatay logolar için sabit, taşmayan alanlar */
.login-logo{display:block!important;height:128px!important;width:min(520px,92%)!important;margin-left:auto!important;margin-right:auto!important}
.student-logo{height:118px!important;width:min(470px,86vw)!important}
.brand .logo-lockup{display:block!important;width:240px!important;height:58px!important}
.sidebar-logo{height:58px!important;width:160px!important}
@media(max-width:640px){
  .login-logo{height:92px!important;width:min(360px,88vw)!important}
  .student-logo{height:90px!important;width:min(340px,86vw)!important}
  .brand .logo-lockup{width:170px!important;height:48px!important}
}
/* Gines'te olmayan standart tema düğmesi JS tarafından gizlenir */
.theme-switch button[hidden]{display:none!important}
#loginMessage{min-height:1.25rem;margin:.65rem 0 0;color:#b42318;font-weight:700;text-align:center}
#loginMessage.is-success{color:#16794a}
.calendar-only-input{cursor:pointer}
.calendar-only-input::-webkit-calendar-picker-indicator{cursor:pointer}
.primary-button:disabled,.teacher-save-button:disabled{opacity:.58;cursor:not-allowed;filter:saturate(.55)}
.teacher-appointment-list article>div{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.teacher-appointment-list button[data-appointment-action]{min-height:38px;padding:0 15px;border:1px solid transparent;border-radius:10px;font:700 12px/1 Inter,"Segoe UI",sans-serif;letter-spacing:.2px;cursor:pointer;transition:transform .18s,box-shadow .18s,opacity .18s}
.teacher-appointment-list button[data-appointment-action]:hover{transform:translateY(-1px)}
.teacher-appointment-list button[data-appointment-action="onaylandi"],.teacher-appointment-list button[data-appointment-action="tamamlandi"]{background:#e3f4e9;border-color:#b8dfc6;color:#247548;box-shadow:0 5px 13px rgba(36,117,72,.13)}
.teacher-appointment-list button[data-appointment-action="reddedildi"],.teacher-appointment-list button[data-appointment-action="iptal_edildi"]{background:#fde8eb;border-color:#f3bcc3;color:#bd3042;box-shadow:0 5px 13px rgba(189,48,66,.12)}
.teacher-appointment-list button[data-appointment-action]:disabled{opacity:.5;cursor:wait;transform:none;box-shadow:none}
.teacher-download-actions{display:flex;justify-content:flex-end;margin-top:18px}
.teacher-download-button{width:auto;display:inline-flex;align-items:center;justify-content:center;gap:9px}
.teacher-download-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.notification-button{position:relative}
.notification-button .notification-dot{position:absolute;right:-5px;top:-6px;min-width:20px;height:20px;padding:0 5px;display:grid;place-items:center;border:2px solid #fff;border-radius:999px;background:#d8384e;color:#fff;font:800 10px/1 Inter,"Segoe UI",sans-serif;box-shadow:0 4px 12px rgba(157,25,45,.35)}
.notification-button .notification-dot[hidden]{display:none!important}
.realtime-notification-stack{position:fixed;z-index:10020;right:22px;top:82px;width:min(390px,calc(100vw - 28px));display:grid;gap:10px;pointer-events:none}
.realtime-notification{width:100%;display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:center;padding:14px 16px;border:1px solid rgba(255,255,255,.22);border-radius:15px;background:#123f43;color:#fff;text-align:left;box-shadow:0 18px 45px rgba(6,30,34,.3);cursor:pointer;pointer-events:auto;opacity:0;transform:translateX(28px);transition:opacity .22s ease,transform .22s ease}
.realtime-notification.is-visible{opacity:1;transform:translateX(0)}
.realtime-notification-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:var(--school-accent);color:#fff}
.realtime-notification-icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2}
.realtime-notification b,.realtime-notification small{display:block}.realtime-notification b{margin-bottom:4px;font-size:14px}.realtime-notification small{color:#d7e4e3;font-size:12px;line-height:1.4}
@media(max-width:640px){.realtime-notification-stack{top:72px;right:14px}.realtime-notification{padding:12px}}
@media(max-width:700px){.teacher-appointment-list article>div{width:100%}.teacher-appointment-list button[data-appointment-action]{flex:1}}
.login-button[disabled]{opacity:.65;cursor:wait}
.field-error{display:block;min-height:1.2em;color:#ffb4ab;font-size:12px;font-weight:700;letter-spacing:0}

/* Ortak kayıt başarı animasyonu: masaüstünde güçlü, mobilde taşmadan görünür. */
.success-overlay .success-checkmark-box{gap:30px;transform:scale(1);animation:successBoxPop .35s ease-out both}
.success-overlay .animated-checkmark{width:170px!important;height:170px!important;stroke-width:5!important}
.success-overlay .success-text{font-size:34px!important;font-weight:800;line-height:1.25;max-width:min(720px,86vw)}
@keyframes successBoxPop{from{transform:scale(.72);opacity:0}to{transform:scale(1);opacity:1}}
@media(max-width:640px){
  .success-overlay .success-checkmark-box{gap:22px}
  .success-overlay .animated-checkmark{width:135px!important;height:135px!important}
  .success-overlay .success-text{font-size:26px!important;max-width:88vw}
}
/* Meal menu: shared daily/weekly database views */
html[data-school="hacegan"]{--school-accent:#c9a646;--school-accent-strong:#806015;--school-accent-soft:#f1ead7}
html[data-school="gines"]{--school-accent:#0ea7e9;--school-accent-strong:#006ca5;--school-accent-soft:#dfeff6}
.meal-mode-switch{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid rgba(255,255,255,.16);border-radius:14px;background:rgba(0,0,0,.12)}
.meal-toolbar{display:flex;align-items:center;gap:10px}
.meal-pdf-button{width:46px;height:46px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.16);border-radius:13px;background:rgba(0,0,0,.12);color:inherit;cursor:pointer;transition:.2s}
.meal-pdf-button:hover{background:var(--gold);color:#073f45}
.meal-pdf-button svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.grade-pdf-button{width:46px;height:46px;display:grid!important;place-items:center;padding:0!important;border:1px solid rgba(255,255,255,.16)!important;border-radius:12px!important;background:rgba(255,255,255,.08)!important;color:inherit!important;cursor:pointer}
.grade-pdf-button:hover{background:var(--gold)!important;color:#073f45!important}
.grade-pdf-button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.meal-mode-switch button{width:46px;height:42px;display:grid;place-items:center;border:0;border-radius:10px;background:transparent;color:inherit;opacity:.55;cursor:pointer;transition:.2s}
.meal-mode-switch button:hover,.meal-mode-switch button.is-active{background:var(--gold);color:#073f45;opacity:1}
.meal-mode-switch svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.meal-day-tabs{margin-bottom:28px}
.meal-list-panel{width:min(820px,100%);margin:0 auto;border:1px solid rgba(255,255,255,.14);border-radius:18px;overflow:hidden;background:rgba(3,48,52,.42)}
.meal-list-panel>header{display:flex;align-items:center;gap:18px;padding:22px 26px;border-bottom:1px solid rgba(255,255,255,.12)}
.meal-panel-icon{width:48px;height:48px;display:grid;place-items:center;flex:0 0 48px;border-radius:12px;background:rgba(255,255,255,.1);color:var(--gold)}
.meal-panel-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.meal-list-panel header small{display:block;color:var(--gold);font-size:11px;font-weight:800;letter-spacing:1.5px}
.meal-list-panel header h3{margin:5px 0 0;font-size:24px}
.meal-vertical-list{display:grid}
.meal-vertical-list article{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;min-height:72px;padding:0 26px;border-bottom:1px solid rgba(255,255,255,.09)}
.meal-vertical-list article:last-child{border-bottom:0}
.meal-vertical-list article>span{color:var(--gold);font-weight:800;letter-spacing:1px}
.meal-vertical-list article p{margin:0;font-family:Georgia,serif;font-size:20px;line-height:1.45;color:inherit}
.meal-empty{margin:0;padding:28px;color:inherit;opacity:.75}
.weekly-meal-list{width:min(920px,100%);margin:24px auto 0;display:grid;gap:14px}
.weekly-meal-day{display:grid;grid-template-columns:210px minmax(0,1fr);border:1px solid rgba(255,255,255,.14);border-radius:16px;overflow:hidden;background:rgba(3,48,52,.42)}
.weekly-meal-day header{display:flex;align-items:center;gap:16px;padding:22px 24px;background:rgba(255,255,255,.06)}
.weekly-meal-day header span{color:var(--gold);font-size:12px;font-weight:800;letter-spacing:1px}
.weekly-meal-day header h3{margin:0;font-size:21px}
.weekly-meal-day>div{display:grid;padding:12px 24px}
.weekly-meal-day p{margin:0;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.08);font-family:Georgia,serif;font-size:17px;line-height:1.4}
.weekly-meal-day p:last-child{border-bottom:0}
@media(max-width:700px){.meal-mode-switch{margin-top:14px}.meal-day-tabs{justify-content:flex-start;overflow-x:auto}.weekly-meal-day{grid-template-columns:1fr}.weekly-meal-day header{padding:16px 18px}.meal-vertical-list article{padding:0 18px}.meal-vertical-list article p{font-size:18px}}
html[data-theme="light"] .meal-mode-switch{background:#fff;border-color:#cbd8da;color:#526a6e}
html[data-theme="light"] .meal-pdf-button{background:#fff;border-color:#cbd8da;color:var(--school-accent-strong)}
html[data-theme="light"] .meal-pdf-button:hover{background:var(--school-accent);color:#fff}
html[data-theme="light"] .grade-pdf-button{background:#fff!important;border-color:#cbd8da!important;color:var(--school-accent-strong)!important}
html[data-theme="light"] .grade-pdf-button:hover{background:var(--school-accent)!important;color:#fff!important}
html[data-theme="light"] .meal-mode-switch button:hover,html[data-theme="light"] .meal-mode-switch button.is-active{background:var(--school-accent);color:#fff}
html[data-theme="light"] .meal-list-panel,html[data-theme="light"] .weekly-meal-day{background:#fff;border-color:#ccd9da;color:#173d43;box-shadow:0 14px 34px rgba(25,61,66,.08)}
html[data-theme="light"] .meal-list-panel>header,html[data-theme="light"] .meal-vertical-list article,html[data-theme="light"] .weekly-meal-day p{border-color:#e1e9ea}
html[data-theme="light"] .meal-list-panel>header,html[data-theme="light"] .weekly-meal-day header{background:#f3f7f7}
html[data-theme="light"] .meal-panel-icon{background:var(--school-accent-soft);color:var(--school-accent-strong)}
html[data-theme="light"] .meal-list-panel header small,html[data-theme="light"] .meal-vertical-list article>span,html[data-theme="light"] .weekly-meal-day header span{color:var(--school-accent-strong)}
html[data-theme="light"] .meal-day-tabs button.is-active{color:var(--school-accent-strong);border-color:var(--school-accent)}
@media(min-width:701px){
  .sidebar{min-height:0}
  .sidebar nav{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding-right:7px;scrollbar-width:thin;scrollbar-color:var(--school-accent) rgba(255,255,255,.07)}
  .sidebar nav::-webkit-scrollbar{width:6px}
  .sidebar nav::-webkit-scrollbar-track{background:rgba(255,255,255,.07);border-radius:999px}
  .sidebar nav::-webkit-scrollbar-thumb{background:var(--school-accent);border-radius:999px}
  .sidebar-logo{flex:0 0 auto}
}
/* Absence: parent-facing compact overview and absent-day list */
.absence-heading{margin-bottom:26px}
.absence-summary{display:grid;grid-template-columns:62px minmax(0,1fr) auto;align-items:center;gap:20px;padding:24px 26px;border:1px solid rgba(255,255,255,.14);border-radius:20px;background:rgba(3,48,52,.42)}
.absence-summary-icon{width:62px;height:62px;display:grid;place-items:center;border-radius:16px;background:rgba(201,67,81,.16);color:#ef7b86}
.absence-summary-icon svg{width:31px;height:31px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.absence-summary small,.absence-records-panel header small{display:block;color:var(--school-accent);font-size:11px;font-weight:900;letter-spacing:1.45px;text-transform:uppercase}
.absence-summary h3{margin:5px 0 4px;font-size:25px;line-height:1.2}
.absence-summary p{margin:0;opacity:.7}
.absence-summary>strong{display:flex;align-items:baseline;gap:7px;color:#ef7b86;font-size:46px;line-height:1;font-weight:700}
.absence-summary>strong small{color:inherit;font-size:12px;letter-spacing:0;text-transform:none}
.absence-records-panel{margin-top:22px;border:1px solid rgba(255,255,255,.14);border-radius:20px;overflow:hidden;background:rgba(3,48,52,.42)}
.absence-records-panel>header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 26px;border-bottom:1px solid rgba(255,255,255,.11)}
.absence-records-panel header h3{margin:5px 0 0;font-size:24px}
.absence-download{width:48px;height:48px;display:grid;place-items:center;flex:0 0 48px;border:1px solid rgba(255,255,255,.18);border-radius:13px;background:rgba(255,255,255,.06);color:var(--school-accent);cursor:pointer;transition:.2s}
.absence-download:hover{background:var(--school-accent);color:#fff}
.absence-download svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.absence-record-list{display:grid}
.absence-record{display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:18px;min-height:82px;padding:14px 26px;border-bottom:1px solid rgba(255,255,255,.09)}
.absence-record:last-child{border-bottom:0}
.absence-record-index{color:var(--school-accent);font-size:14px;font-weight:900;letter-spacing:1px}
.absence-record div small{display:block;margin-bottom:5px;opacity:.62}
.absence-record div strong{font-size:18px}
.absence-record>b{display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border-radius:999px;background:#fff0f1;color:#c52f42;font-size:12px;font-weight:900}
.absence-record>b i{width:7px;height:7px;border-radius:50%;background:#d23e4d}
.absence-empty{margin:0;padding:32px;text-align:center;opacity:.72}

/* Appointment states must carry their semantic color in every school/theme. */
.appointment-status{display:inline-flex!important;align-items:center;padding:9px 14px!important;border-radius:0!important;font-weight:800!important}
.appointment-status.status-reddedildi,.appointment-status.status-iptal_edildi{background:#fde8ea!important;color:#c52f42!important}
.appointment-status.status-onaylandi,.appointment-status.status-tamamlandi{background:#e4f3e9!important;color:#287a4b!important}
.appointment-status.status-bekliyor{background:#fff2cf!important;color:#946400!important}

html[data-theme="light"] .absence-summary,html[data-theme="light"] .absence-records-panel{background:#fff;border-color:#d2dcdd;color:#173d43;box-shadow:0 14px 34px rgba(25,61,66,.08)}
html[data-theme="light"] .absence-summary-icon{background:#fff0f1;color:#c94351}
html[data-theme="light"] .absence-summary>strong{color:#c94351}
html[data-theme="light"] .absence-records-panel>header,html[data-theme="light"] .absence-record{border-color:#e2e9ea}
html[data-theme="light"] .absence-download{background:#fff;border-color:#ccd8da;color:var(--school-accent-strong)}
html[data-theme="light"] .absence-download:hover{background:var(--school-accent);color:#fff}

@media(max-width:700px){
  .absence-summary{grid-template-columns:52px minmax(0,1fr);gap:15px;padding:19px}
  .absence-summary-icon{width:52px;height:52px;border-radius:14px}
  .absence-summary>strong{grid-column:1/-1;justify-content:flex-end;margin-top:-4px;font-size:38px}
  .absence-records-panel>header{padding:18px}
  .absence-record{grid-template-columns:36px minmax(0,1fr);gap:12px;padding:15px 18px}
  .absence-record>b{grid-column:2;justify-self:start}
}

/* PWA controls and final shared mobile safety layer for both school themes. */
.pwa-actions{width:min(820px,100%);margin:0 0 22px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:18px;border:1px solid rgba(255,255,255,.16);border-radius:16px;background:rgba(3,48,52,.42)}
.pwa-actions b,.pwa-actions small{display:block}.pwa-actions small{margin-top:5px;opacity:.72;line-height:1.45}
.pwa-actions button{min-height:44px;padding:0 16px;border:1px solid currentColor;border-radius:11px;background:transparent;color:inherit;font-weight:800}
.pwa-actions button:hover{background:var(--school-accent);border-color:var(--school-accent);color:#fff}.pwa-actions button:disabled{opacity:.55}
.pwa-message{grid-column:1/-1;min-height:1.2em;margin:0;font-size:13px;font-weight:700}
html[data-theme="light"] .pwa-actions{background:#fff;border-color:#d2dcdd;color:#173d43;box-shadow:0 14px 34px rgba(25,61,66,.08)}

@media(max-width:640px){
  html,body,#app{width:100%;max-width:100%;overflow-x:hidden}
  body{min-width:320px}
  .screen{min-height:100dvh;height:100dvh}
  .login-card,.register-card,.student-picker{width:calc(100% - 28px);max-width:520px}
  .login-card{padding-top:max(18px,env(safe-area-inset-top))}
  .login-logo{width:min(300px,78vw)!important;height:76px!important;margin-bottom:8px!important}
  .student-logo{width:min(300px,78vw)!important;height:78px!important;margin:clamp(24px,6vh,54px) auto!important}
  .brand{min-width:0!important;width:clamp(160px,40vw,205px)!important;height:58px!important;overflow:hidden!important}
  .brand .logo-lockup{width:100%!important;height:54px!important;overflow:hidden!important}
  .topbar{padding-left:max(8px,env(safe-area-inset-left))!important;padding-right:max(8px,env(safe-area-inset-right))!important}
  .topbar button{touch-action:manipulation}
  .mobile-menu-button,.account-actions>.icon-button,.student-switcher-button,.top-actions .icon-button{min-width:42px;min-height:42px}
  .content-scroll{width:100%;max-width:100%;overscroll-behavior:contain;padding-bottom:calc(78px + env(safe-area-inset-bottom))!important}
  .view{width:100%;max-width:100%;padding-left:12px!important;padding-right:12px!important}
  .day-tabs{scrollbar-width:none;overscroll-behavior-inline:contain}.day-tabs::-webkit-scrollbar{display:none}
  .table-card,.schedule-card,.form-card,.teacher-report,.student-profile-hero,.health-dashboard,.task-board{max-width:100%;min-width:0}
  img{max-width:100%;height:auto}
  input,textarea,select{font-size:16px!important}
  .pwa-actions{grid-template-columns:1fr 1fr;padding:16px;gap:10px}
  .pwa-actions>div{grid-column:1/-1}.pwa-actions button{width:100%;padding:0 10px}
}

@media(max-width:380px){
  .brand{width:145px!important;height:52px!important}.brand .logo-lockup{height:48px!important}
  .topbar{column-gap:3px!important}.theme-switch{transform:scale(.92)}
  .login-card h1{font-size:24px!important}.view{padding-left:9px!important;padding-right:9px!important}
}

@media(display-mode:standalone){
  .topbar{padding-top:max(5px,env(safe-area-inset-top))!important}
}

/* 2026-07-22 · Canlı veri ve boş gelişim raporu görünümü */
.portal-empty-state{width:min(760px,100%);margin:28px auto;padding:42px 26px;border:1px solid rgba(255,255,255,.2);border-radius:20px;background:rgba(255,255,255,.08);text-align:center;color:#eef6f4}
.portal-empty-state>span{width:64px;height:64px;margin:0 auto 18px;display:grid;place-items:center;border-radius:18px;background:rgba(255,255,255,.12);color:var(--school-accent)}
.portal-empty-state svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:2}
.portal-empty-state h3{margin:0 0 9px;font-size:21px}.portal-empty-state p{max-width:560px;margin:0 auto;color:#c9d8d5;line-height:1.6}
html[data-theme="light"] .portal-empty-state{background:#fff;color:#173d43;border-color:#ded8ca;box-shadow:0 15px 35px rgba(25,53,53,.08)}
html[data-theme="light"] .portal-empty-state p{color:#6f7d7b}

.message-compose{display:grid!important;grid-template-columns:minmax(0,1fr) 60px!important;gap:10px!important;align-items:center!important;padding:16px!important}.message-compose input{min-width:0;height:48px!important;border-radius:12px!important}.message-compose button{width:60px!important;height:48px!important;border-radius:12px!important}.teacher-attendance-row .teacher-status-buttons button:not(.is-selected){opacity:.55}.teacher-attendance-row .teacher-status-buttons button.is-selected{opacity:1}
