/* ==========================================================================
   GDS-DMS :: styles_theme_engine.css
   Sınırsız renk, pembe/lacivert tema, yazı tipi, ölçek, köşe yumuşaklığı,
   geçiş yumuşaklığı ve cam (glassmorphism) değişkenleri.
   Değerler theme_engine.js tarafından canlı olarak güncellenir.
   ========================================================================== */
:root {
  /* RGB üçlüleri (Tailwind alfa desteği için) — varsayılan: Kurumsal Lacivert */
  --c-bg: 9 24 54;
  --c-card: 17 38 82;
  --c-card2: 24 49 101;
  --c-accent: 59 130 246;
  --c-onaccent: 255 255 255;
  --c-text: 232 238 252;
  --c-muted: 148 166 204;
  --c-line: 44 68 120;
  --c-ok: 16 185 129;
  --c-warn: 245 158 11;
  --c-bad: 239 68 68;

  --font: 'Inter', system-ui, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
  --scale: 1;
  --radius: 14px;
  --radius-sm: 9px;
  --radius-lg: 20px;
  --speed: 220ms;
  --ease: cubic-bezier(.2, .8, .2, 1);
  --blur: 14px;
  --glass: .82;
  --shadow: 0 10px 30px -12px rgb(0 0 0 / .45);
  --bg-art-1: rgb(var(--c-accent) / .18);
  --bg-art-2: rgb(var(--c-accent) / .08);
  color-scheme: dark;
}
.logo-on-light { display: none; }
:root.gds-light .logo-on-light { display: block; }
:root.gds-light .logo-on-dark { display: none; }
:root.gds-light { color-scheme: light; --shadow: 0 10px 30px -14px rgb(15 23 42 / .22); }

html { font-size: calc(16px * var(--scale)); }
html, body, #root { height: 100%; }
body {
  margin: 0;
  font-family: var(--font);
  color: rgb(var(--c-text));
  background-color: rgb(var(--c-bg));
  background-image:
    radial-gradient(1200px 700px at 8% -10%, var(--bg-art-1), transparent 60%),
    radial-gradient(900px 600px at 105% 110%, var(--bg-art-2), transparent 60%);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  overflow: hidden;
}
* { transition-timing-function: var(--ease); }
button, input, select, textarea { font-family: inherit; color: inherit; }
::selection { background: rgb(var(--c-accent) / .35); }

/* ---------------- Kaydırma çubukları ---------------- */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: rgb(var(--c-text) / .16); border-radius: 10px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: rgb(var(--c-text) / .3); background-clip: padding-box; border: 2px solid transparent; }
::-webkit-scrollbar-track { background: transparent; }

/* ---------------- Açılış ekranı ---------------- */
.gds-boot { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; background: #071530; color: #e8eefc; font-family: Segoe UI, system-ui; }
.gds-boot-title { font-size: 28px; font-weight: 800; letter-spacing: .5px; }
.gds-boot-sub { opacity: .7; }
.gds-boot-logo { animation: gdsPulse 1.6s ease-in-out infinite; }
.gds-fatal { position: fixed; inset: auto 20px 20px 20px; padding: 16px; background: #7f1d1d; color: #fff; border-radius: 12px; font-family: Segoe UI; z-index: 9999; }
@keyframes gdsPulse { 0%,100% { transform: scale(1); opacity: 1 } 50% { transform: scale(.94); opacity: .75 } }

/* ---------------- Cam kart ---------------- */
.glass {
  background: rgb(var(--c-card) / var(--glass));
  backdrop-filter: blur(var(--blur)) saturate(1.2);
  -webkit-backdrop-filter: blur(var(--blur)) saturate(1.2);
  border: 1px solid rgb(var(--c-line) / .9);
  box-shadow: var(--shadow);
}
.glass-soft { background: rgb(var(--c-card2) / .7); border: 1px solid rgb(var(--c-line) / .7); }
.rounded-gds { border-radius: var(--radius); }

/* ---------------- Ortak kontroller ---------------- */
.gds-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
  height: 2.15rem; padding: 0 .85rem; border-radius: var(--radius-sm);
  font-size: .82rem; font-weight: 600; white-space: nowrap; cursor: pointer; user-select: none;
  border: 1px solid rgb(var(--c-line)); background: rgb(var(--c-card2) / .85); color: rgb(var(--c-text));
  transition: all var(--speed);
}
.gds-btn:hover { border-color: rgb(var(--c-accent) / .6); background: rgb(var(--c-accent) / .12); }
.gds-btn:active { transform: translateY(1px) scale(.99); }
.gds-btn:disabled { opacity: .5; cursor: not-allowed; }
.gds-btn.primary { background: rgb(var(--c-accent)); border-color: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); box-shadow: 0 6px 18px -8px rgb(var(--c-accent) / .8); }
.gds-btn.primary:hover { filter: brightness(1.08); }
.gds-btn.danger { background: rgb(var(--c-bad) / .14); border-color: rgb(var(--c-bad) / .45); color: rgb(var(--c-bad)); }
.gds-btn.ghost { background: transparent; border-color: transparent; }
.gds-btn.ghost:hover { background: rgb(var(--c-text) / .07); }
.gds-btn.sm { height: 1.8rem; padding: 0 .6rem; font-size: .76rem; }
.gds-btn.icon { width: 2.15rem; padding: 0; }
.gds-btn.sm.icon { width: 1.8rem; }

.gds-input, .gds-select, .gds-textarea {
  width: 100%; height: 2.25rem; padding: 0 .75rem; border-radius: var(--radius-sm);
  background: rgb(var(--c-bg) / .55); border: 1px solid rgb(var(--c-line)); color: rgb(var(--c-text));
  font-size: .85rem; outline: none; transition: border-color var(--speed), box-shadow var(--speed);
}
.gds-textarea { height: auto; padding: .55rem .75rem; resize: vertical; line-height: 1.45; }
.gds-input:focus, .gds-select:focus, .gds-textarea:focus { border-color: rgb(var(--c-accent)); box-shadow: 0 0 0 3px rgb(var(--c-accent) / .2); }
.gds-input::placeholder, .gds-textarea::placeholder { color: rgb(var(--c-muted) / .8); }
.gds-select option { background: rgb(var(--c-card)); color: rgb(var(--c-text)); }
.gds-label { display: block; font-size: .72rem; font-weight: 600; color: rgb(var(--c-muted)); margin: 0 0 .3rem; text-transform: uppercase; letter-spacing: .04em; }
input[type="color"].gds-color { width: 2.4rem; height: 2.4rem; border: 2px solid rgb(var(--c-line)); border-radius: var(--radius-sm); padding: 2px; background: transparent; cursor: pointer; }
input[type="range"].gds-range { width: 100%; accent-color: rgb(var(--c-accent)); }
input[type="checkbox"].gds-check { width: 1rem; height: 1rem; accent-color: rgb(var(--c-accent)); cursor: pointer; }

.gds-chip { display: inline-flex; align-items: center; gap: .3rem; padding: .12rem .5rem; border-radius: 999px; font-size: .7rem; font-weight: 600; background: rgb(var(--c-text) / .08); color: rgb(var(--c-text) / .85); white-space: nowrap; }
.gds-chip.accent { background: rgb(var(--c-accent) / .16); color: rgb(var(--c-accent)); }
.gds-chip.ok { background: rgb(var(--c-ok) / .15); color: rgb(var(--c-ok)); }
.gds-chip.warn { background: rgb(var(--c-warn) / .16); color: rgb(var(--c-warn)); }
.gds-chip.bad { background: rgb(var(--c-bad) / .15); color: rgb(var(--c-bad)); }

.gds-tabs { display: flex; gap: .25rem; padding: .2rem; border-radius: var(--radius-sm); background: rgb(var(--c-bg) / .45); border: 1px solid rgb(var(--c-line) / .7); }
.gds-tab { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: .35rem; height: 1.9rem; padding: 0 .7rem; border-radius: calc(var(--radius-sm) - 2px); font-size: .78rem; font-weight: 600; color: rgb(var(--c-muted)); cursor: pointer; transition: all var(--speed); white-space: nowrap; }
.gds-tab:hover { color: rgb(var(--c-text)); }
.gds-tab.active { background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); box-shadow: 0 4px 14px -6px rgb(var(--c-accent)); }

/* ---------------- Üst bar & çalışma alanı sekmeleri ---------------- */
.topbar { height: 3.6rem; }
.ws-tab { position: relative; display: inline-flex; align-items: center; gap: .45rem; height: 2.2rem; padding: 0 .9rem; border-radius: var(--radius-sm) var(--radius-sm) 0 0; font-size: .82rem; font-weight: 600; color: rgb(var(--c-muted)); cursor: pointer; transition: all var(--speed); border: 1px solid transparent; border-bottom: none; white-space: nowrap; }
.ws-tab:hover { color: rgb(var(--c-text)); background: rgb(var(--c-text) / .05); }
.ws-tab.active { color: rgb(var(--c-text)); background: rgb(var(--c-card) / var(--glass)); border-color: rgb(var(--c-line)); }
.ws-tab.active::after { content: ''; position: absolute; left: 12px; right: 12px; top: 0; height: 2px; border-radius: 2px; background: rgb(var(--c-accent)); }
.ws-tab.drop-target { outline: 2px dashed rgb(var(--c-accent)); }

/* ---------------- Blok (widget) çerçevesi ---------------- */
.widget { height: 100%; display: flex; flex-direction: column; overflow: hidden; border-radius: var(--radius); transition: box-shadow var(--speed), border-color var(--speed); }
.widget:hover { border-color: rgb(var(--c-accent) / .35); }
.widget-head { flex: none; height: 2.75rem; display: flex; align-items: center; gap: .5rem; padding: 0 .55rem 0 .8rem; border-bottom: 1px solid rgb(var(--c-line) / .8); }
.widget-drag { cursor: grab; }
.widget-drag:active { cursor: grabbing; }
.widget-body { flex: 1; min-height: 0; overflow: auto; }
.widget-icon { width: 1.65rem; height: 1.65rem; display: grid; place-items: center; border-radius: calc(var(--radius-sm) - 2px); background: rgb(var(--c-accent) / .16); color: rgb(var(--c-accent)); flex: none; }
.widget-max { position: fixed !important; inset: 4.5rem 1rem 1rem 1rem !important; z-index: 60; width: auto !important; height: auto !important; transform: none !important; }

/* react-grid-layout uyarlamaları */
.react-grid-item.react-grid-placeholder { background: rgb(var(--c-accent) / .35) !important; border-radius: var(--radius); opacity: .6; }
.react-grid-item > .react-resizable-handle { z-index: 5; }
.react-grid-item > .react-resizable-handle::after { border-color: rgb(var(--c-text) / .45) !important; }
.react-grid-item.resizing, .react-grid-item.react-draggable-dragging { z-index: 30; }
.react-grid-item.react-draggable-dragging .widget { box-shadow: 0 25px 50px -12px rgb(0 0 0 / .55); border-color: rgb(var(--c-accent)); }
.react-grid-layout { transition: height var(--speed); }
.react-grid-item.cssTransforms { transition-property: transform, width, height; transition-duration: var(--speed); }

/* ---------------- Menü / modal / toast ---------------- */
.gds-menu { position: absolute; z-index: 80; min-width: 14rem; padding: .35rem; border-radius: var(--radius-sm); animation: gdsPop var(--speed) var(--ease); }
.gds-menu-item { display: flex; align-items: center; gap: .55rem; width: 100%; padding: .5rem .6rem; border-radius: calc(var(--radius-sm) - 3px); font-size: .82rem; text-align: left; cursor: pointer; }
.gds-menu-item:hover { background: rgb(var(--c-accent) / .14); }
.gds-overlay { position: fixed; inset: 0; z-index: 90; background: rgb(0 0 0 / .45); backdrop-filter: blur(3px); display: flex; align-items: center; justify-content: center; padding: 1.5rem; animation: gdsFade var(--speed); }
.gds-modal { width: 100%; max-height: calc(100vh - 3rem); display: flex; flex-direction: column; border-radius: var(--radius-lg); animation: gdsPop var(--speed) var(--ease); overflow: hidden; }
.gds-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: 25rem; max-width: 100vw; z-index: 85; border-radius: var(--radius-lg) 0 0 var(--radius-lg); animation: gdsSlide var(--speed) var(--ease); display: flex; flex-direction: column; }
.gds-toasts { position: fixed; right: 1rem; bottom: 1rem; z-index: 120; display: flex; flex-direction: column; gap: .5rem; max-width: 26rem; }
.gds-toast { padding: .7rem .9rem; border-radius: var(--radius-sm); font-size: .83rem; display: flex; gap: .6rem; align-items: flex-start; animation: gdsPop var(--speed) var(--ease); }
@keyframes gdsPop { from { opacity: 0; transform: translateY(6px) scale(.98) } to { opacity: 1; transform: none } }
@keyframes gdsFade { from { opacity: 0 } to { opacity: 1 } }
@keyframes gdsSlide { from { transform: translateX(30px); opacity: 0 } to { transform: none; opacity: 1 } }
@keyframes gdsSpin { to { transform: rotate(360deg) } }
.spin { animation: gdsSpin 1s linear infinite; }

/* ---------------- Giriş ekranı ---------------- */
.login-left { background: radial-gradient(800px 500px at 0% 0%, rgba(59,130,246,.35), transparent 60%), linear-gradient(150deg, #06122b 0%, #0b1f44 45%, #12306b 100%); color: #e8eefc; }
.login-grid { background-image: linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px); background-size: 42px 42px; }
.login-right { background: #f6f8fc; color: #0f172a; }
.login-right .gds-input { background: #fff; border-color: #d5dcea; color: #0f172a; height: 2.8rem; }
.login-right .gds-input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.18); }
.login-right .gds-label { color: #475569; }
.login-combo { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 30; background: #fff; border: 1px solid #d5dcea; border-radius: 12px; box-shadow: 0 20px 40px -18px rgba(15,23,42,.35); max-height: 18rem; overflow: auto; padding: .3rem; }
.login-combo-item { display: flex; align-items: center; gap: .7rem; padding: .55rem .6rem; border-radius: 9px; cursor: pointer; }
.login-combo-item:hover, .login-combo-item.active { background: #eef3ff; }

/* ---------------- Notion editörü ---------------- */
.nb { position: relative; display: flex; align-items: flex-start; gap: .25rem; padding: 1px 0; border-radius: 6px; }
.nb:hover .nb-handle { opacity: 1; }
.nb-handle { opacity: 0; position: absolute; left: -3.6rem; top: 0; display: flex; gap: 1px; padding-top: .3rem; transition: opacity var(--speed); }
.nb::before { content: ''; position: absolute; left: -3.8rem; top: 0; bottom: 0; width: 3.8rem; }
.nb-text { width: 100%; resize: none; border: none; outline: none; background: transparent; line-height: 1.55; padding: .15rem .2rem; overflow: hidden; font-size: .92rem; }
.nb-text::placeholder { color: rgb(var(--c-muted) / .55); }
.nb-h1 { font-size: 1.65rem; font-weight: 800; line-height: 1.25; }
.nb-h2 { font-size: 1.3rem; font-weight: 750; line-height: 1.3; }
.nb-h3 { font-size: 1.08rem; font-weight: 700; }
.nb-quote { border-left: 3px solid rgb(var(--c-accent)); padding-left: .7rem !important; font-style: italic; color: rgb(var(--c-text) / .85); }
.nb-callout { background: rgb(var(--c-accent) / .1); border: 1px solid rgb(var(--c-accent) / .25); border-radius: var(--radius-sm); padding: .55rem .7rem !important; }
.nb-code { font-family: var(--font-mono); font-size: .82rem; background: rgb(var(--c-bg) / .7); border: 1px solid rgb(var(--c-line)); border-radius: var(--radius-sm); padding: .65rem .8rem !important; white-space: pre; overflow-x: auto; }
.nb-done { text-decoration: line-through; color: rgb(var(--c-muted)); }
.nb-table td { border: 1px solid rgb(var(--c-line)); padding: 0; min-width: 6rem; }
.nb-table tr:first-child td { background: rgb(var(--c-text) / .05); font-weight: 650; }
.nb-table input { width: 100%; background: transparent; border: none; outline: none; padding: .35rem .5rem; font-size: .85rem; }
.nb-slash { position: absolute; z-index: 40; width: 16rem; max-height: 19rem; overflow: auto; padding: .3rem; border-radius: var(--radius-sm); }
.note-tree-item { display: flex; align-items: center; gap: .3rem; height: 1.85rem; padding-right: .3rem; border-radius: calc(var(--radius-sm) - 2px); font-size: .82rem; cursor: pointer; color: rgb(var(--c-text) / .85); }
.note-tree-item:hover { background: rgb(var(--c-text) / .06); }
.note-tree-item.active { background: rgb(var(--c-accent) / .16); color: rgb(var(--c-text)); font-weight: 600; }

/* ---------------- Takvim ---------------- */
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-cell { min-height: 5.2rem; border-right: 1px solid rgb(var(--c-line) / .6); border-bottom: 1px solid rgb(var(--c-line) / .6); padding: .25rem; cursor: pointer; transition: background var(--speed); overflow: hidden; }
.cal-cell:hover { background: rgb(var(--c-accent) / .07); }
.cal-cell.other { opacity: .45; }
.cal-cell.today .cal-day { background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); }
.cal-day { display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; border-radius: 999px; font-size: .74rem; font-weight: 700; }
.cal-ev { display: block; font-size: .68rem; font-weight: 600; padding: .08rem .35rem; border-radius: 5px; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #fff; }

/* ---------------- Kanban ---------------- */
.kb-col { min-width: 13.5rem; display: flex; flex-direction: column; border-radius: var(--radius-sm); background: rgb(var(--c-bg) / .35); border: 1px solid rgb(var(--c-line) / .6); }
.kb-col.drag-over { border-color: rgb(var(--c-accent)); background: rgb(var(--c-accent) / .08); }
.kb-card { border-radius: calc(var(--radius-sm) - 1px); padding: .6rem .65rem; background: rgb(var(--c-card2) / .95); border: 1px solid rgb(var(--c-line)); cursor: grab; transition: transform var(--speed), box-shadow var(--speed), border-color var(--speed); }
.kb-card:hover { border-color: rgb(var(--c-accent) / .6); transform: translateY(-1px); box-shadow: 0 8px 20px -12px rgb(0 0 0 / .5); }
.kb-card.dragging { opacity: .45; }

/* ---------------- Chat ---------------- */
.chat-msg { display: flex; gap: .6rem; padding: .3rem .5rem; border-radius: var(--radius-sm); position: relative; }
.chat-msg.pt-0 { padding-top: .05rem; padding-bottom: .05rem; } /* v1.2.19: aynı kişinin art arda mesajları sıkı */
.chat-msg:hover { background: rgb(var(--c-text) / .04); }
.chat-msg:hover .chat-actions, .chat-actions:focus-within { opacity: 1; pointer-events: auto; }
/* v1.2.19: işlem düğmeleri satır yüksekliği kaplamaz (eskiden her mesaj ~40 px yer tutuyordu); üzerine gelince sağ üstte yüzer */
.chat-actions { opacity: 0; pointer-events: none; transition: opacity var(--speed); position: absolute; right: .4rem; top: .1rem; z-index: 2;
  background: rgb(var(--c-card)); border: 1px solid rgb(var(--c-line)); border-radius: var(--radius-sm); padding: 1px; box-shadow: 0 2px 8px rgb(0 0 0 / .18); }
.chat-bubble-text { white-space: pre-wrap; word-break: break-word; font-size: .87rem; line-height: 1.45; }
.chat-day { display: flex; align-items: center; gap: .6rem; font-size: .68rem; color: rgb(var(--c-muted)); margin: .6rem 0 .2rem; text-transform: uppercase; letter-spacing: .06em; }
.chat-day::before, .chat-day::after { content: ''; flex: 1; height: 1px; background: rgb(var(--c-line)); }

/* ---------------- Dosya listesi ---------------- */
.file-row { display: grid; grid-template-columns: minmax(0, 1fr) 6.5rem 12.5rem 5.5rem; align-items: center; gap: .6rem; padding: .45rem .6rem; border-radius: calc(var(--radius-sm) - 2px); font-size: .82rem; }
.file-row:hover { background: rgb(var(--c-text) / .05); }
.file-row.head { font-size: .68rem; font-weight: 700; text-transform: uppercase; color: rgb(var(--c-muted)); letter-spacing: .05em; }
.dropzone-active { outline: 2px dashed rgb(var(--c-accent)); outline-offset: -6px; background: rgb(var(--c-accent) / .06); }

/* ---------------- Elektrik kesintisi ---------------- */
.power-overlay { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center; background: radial-gradient(circle at 50% 30%, rgba(220,38,38,.55), rgba(40,0,0,.92)); backdrop-filter: blur(6px); animation: gdsFade .3s; }
.power-card { width: min(40rem, 92vw); padding: 2rem; border-radius: 22px; background: rgba(20, 0, 0, .75); border: 2px solid rgba(248,113,113,.8); color: #fff; text-align: center; box-shadow: 0 0 80px rgba(239,68,68,.55); }
.power-blink { animation: powerBlink 1s steps(2, start) infinite; }
@keyframes powerBlink { to { visibility: hidden } }

.gds-banner { animation: gdsFade var(--speed); }
.skeleton { background: linear-gradient(90deg, rgb(var(--c-text) / .06), rgb(var(--c-text) / .12), rgb(var(--c-text) / .06)); background-size: 200% 100%; animation: skel 1.3s infinite; border-radius: 6px; }
@keyframes skel { from { background-position: 200% 0 } to { background-position: -200% 0 } }
.truncate-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.preset-swatch { transition: transform var(--speed), box-shadow var(--speed); }
.preset-swatch:hover { transform: translateY(-2px); }

/* ---------------- v1.1: departman sekmeleri (front panel) & gezgin ---------------- */
.dept-tab { position: relative; display: inline-flex; align-items: center; gap: .4rem; height: 2.3rem; padding: 0 .85rem; border-radius: var(--radius-sm) var(--radius-sm) 0 0; font-size: .8rem; font-weight: 650; color: rgb(var(--c-muted)); border: 1px solid transparent; border-bottom: none; white-space: nowrap; transition: all var(--speed); flex: none; }
.dept-tab:hover { color: rgb(var(--c-text)); background: rgb(var(--c-text) / .05); }
.dept-tab.active { color: rgb(var(--c-text)); background: rgb(var(--c-card2)); border-color: rgb(var(--c-line)); }
.dept-tab.active::after { content: ''; position: absolute; left: 10px; right: 10px; top: 0; height: 3px; border-radius: 3px; background: var(--dept, rgb(var(--c-accent))); }
.dept-tab svg { color: var(--dept, rgb(var(--c-accent))); }
.file-row.explorer { grid-template-columns: minmax(0, 1fr) 5.5rem 9.5rem 4.5rem 8.5rem; padding-top: .3rem; padding-bottom: .3rem; }
.gds-tabs.compact .gds-tab { padding: 0 .45rem; font-size: .74rem; gap: .25rem; }
.cal-bar { position: absolute; height: 1.15rem; line-height: 1.15rem; font-size: .68rem; font-weight: 650; color: #fff; padding: 0 .4rem; border-radius: 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; z-index: 2; box-shadow: 0 1px 2px rgb(0 0 0 / .25); }
.cal-bar.cont-left { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.cal-bar.cont-right { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.cal-bar:hover { filter: brightness(1.1); }
.admin-card-drag { cursor: grab; }
.react-grid-layout .react-grid-layout { transition: none; }
.cal-cell { position: relative; }

.react-grid-layout.no-anim, .react-grid-layout.no-anim > .react-grid-item { transition: none !important; }

/* ======================= v1.2 ======================= */
/* Lightbox */
.lightbox { position: fixed; inset: 0; z-index: 330; background: rgb(0 0 0 / .88); display: grid; place-items: center; overflow: hidden; animation: gdsFade var(--speed); }
.lightbox-img { max-width: 92vw; max-height: 86vh; object-fit: contain; transition: transform 80ms linear; user-select: none; box-shadow: 0 20px 60px rgb(0 0 0 / .6); border-radius: 6px; }
/* Chat görselleri ve ekler */
.chat-img { max-width: min(22rem, 100%); max-height: 15rem; border-radius: var(--radius-sm); border: 1px solid rgb(var(--c-line)); cursor: zoom-in; object-fit: cover; background: rgb(var(--c-bg) / .5); }
.chat-img.compact { max-width: 7rem; max-height: 5rem; }
.att-chip { display: inline-flex; align-items: center; gap: .4rem; max-width: 100%; padding: .25rem .55rem; border-radius: var(--radius-sm); border: 1px solid rgb(var(--c-line)); background: rgb(var(--c-bg) / .45); font-size: .75rem; }
.att-chip:hover { border-color: rgb(var(--c-accent) / .6); }
.mention { color: rgb(var(--c-accent)); font-weight: 650; background: rgb(var(--c-accent) / .12); padding: 0 .2rem; border-radius: 4px; }
.mention.me { background: rgb(var(--c-warn) / .22); color: rgb(var(--c-warn)); }
.chat-msg.mentioned { background: rgb(var(--c-warn) / .07); box-shadow: inset 3px 0 0 rgb(var(--c-warn)); }
.chat-msg.flash { animation: gdsFlash 1.2s ease 2; }
@keyframes gdsFlash { 50% { background: rgb(var(--c-accent) / .22); } }
/* Üst bar araçları */
.badge-dot { position: absolute; top: -5px; right: -5px; min-width: 1.05rem; height: 1.05rem; padding: 0 .25rem; border-radius: 999px; background: rgb(var(--c-bad)); color: #fff; font-size: .6rem; font-weight: 800; display: grid; place-items: center; border: 2px solid rgb(var(--c-card)); }
.kbd { font-family: var(--font-mono); font-size: .62rem; padding: .05rem .35rem; border-radius: 5px; border: 1px solid rgb(var(--c-line)); color: rgb(var(--c-muted)); background: rgb(var(--c-bg) / .5); }
.search-btn { min-width: 7rem; justify-content: flex-start; }
.palette-row { display: flex; align-items: center; gap: .6rem; padding: .45rem .6rem; border-radius: var(--radius-sm); cursor: pointer; }
.palette-row.active { background: rgb(var(--c-accent) / .16); }
mark { background: rgb(var(--c-warn) / .35); color: inherit; border-radius: 3px; padding: 0 1px; }
/* Duyuru bandı */
.gds-banner.announce.info { background: rgb(var(--c-accent) / .16); border-bottom: 1px solid rgb(var(--c-accent) / .4); }
.gds-banner.announce.warn { background: rgb(var(--c-warn) / .2); border-bottom: 1px solid rgb(var(--c-warn) / .45); }
.gds-banner.announce.critical { background: rgb(var(--c-bad)); color: #fff; animation: gdsCritical 1.6s ease-in-out infinite; }
@keyframes gdsCritical { 50% { background: rgb(var(--c-bad) / .78); } }
.marquee { overflow: hidden; white-space: nowrap; position: relative; -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
.marquee > span { display: inline-block; padding-left: 100%; animation: gdsMarquee 22s linear infinite; }
@keyframes gdsMarquee { to { transform: translateX(-100%); } }
/* Bugün paneli */
.today-row { display: flex; align-items: center; gap: .5rem; padding: .35rem .45rem; border-radius: calc(var(--radius-sm) - 2px); cursor: pointer; }
.today-row:hover { background: rgb(var(--c-accent) / .1); }
/* Satın alma */
.purchase-row { display: flex; align-items: center; gap: .7rem; padding: .55rem .6rem; border-radius: var(--radius-sm); }
.purchase-steps { display: flex; gap: 3px; }
.purchase-steps .step { flex: 1; max-width: 7rem; font-size: .6rem; text-align: center; padding: 1px 4px; border-radius: 3px; background: rgb(var(--c-text) / .07); color: rgb(var(--c-muted)); }
.purchase-steps .step.done { background: rgb(var(--c-ok) / .2); color: rgb(var(--c-ok)); font-weight: 700; }
/* Sesli Masa */
.huddle-avatar { position: relative; border-radius: 999px; box-shadow: 0 0 0 2px transparent; transition: box-shadow 120ms; }
.huddle-avatar.talking { box-shadow: 0 0 0 2px rgb(var(--c-ok)); }
.huddle-avatar .mic-off, .huddle-avatar .share { position: absolute; bottom: -3px; width: 13px; height: 13px; border-radius: 999px; display: grid; place-items: center; color: #fff; }
.huddle-avatar .mic-off { right: -3px; background: rgb(var(--c-bad)); }
.huddle-avatar .share { left: -3px; background: rgb(var(--c-accent)); }
.huddle-tile { display: flex; flex-direction: column; align-items: center; gap: .35rem; padding: .8rem .5rem; border-radius: var(--radius); background: rgb(var(--c-card2) / .7); border: 2px solid transparent; transition: border-color 120ms; text-align: center; }
.huddle-tile.talking { border-color: rgb(var(--c-ok)); box-shadow: 0 0 18px -6px rgb(var(--c-ok)); }
.huddle-tile.has-video { justify-content: flex-end; aspect-ratio: 16 / 10; background: #000; padding: .4rem; }
.huddle-tile-label { color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.9); background: rgba(0,0,0,.45); padding: 0 .4rem; border-radius: 999px; }
.ptt-btn { width: 100%; display: flex; align-items: center; justify-content: center; gap: .6rem; height: 3.2rem; border-radius: var(--radius); font-weight: 700; border: 2px dashed rgb(var(--c-accent) / .6); color: rgb(var(--c-accent)); background: rgb(var(--c-accent) / .08); user-select: none; }
.ptt-btn.down { background: rgb(var(--c-ok)); border-color: rgb(var(--c-ok)); color: #fff; border-style: solid; }
/* Gantt */
.gantt { border: 1px solid rgb(var(--c-line) / .7); border-radius: var(--radius-sm); overflow: hidden; }
.gantt-head, .gantt-row { display: flex; }
.gantt-head { height: 1.6rem; background: rgb(var(--c-bg) / .45); border-bottom: 1px solid rgb(var(--c-line) / .7); }
.gantt-row { min-height: 2.6rem; border-bottom: 1px solid rgb(var(--c-line) / .35); }
.gantt-label { width: 14rem; flex: none; padding: .3rem .6rem; display: flex; flex-direction: column; justify-content: center; font-size: .78rem; font-weight: 600; border-right: 1px solid rgb(var(--c-line) / .6); min-width: 0; }
.gantt-track { position: relative; flex: 1; }
.gantt-month { position: absolute; top: 0; height: 100%; padding-left: 4px; font-size: .62rem; line-height: 1.6rem; color: rgb(var(--c-muted)); border-left: 1px solid rgb(var(--c-line) / .7); white-space: nowrap; }
.gantt-grid { position: absolute; top: 0; bottom: 0; border-left: 1px dashed rgb(var(--c-line) / .45); }
.gantt-today { position: absolute; top: 0; bottom: 0; width: 2px; background: rgb(var(--c-bad)); z-index: 2; }
.gantt-bar { position: absolute; top: .55rem; height: 1.45rem; border-radius: 6px; background: color-mix(in srgb, var(--c) 30%, transparent); border: 1px solid var(--c); overflow: hidden; display: flex; align-items: center; }
.gantt-bar.late { border-color: rgb(var(--c-bad)); box-shadow: 0 0 0 1px rgb(var(--c-bad) / .5); }
.gantt-fill { position: absolute; inset: 0 auto 0 0; background: var(--c); opacity: .85; }
.gantt-bar span { position: relative; z-index: 1; font-size: .62rem; font-weight: 800; color: #fff; padding-left: .35rem; text-shadow: 0 1px 2px rgb(0 0 0 / .6); }
/* AI */
.ai-bubble { padding: .6rem .8rem; border-radius: var(--radius); background: rgb(var(--c-card2) / .8); border: 1px solid rgb(var(--c-line) / .7); }
.ai-bubble.user { max-width: 80%; background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); border-color: transparent; font-size: .87rem; white-space: pre-wrap; }
.ai-ref { display: inline-grid; place-items: center; min-width: 1.1rem; height: 1.1rem; padding: 0 .2rem; margin: 0 1px; border-radius: 5px; font-size: .62rem; font-weight: 800; background: rgb(var(--c-accent) / .2); color: rgb(var(--c-accent)); vertical-align: 1px; }
/* Dosyalar */
.file-row.selected { background: rgb(var(--c-accent) / .12); }
.qr-box svg { width: 100%; height: 100%; }
/* Mobil görünüm */
.mobile-body { overflow: auto; }
.mobile-nav { display: flex; border-top: 1px solid rgb(var(--c-line)); background: rgb(var(--c-card) / .95); padding-bottom: env(safe-area-inset-bottom); }
.mobile-nav-btn { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: .4rem 0 .45rem; font-size: .62rem; font-weight: 600; color: rgb(var(--c-muted)); }
.mobile-nav-btn.active { color: rgb(var(--c-accent)); }
@media (max-width: 767px) {
  .gds-modal { max-height: calc(100vh - 1rem); border-radius: var(--radius); }
  .gds-overlay { padding: .5rem; }
  .gds-toasts { left: .5rem; right: .5rem; bottom: 4.5rem; max-width: none; }
  .file-row.explorer { grid-template-columns: minmax(0, 1fr) 6rem; }
  .file-row.explorer > span:nth-child(2), .file-row.explorer > span:nth-child(3), .file-row.explorer > span:nth-child(4) { display: none; }
  .gds-input, .gds-select, .gds-textarea { font-size: 16px; }
}

/* v1.2.1 — chat eklerinde görünür indirme düğmesi */
.att-dl { position: absolute; right: .35rem; bottom: .35rem; display: inline-flex; align-items: center; gap: .25rem; padding: .15rem .5rem; border-radius: 999px;
  font-size: 11px; font-weight: 700; color: #fff; background: rgba(0,0,0,.62); border: 1px solid rgba(255,255,255,.25); backdrop-filter: blur(4px); }
.att-dl:hover { background: rgb(var(--c-accent)); }
.att-dl-inline { font-size: 11px; font-weight: 700; padding: 0 .45rem; border-radius: 999px; color: rgb(var(--c-accent)); border: 1px solid rgb(var(--c-accent) / .45); white-space: nowrap; }
.att-dl-inline:hover { background: rgb(var(--c-accent)); color: #fff; }
/* v1.2.1 — Cloud adres çubuğu (GDS://) */
.gds-addr { display: flex; align-items: center; gap: .2rem; min-height: 1.9rem; padding: 0 .5rem; border-radius: var(--radius-sm, 8px); border: 1px solid rgb(var(--c-line)); background: rgb(var(--c-card2) / .55); font-size: .75rem; overflow: hidden; white-space: nowrap; cursor: text; }
.gds-addr:hover { border-color: rgb(var(--c-accent) / .6); }
.gds-addr-scheme { font-family: ui-monospace, Consolas, monospace; font-size: .7rem; color: rgb(var(--c-accent)); font-weight: 700; flex: none; }
.gds-addr-seg { display: inline-flex; align-items: center; gap: .25rem; padding: .1rem .3rem; border-radius: 6px; max-width: 14rem; overflow: hidden; text-overflow: ellipsis; flex: none; }
.gds-addr-seg:hover { background: rgb(var(--c-accent) / .15); color: rgb(var(--c-accent)); }
.gds-addr-input { flex: 1; min-width: 0; height: 1.75rem; background: transparent; border: none; outline: none; font-family: ui-monospace, Consolas, monospace; font-size: .75rem; color: inherit; }
.gds-link { display: inline-flex; align-items: center; gap: .2rem; padding: 0 .4rem; border-radius: 6px; background: rgb(var(--c-accent) / .12); color: rgb(var(--c-accent)); font-family: ui-monospace, Consolas, monospace; font-size: .78em; word-break: break-all; }
.gds-link:hover { background: rgb(var(--c-accent) / .25); text-decoration: underline; }
/* v1.2.1 — Wiki başlık kapağı ve simge seçici */
.note-cover { position: relative; width: 100%; flex: none; }
.note-cover-btn { position: absolute; right: .75rem; bottom: .6rem; display: inline-flex; align-items: center; gap: .3rem; font-size: 11px; font-weight: 600; color: #fff; background: rgba(0,0,0,.45); padding: .2rem .6rem; border-radius: 999px; opacity: 0; transition: opacity 120ms; }
.note-cover:hover .note-cover-btn { opacity: 1; }
.note-icon-btn { line-height: 1; padding: .15rem .25rem; }
.note-head-tools { opacity: 0; transition: opacity 120ms; }
.group\/head:hover .note-head-tools, .note-head-tools:focus-within { opacity: 1; }
.icon-picker { position: absolute; left: 0; top: 100%; z-index: 60; width: 20rem; padding: .6rem; text-align: left; }
.cal-ev.bold, .cal-bar.bold { font-weight: 800; }
.cal-ev.lg, .cal-bar.lg { font-size: 12.5px; }

/* =============================================================================
   v1.3 (Faz 2) — çalışma alanı özellikleri
   ============================================================================= */
/* ---- 👁️ Sunum Modu: yazılar %120, özel içerikler bulanık ---- */
html.presenting { font-size: calc(16px * var(--scale) * 1.2); }
html.presenting [data-private] { position: relative; filter: blur(11px) saturate(.4); pointer-events: none; user-select: none; }
html.presenting [data-private-soft] { filter: blur(5px); }
html.presenting .widget:has([data-private]) { position: relative; }
html.presenting .widget:has([data-private])::after { content: '🔒 Sunum modunda gizli içerik'; position: absolute; left: 50%; top: 55%; transform: translate(-50%, -50%);
  padding: .45rem .9rem; border-radius: 999px; font-size: .78rem; font-weight: 700; background: rgb(var(--c-card) / .92); border: 1px solid rgb(var(--c-line)); pointer-events: none; z-index: 6; }
/* sunumda üst bar taşmasın: logo yazısı, ekip halkaları ve bağlantı rozeti gizlenir */
html.presenting .topbar .brand-text, html.presenting .topbar .vo-bar, html.presenting .topbar .search-btn kbd { display: none !important; }
html.presenting .topbar { gap: .35rem; }
.present-ribbon { position: fixed; left: 1rem; bottom: 1rem; z-index: 110; display: flex; align-items: center; gap: .5rem; padding: .4rem .5rem .4rem .8rem; border-radius: 999px;
  background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); font-size: .75rem; font-weight: 700; box-shadow: 0 10px 25px -10px rgb(0 0 0 / .6); }
.present-ribbon button { background: rgb(255 255 255 / .22); border-radius: 999px; padding: .15rem .6rem; }

/* ---- 🔒 Kilit ekranı (buzlu cam) ---- */
body.gds-locked #root { filter: blur(26px) saturate(.6); pointer-events: none; user-select: none; }
.lock-layer { position: fixed; inset: 0; z-index: 2000; display: grid; place-items: center; padding: 1rem; background: rgb(var(--c-bg) / .45);
  backdrop-filter: blur(28px) saturate(1.3); -webkit-backdrop-filter: blur(28px) saturate(1.3); animation: gdsFade .25s; }
.lock-card { width: min(27rem, 100%); padding: 1.8rem 1.6rem 1.3rem; border-radius: var(--radius-lg); display: flex; flex-direction: column; align-items: center; text-align: center; }
.lock-title { display: flex; gap: .45rem; align-items: center; justify-content: center; margin: .7rem 0 .3rem; font-size: .82rem; font-weight: 650; color: rgb(var(--c-text) / .9); line-height: 1.35; }
.pin-box { width: 3rem; height: 3.4rem; display: grid; place-items: center; border-radius: var(--radius-sm); border: 2px solid rgb(var(--c-line)); background: rgb(var(--c-bg) / .5);
  font-size: 1.3rem; color: rgb(var(--c-accent)); transition: border-color .15s, transform .15s; }
.pin-box.cur { border-color: rgb(var(--c-accent)); box-shadow: 0 0 0 3px rgb(var(--c-accent) / .25); }
.pin-box.fill { transform: scale(1.04); }

/* ---- 🎥 Video not ---- */
.rec-pill { position: fixed; left: 50%; bottom: 1.2rem; transform: translateX(-50%); z-index: 1500; display: flex; align-items: center; gap: .7rem; padding: .5rem .6rem .5rem 1rem; border-radius: 999px; font-size: .85rem; }
.rec-dot { width: .7rem; height: .7rem; border-radius: 999px; background: rgb(var(--c-bad)); animation: recBlink 1s infinite; }
@keyframes recBlink { 50% { opacity: .25; } }
.video-note { width: min(26rem, 100%); border-radius: var(--radius-sm); overflow: hidden; border: 1px solid rgb(var(--c-line)); background: #000; }
.video-note video { display: block; width: 100%; max-height: 16rem; background: #000; }
.video-note.compact video { max-height: 8.5rem; }
.video-note-bar { display: flex; align-items: center; gap: .25rem; padding: .3rem .45rem; background: rgb(var(--c-card2)); color: rgb(var(--c-text)); }
.speed-btn { min-width: 2rem; height: 1.5rem; padding: 0 .35rem; border-radius: 999px; font-size: .68rem; font-weight: 800; border: 1px solid rgb(var(--c-line)); color: rgb(var(--c-muted)); }
.speed-btn:hover { color: rgb(var(--c-text)); border-color: rgb(var(--c-accent) / .6); }
.speed-btn.on { background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); border-color: rgb(var(--c-accent)); }
.kb-rec { width: 1.5rem; height: 1.5rem; display: grid; place-items: center; border-radius: 999px; color: rgb(var(--c-muted)); opacity: 0; transition: opacity var(--speed); }
.kb-card:hover .kb-rec { opacity: 1; }
.kb-rec:hover { background: rgb(var(--c-bad) / .15); color: rgb(var(--c-bad)); }

/* ---- ⚡ Karar / Oylama kartı ---- */
.poll-card { margin-top: .3rem; max-width: 30rem; padding: .75rem .8rem; border-radius: var(--radius-sm); border: 1px solid rgb(var(--c-accent) / .45);
  background: linear-gradient(135deg, rgb(var(--c-accent) / .1), rgb(var(--c-card2) / .9)); }
.poll-card.decided { border-color: rgb(var(--c-ok) / .55); background: linear-gradient(135deg, rgb(var(--c-ok) / .1), rgb(var(--c-card2) / .9)); }
.poll-badge { font-size: .66rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; padding: .12rem .5rem; border-radius: 999px; background: rgb(var(--c-accent) / .18); color: rgb(var(--c-accent)); }
.poll-card.decided .poll-badge { background: rgb(var(--c-ok) / .18); color: rgb(var(--c-ok)); }
.poll-opt { position: relative; display: block; width: 100%; padding: .45rem .55rem; border-radius: calc(var(--radius-sm) - 2px); border: 1px solid rgb(var(--c-line)); overflow: hidden; font-size: .83rem; font-weight: 600; text-align: left; transition: border-color .15s; }
.poll-opt:not(:disabled):hover { border-color: rgb(var(--c-accent)); }
.poll-opt.mine { border-color: rgb(var(--c-accent)); }
.poll-opt.won { border-color: rgb(var(--c-ok)); }
.poll-opt.lost { opacity: .6; }
.poll-fill { position: absolute; inset: 0 auto 0 0; background: rgb(var(--c-accent) / .16); transition: width .35s var(--ease); }
.poll-opt.won .poll-fill { background: rgb(var(--c-ok) / .2); }
.poll-check { width: 1.35rem; height: 1.35rem; flex: none; display: grid; place-items: center; border-radius: 999px; font-size: .68rem; font-weight: 800; background: rgb(var(--c-text) / .08); }
.poll-check.on { background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); }

/* ---- 🟢 Sanal Ofis Barı ---- */
.vo-bar { display: flex; align-items: center; gap: .3rem; flex: none; }
.vo-dot { position: relative; display: inline-grid; place-items: center; padding: 2px; border-radius: 999px; box-shadow: 0 0 0 2px var(--st); cursor: pointer; touch-action: none; user-select: none; transition: transform .12s; }
.vo-dot:hover { transform: translateY(-1px) scale(1.06); }
.vo-dot.st-offline { opacity: .45; }
.vo-dot.st-meeting { animation: voPulse 2.2s infinite; }
@keyframes voPulse { 50% { box-shadow: 0 0 0 4px rgb(239 68 68 / .35); } }
.vo-dot.talking { box-shadow: 0 0 0 3px rgb(var(--c-bad)); animation: voTalk .6s infinite alternate; }
@keyframes voTalk { to { box-shadow: 0 0 0 6px rgb(var(--c-bad) / .35); } }
.vo-badge { position: absolute; right: -4px; bottom: -4px; font-size: .6rem; line-height: 1; filter: drop-shadow(0 1px 1px rgb(0 0 0 / .5)); }
.vo-rec { position: absolute; inset: 0; display: grid; place-items: center; border-radius: 999px; background: rgb(var(--c-bad) / .85); color: #fff; font-weight: 800; font-size: .8rem; }
.vo-more { display: inline-flex; align-items: center; gap: .25rem; height: 1.9rem; padding: 0 .55rem; margin-left: .2rem; border-radius: 999px; border: 1px solid rgb(var(--c-line)); font-size: .75rem; color: rgb(var(--c-muted)); }
.vo-more:hover { color: rgb(var(--c-text)); border-color: rgb(var(--c-accent) / .6); }

/* ---- 🎙️ Sesli komut ---- */
.voice-mic { width: 3.6rem; height: 3.6rem; flex: none; display: grid; place-items: center; border-radius: 999px; background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); box-shadow: 0 8px 20px -8px rgb(var(--c-accent)); transition: transform .15s; }
.voice-mic:hover { transform: scale(1.05); }
.voice-mic.on { background: rgb(var(--c-bad)); animation: voTalk .7s infinite alternate; }

/* ---- 🎧 Odak sesleri ---- */
.radio-live { animation: recBlink 1.6s infinite; }
.eq-bars { display: inline-flex; align-items: flex-end; gap: 2px; height: 12px; }
.eq-bars i { width: 3px; background: rgb(var(--c-accent)); border-radius: 1px; animation: eq 0.9s infinite ease-in-out; }
.eq-bars i:nth-child(2) { animation-delay: .2s; }
.eq-bars i:nth-child(3) { animation-delay: .45s; }
@keyframes eq { 0%, 100% { height: 3px; } 50% { height: 12px; } }

/* ---- 🔍 Görsel fark (diff) ---- */
.diff-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-family: var(--font-mono); font-size: .74rem; }
.diff-table thead th { position: sticky; top: 0; z-index: 1; text-align: left; padding: .45rem .6rem; font-family: var(--font); font-size: .75rem; background: rgb(var(--c-card2)); border-bottom: 1px solid rgb(var(--c-line)); }
.diff-table td { padding: .08rem .45rem; vertical-align: top; white-space: pre-wrap; word-break: break-word; }
.diff-no { width: 3rem; text-align: right; color: rgb(var(--c-muted)); user-select: none; border-right: 1px solid rgb(var(--c-line) / .6); }
.diff-code { border-right: 1px solid rgb(var(--c-line) / .6); }
.diff-del { background: rgb(239 68 68 / .16); }
.diff-ins { background: rgb(16 185 129 / .17); }
.diff-empty { background: repeating-linear-gradient(135deg, transparent 0 6px, rgb(var(--c-text) / .04) 6px 12px); }
.diff-mark-del { background: rgb(239 68 68 / .45); color: inherit; border-radius: 2px; }
.diff-mark-ins { background: rgb(16 185 129 / .45); color: inherit; border-radius: 2px; }
.diff-skip { text-align: center; color: rgb(var(--c-muted)); background: rgb(var(--c-accent) / .06); font-family: var(--font); font-size: .7rem; padding: .25rem; }

/* ---- 🌌 Canlı arka planlar ---- */
.ws-bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; background: rgb(var(--c-bg)); background-size: cover; background-position: center; }
.ws-bg i { position: absolute; display: block; }
.ws-bg-dim { position: absolute; inset: 0; background: rgb(0 0 0); }
.ws-bg-aurora { background: radial-gradient(ellipse at 50% 120%, #0b1330, #03050d 70%); }
.ws-bg-aurora i { width: 70vmax; height: 70vmax; border-radius: 50%; filter: blur(90px); opacity: .55; mix-blend-mode: screen; }
.ws-bg-aurora .a1 { left: -15vmax; top: -25vmax; background: radial-gradient(circle, #22d3ee, transparent 65%); animation: aur1 26s ease-in-out infinite alternate; }
.ws-bg-aurora .a2 { right: -20vmax; top: -10vmax; background: radial-gradient(circle, #8b5cf6, transparent 65%); animation: aur2 32s ease-in-out infinite alternate; }
.ws-bg-aurora .a3 { left: 20vmax; bottom: -40vmax; background: radial-gradient(circle, #10b981, transparent 65%); animation: aur3 38s ease-in-out infinite alternate; }
@keyframes aur1 { to { transform: translate(18vmax, 12vmax) scale(1.2); } }
@keyframes aur2 { to { transform: translate(-22vmax, 16vmax) scale(.85); } }
@keyframes aur3 { to { transform: translate(-14vmax, -18vmax) scale(1.25); } }
.ws-bg-grid { background: linear-gradient(#050314, #120626 55%, #1a0633); }
.ws-bg-grid .g-floor { left: -50%; right: -50%; bottom: -10%; height: 70%; transform: perspective(420px) rotateX(62deg); transform-origin: 50% 100%;
  background-image: linear-gradient(rgb(34 211 238 / .55) 1px, transparent 1px), linear-gradient(90deg, rgb(168 85 247 / .5) 1px, transparent 1px);
  background-size: 56px 56px; animation: gridMove 3.5s linear infinite; -webkit-mask: linear-gradient(transparent, #000 35%); mask: linear-gradient(transparent, #000 35%); }
.ws-bg-grid .g-glow { left: 0; right: 0; top: 30%; height: 30%; background: radial-gradient(ellipse at 50% 100%, rgb(236 72 153 / .45), transparent 70%); filter: blur(20px); }
@keyframes gridMove { to { background-position: 0 56px, 0 0; } }
.ws-bg.still i { animation: none !important; }
@media (prefers-reduced-motion: reduce) { .ws-bg i { animation: none !important; } }
html.has-livebg .widget.glass { background: rgb(var(--c-card) / min(var(--glass), .74)); backdrop-filter: blur(max(var(--blur), 14px)) saturate(1.3); -webkit-backdrop-filter: blur(max(var(--blur), 14px)) saturate(1.3); }
html.has-livebg .ws-tab.active { background: rgb(var(--c-card) / .8); }
.bg-choice { position: relative; height: 4.2rem; border-radius: var(--radius-sm); border: 2px solid rgb(var(--c-line)); overflow: hidden; background-size: cover; background-position: center; text-align: left; }
.bg-choice.on { border-color: rgb(var(--c-accent)); }
.bg-choice.prev-none { background: rgb(var(--c-bg)); }
.bg-choice.prev-aurora { background: radial-gradient(circle at 20% 20%, #22d3ee99, transparent 45%), radial-gradient(circle at 80% 30%, #8b5cf699, transparent 45%), radial-gradient(circle at 50% 90%, #10b98199, transparent 50%), #04060f; }
.bg-choice.prev-grid { background: linear-gradient(rgb(34 211 238 / .5) 1px, transparent 1px) 0 0 / 14px 14px, linear-gradient(90deg, rgb(168 85 247 / .5) 1px, transparent 1px) 0 0 / 14px 14px, #0c0420; }
.bg-choice.prev-image { background-color: rgb(var(--c-card2)); }
.bg-choice-label { position: absolute; left: .35rem; bottom: .3rem; display: inline-flex; gap: .3rem; align-items: center; font-size: .66rem; font-weight: 700; padding: .1rem .4rem; border-radius: 999px; background: rgb(0 0 0 / .55); color: #fff; }

/* ---- 🎨 Blok rengi ---- */
.swatch { width: 1.65rem; height: 1.65rem; border-radius: 999px; border: 2px solid rgb(var(--c-line)); font-size: .8rem; display: grid; place-items: center; color: rgb(var(--c-muted)); }
.swatch.on { border-color: rgb(var(--c-accent)); box-shadow: 0 0 0 2px rgb(var(--c-accent) / .35); }

/* ---- ↗️ Ayrık pencere ---- */
.detached-widget { height: 100%; border-radius: 0; border: none; }

/* Araçlar dar pencerede ikinci satıra geçer; hiçbir düğme yatayda kaybolmaz. */
.topbar { height: auto; min-height: 3.6rem; flex-wrap: wrap; padding-top: .3rem; padding-bottom: .3rem; }
.topbar > * { max-width: 100%; }
.topbar img { max-height: 2.4rem; max-width: 9rem; object-fit: contain; }
.topbar .brand-text { white-space: nowrap; }
html.presenting .topbar { font-size: .8rem; min-width: 0; }
html.presenting .topbar img { max-height: 2rem; max-width: 7rem; }
.tool-panel { padding: .75rem; overflow: auto; height: 100%; }
.tool-card { padding: .7rem; border: 1px solid rgb(var(--c-line)); border-radius: .6rem; margin: .5rem 0; overflow-wrap: anywhere; }
.tool-row { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; margin: .4rem 0; }
.tool-panel textarea { min-height: 4rem; }
.tool-panel img { max-height: 180px; max-width: 100%; object-fit: contain; }
.tool-icons { display: grid; grid-template-columns: repeat(5, 1fr); gap: .3rem; }
.reference-card { position: fixed; right: 20px; bottom: 70px; width: 330px; max-height: 55vh; overflow: auto; z-index: 120; padding: 12px; border-radius: 12px; box-shadow: 0 8px 40px #0005; background: rgb(var(--c-card)); border: 1px solid rgb(var(--c-line)); }

/* ---- v1.3 Çerçevesiz pencere: özel pencere düğmeleri ve kenar tutamakları ---- */
.win-ctl { display: flex; align-self: stretch; align-items: stretch; margin-left: .35rem; padding-left: .35rem; border-left: 1px solid rgb(var(--c-line) / .7); flex: none; }
.win-ctl button { width: 2.9rem; display: grid; place-items: center; color: rgb(var(--c-muted)); transition: background-color .12s, color .12s; }
.win-ctl button:hover { background: rgb(var(--c-text) / .09); color: rgb(var(--c-text)); }
.win-ctl button:active { background: rgb(var(--c-text) / .16); }
.win-ctl button.close:hover { background: #e81123; color: #fff; }
.win-ctl button.close:active { background: #b80f1c; color: #fff; }
.win-ctl button:focus-visible { outline: 2px solid rgb(var(--c-accent)); outline-offset: -2px; }
.topbar.gds-drag { cursor: default; }
.win-edges { position: fixed; inset: 0; pointer-events: none; z-index: 2500; }
.win-edge { position: absolute; pointer-events: auto; }
.win-edge.top { top: 0; left: 10px; right: 10px; height: 4px; cursor: ns-resize; }
.win-edge.bottom { bottom: 0; left: 10px; right: 10px; height: 5px; cursor: ns-resize; }
.win-edge.left { left: 0; top: 10px; bottom: 10px; width: 5px; cursor: ew-resize; }
.win-edge.right { right: 0; top: 10px; bottom: 10px; width: 5px; cursor: ew-resize; }
.win-edge.topleft { left: 0; top: 0; width: 10px; height: 10px; cursor: nwse-resize; }
.win-edge.topright { right: 0; top: 0; width: 10px; height: 10px; cursor: nesw-resize; }
.win-edge.bottomleft { left: 0; bottom: 0; width: 10px; height: 10px; cursor: nesw-resize; }
.win-edge.bottomright { right: 0; bottom: 0; width: 10px; height: 10px; cursor: nwse-resize; }

/* ---- v1.3 IT Destek Talepleri (Tickets) ---- */
.tk-pill { display: inline-flex; align-items: center; gap: .3rem; padding: .12rem .5rem; border-radius: 999px; font-size: .68rem; font-weight: 700; white-space: nowrap;
  background: color-mix(in srgb, var(--tk) 18%, transparent); color: var(--tk); border: 1px solid color-mix(in srgb, var(--tk) 40%, transparent); }
.tk-card { border-radius: calc(var(--radius-sm) - 1px); padding: .55rem .65rem; background: rgb(var(--c-card2) / .95); border: 1px solid rgb(var(--c-line)); cursor: pointer; transition: border-color var(--speed), transform var(--speed); }
.tk-card:hover { border-color: rgb(var(--c-accent) / .6); transform: translateY(-1px); }
.tk-card.dragging { opacity: .45; }
.tk-detail { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 1rem; height: min(70vh, 46rem); }
.tk-info { overflow: auto; padding-right: .35rem; }
.tk-status-bar { margin-bottom: .7rem; }
.tk-status-bar > .tk-status-btn { margin: 0 .3rem .3rem 0; }
.tk-status-btn { display: inline-flex; align-items: center; gap: .3rem; height: 1.85rem; padding: 0 .65rem; border-radius: 999px; font-size: .74rem; font-weight: 700;
  border: 1px solid rgb(var(--c-line)); color: rgb(var(--c-muted)); transition: all .12s; }
.tk-status-btn:hover { border-color: var(--tk); color: var(--tk); }
.tk-status-btn.on { background: var(--tk); border-color: var(--tk); color: #fff; }
.tk-field { display: flex; flex-direction: column; gap: .15rem; padding: .45rem .55rem; border-radius: var(--radius-sm); border: 1px solid rgb(var(--c-line) / .7); }
.tk-field > span { font-size: .64rem; text-transform: uppercase; letter-spacing: .04em; color: rgb(var(--c-muted)); font-weight: 700; }
.tk-field > b { display: flex; align-items: center; gap: .3rem; font-size: .8rem; }
.tk-thumb { width: 6.5rem; height: 4.5rem; object-fit: cover; border-radius: var(--radius-sm); border: 1px solid rgb(var(--c-line)); cursor: zoom-in; }
.tk-thumb.sm { width: 3.6rem; height: 2.7rem; }
.tk-sys { width: 100%; font-size: .74rem; border-collapse: collapse; }
.tk-sys td { padding: .28rem .45rem; border-bottom: 1px solid rgb(var(--c-line) / .55); vertical-align: top; }
.tk-sys td:first-child { color: rgb(var(--c-muted)); width: 42%; }
.tk-sys td:last-child { font-family: var(--font-mono); font-size: .7rem; word-break: break-word; }
.tk-chat { display: flex; flex-direction: column; min-height: 0; border-radius: var(--radius); border: 1px solid rgb(var(--c-line)); background: rgb(var(--c-bg) / .35); }
.tk-chat-head { display: flex; align-items: center; gap: .4rem; padding: .55rem .75rem; font-weight: 700; font-size: .82rem; border-bottom: 1px solid rgb(var(--c-line)); }
.tk-thread { flex: 1; min-height: 0; overflow: auto; padding: .7rem; display: flex; flex-direction: column; gap: .5rem; }
.tk-msg { display: flex; }
.tk-msg.mine { justify-content: flex-end; }
.tk-bubble { max-width: 85%; padding: .45rem .65rem; border-radius: var(--radius); font-size: .83rem; line-height: 1.45; background: rgb(var(--c-card2)); border: 1px solid rgb(var(--c-line) / .8); }
.tk-msg.mine .tk-bubble { background: rgb(var(--c-accent) / .2); border-color: rgb(var(--c-accent) / .45); }
.tk-meta { font-size: .65rem; color: rgb(var(--c-muted)); margin-bottom: .15rem; font-weight: 600; }
.tk-sysmsg { align-self: center; font-size: .68rem; color: rgb(var(--c-muted)); padding: .2rem .65rem; border-radius: 999px; background: rgb(var(--c-text) / .06); text-align: center; }
.tk-compose { padding: .55rem; border-top: 1px solid rgb(var(--c-line)); }
@media (max-width: 900px) { .tk-detail { grid-template-columns: 1fr; height: auto; } .tk-chat { min-height: 22rem; } }

/* çerçevesiz pencerede düğmeler her zaman sağ üst köşede; satıra geçen üst bar içeriği altlarına girmez */
.topbar.frameless { padding-right: 9.4rem !important; }
.topbar.frameless .win-ctl { position: absolute; top: 0; right: 0; height: 3.6rem; margin: 0; }
html.presenting .topbar.frameless .win-ctl { height: 3rem; }

/* =============================================================================
   v1.2.7 📱 PWA & mobil arayüz (yalnızca < 768 px ve dokunmatik; masaüstüne etkisi yok)
   ============================================================================= */
.touch-only { display: none !important; }
@media (pointer: coarse) { .touch-only { display: inline-flex !important; } }

@media (max-width: 767px) {
  html, body { overscroll-behavior: none; -webkit-tap-highlight-color: transparent; }
  #root { padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); }
  html:not(.gds-mobile) #root { padding-top: env(safe-area-inset-top); padding-bottom: env(safe-area-inset-bottom); } /* giriş ekranı */
}

/* ---- üst başlık (çentik / Dynamic Island payı) ---- */
.m-header { position: relative; z-index: 30; display: flex; align-items: center; gap: .55rem; min-height: calc(3.5rem + env(safe-area-inset-top));
  padding: calc(env(safe-area-inset-top) + .3rem) .6rem .35rem .75rem; background: rgb(var(--c-card) / .82);
  backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); border-bottom: 1px solid rgb(var(--c-line) / .7); }
.m-icon-btn { min-width: 44px; min-height: 44px; display: grid; place-items: center; border-radius: 999px; color: rgb(var(--c-text)); }
.m-icon-btn:active { background: rgb(var(--c-text) / .1); }

/* ---- alt sekme çubuğu (buzlu cam, ana ekran çizgisi payı) ---- */
.mobile-nav { position: relative; z-index: 40; display: flex; gap: .15rem; padding: .3rem .35rem calc(.3rem + env(safe-area-inset-bottom));
  background: rgb(var(--c-card) / .72); backdrop-filter: blur(22px) saturate(1.5); -webkit-backdrop-filter: blur(22px) saturate(1.5);
  border-top: 1px solid rgb(var(--c-line) / .6); box-shadow: 0 -10px 28px -14px rgb(0 0 0 / .55); }
.mobile-nav-btn { flex: 1; min-height: 52px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; padding: .25rem 0;
  font-size: .68rem; font-weight: 650; color: rgb(var(--c-muted)); border-radius: 14px; transition: background-color .15s, color .15s, transform .1s; }
.mobile-nav-btn.active { color: rgb(var(--c-accent)); background: rgb(var(--c-accent) / .13); }
.mobile-nav-btn:active { transform: scale(.94); }

/* ---- menü çekmecesi (soldan kaydırarak açılır) ---- */
.m-drawer-wrap { position: fixed; inset: 0; z-index: 95; pointer-events: none; }
.m-drawer-wrap.open { pointer-events: auto; }
.m-drawer-backdrop { position: absolute; inset: 0; background: rgb(0 0 0 / .5); opacity: 0; transition: opacity .22s; }
.m-drawer-wrap.open .m-drawer-backdrop { opacity: 1; }
.m-drawer { position: absolute; top: 0; bottom: 0; left: 0; width: min(20rem, 86vw); display: flex; flex-direction: column;
  padding: calc(env(safe-area-inset-top) + .8rem) 0 env(safe-area-inset-bottom) env(safe-area-inset-left);
  border-radius: 0 var(--radius-lg) var(--radius-lg) 0; transform: translateX(-105%); transition: transform .25s var(--ease); }
.m-drawer-wrap.open .m-drawer { transform: translateX(0); }
.m-menu-item { display: flex; align-items: center; gap: .9rem; width: 100%; min-height: 48px; padding: 0 1.1rem; font-size: .95rem; font-weight: 600; color: rgb(var(--c-text)); }
.m-menu-item:active, .m-menu-item.active { background: rgb(var(--c-accent) / .14); color: rgb(var(--c-accent)); }
.m-menu-item.text-bad { color: rgb(var(--c-bad)); }

/* ---- 44×44 px dokunma alanları (Apple HIG) — yalnızca mobil kabukta; portallar (pencereler/menüler) dahil ---- */
html.gds-mobile .gds-btn, html.gds-mobile .gds-btn.sm { min-height: 44px; min-width: 44px; }
html.gds-mobile .gds-input, html.gds-mobile .gds-select, html.gds-mobile .gds-textarea, html.gds-mobile select, html.gds-mobile input[type="date"],
html.gds-mobile input[type="time"] { min-height: 44px; font-size: 16px; } /* 16 px: iOS odaklanınca yakınlaştırmasın */
html.gds-mobile .gds-menu-item, html.gds-mobile .note-tree-item, html.gds-mobile .gds-tab, html.gds-mobile .ws-tab, html.gds-mobile .dept-tab,
html.gds-mobile .file-row:not(.head), html.gds-mobile .kb-card, html.gds-mobile .tk-card, html.gds-mobile .poll-opt { min-height: 44px; }
html.gds-mobile .gds-tab { height: auto; }
html.gds-mobile .gds-check, html.gds-mobile input[type="checkbox"], html.gds-mobile input[type="radio"] { width: 22px; height: 22px; }
html.gds-mobile .speed-btn, html.gds-mobile .att-dl-inline { min-height: 36px; min-width: 44px; }
html.gds-mobile .gds-toasts { bottom: calc(5.2rem + env(safe-area-inset-bottom)); }
html.gds-mobile .gds-overlay { padding: calc(env(safe-area-inset-top) + .5rem) .5rem calc(env(safe-area-inset-bottom) + .5rem); }
html.gds-mobile .gds-modal { max-height: calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 1rem); }
html.gds-mobile .chat-list { overflow-x: hidden; }
html.gds-mobile .chat-msg { touch-action: pan-y; }
.chat-msg[data-swipe] { position: relative; }
.chat-msg[data-swipe]::before { content: '↩'; position: absolute; left: -38px; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; display: grid; place-items: center;
  border-radius: 999px; font-weight: 800; background: rgb(var(--c-accent) / .2); color: rgb(var(--c-accent)); }
.chat-msg[data-swipe="ready"]::before { background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); }

/* ---- akıllı kurulum yönlendiricisi ---- */
.pwa-bar { position: fixed; left: .6rem; right: .6rem; bottom: calc(env(safe-area-inset-bottom) + 5rem); z-index: 100; display: flex; align-items: center; gap: .7rem;
  padding: .65rem .5rem .65rem .75rem; border-radius: 18px; animation: gdsPop .25s var(--ease); box-shadow: 0 18px 40px -16px rgb(0 0 0 / .7); }
html:not(.gds-mobile) .pwa-bar { bottom: calc(env(safe-area-inset-bottom) + .8rem); }
.pwa-ico { width: 42px; height: 42px; border-radius: 10px; flex: none; }
.pwa-x { min-width: 44px; min-height: 44px; display: grid; place-items: center; color: rgb(var(--c-muted)); flex: none; }
.pwa-ios { position: fixed; left: 0; right: 0; margin-inline: auto; bottom: calc(env(safe-area-inset-bottom) + .9rem); width: min(22rem, calc(100vw - 1.2rem));
  z-index: 100; padding: .85rem 2.6rem .85rem 1rem; border-radius: 18px; animation: gdsPop .25s var(--ease); box-shadow: 0 18px 40px -16px rgb(0 0 0 / .7); }
.pwa-ios::after { content: ''; position: absolute; left: 50%; bottom: -8px; width: 16px; height: 16px; transform: translateX(-50%) rotate(45deg);
  background: rgb(var(--c-card)); border-right: 1px solid rgb(var(--c-line)); border-bottom: 1px solid rgb(var(--c-line)); }
.pwa-ios.top { top: calc(env(safe-area-inset-top) + .6rem); bottom: auto; left: auto; right: .7rem; margin: 0; }
.pwa-ios.top::after { top: -8px; bottom: auto; left: auto; right: 1.6rem; transform: rotate(225deg); }
.pwa-ios .pwa-x { position: absolute; top: .1rem; right: .1rem; }
.pwa-share { display: inline-flex; align-items: center; gap: .2rem; padding: 0 .35rem; border-radius: 6px; background: rgb(var(--c-accent) / .18); color: rgb(var(--c-accent)); font-weight: 700; vertical-align: -3px; }
html.gds-mobile .nb-text:not(.nb-h1):not(.nb-h2):not(.nb-h3), html.gds-mobile .nb-table input, html.gds-mobile .gds-addr-input,
html.gds-mobile .nb-code { font-size: 16px; } /* iOS: 16 px altındaki alanlara dokununca sayfayı yakınlaştırır */
@media (pointer: coarse) { .no-touch { display: none !important; } } /* telefon tarayıcıları ekran kaydını desteklemez */
html.gds-mobile .chat-compose-row { flex-wrap: wrap; }
html.gds-mobile .chat-compose-row > textarea { order: -1; flex: 1 1 100%; min-height: 44px !important; }
html.gds-mobile .chat-compose-row > .gds-btn.primary { margin-left: auto; }
.pwa-bar.glass, .pwa-ios.glass { background: rgb(var(--c-card) / .97); }
/* v1.2.9 telefon: Bugün kartları alt alta, içerik kadar yükseklik, sürükleme tutamağı yok */
.today-stack { display: flex; flex-direction: column; gap: .75rem; }
.today-stack > div > div { height: auto; }
.today-stack .today-card-drag > svg:first-child { display: none; }
.today-stack .today-card-drag { cursor: default; }
.today-stack .overflow-auto { max-height: 19rem; }

/* ===========================================================================
   v1.2.11 Hava Durumu bloğu — renkler weather_widget.js / wxTheme() tarafından hesaplanır (--wx-*).
   Yalnızca .wx içinde geçerlidir; tema değişkenlerine (--c-*) ve diğer bloklara dokunmaz.
   =========================================================================== */
.wx { position: relative; height: 100%; min-height: 100%; overflow: hidden; isolation: isolate; container-type: inline-size;
  color: var(--wx-ink, rgb(var(--c-text)));
  background: linear-gradient(160deg, var(--wx-a, rgb(var(--c-card2))), var(--wx-b, rgb(var(--c-card2))) 55%, var(--wx-c, rgb(var(--c-card))));
  transition: background 1.2s ease, color .6s ease; }
.wx-content { position: relative; z-index: 2; display: flex; flex-direction: column; gap: .6rem; padding: .8rem .9rem .7rem; height: 100%; overflow: auto; }
.wx-muted { color: var(--wx-muted, rgb(var(--c-muted))); }
.wx-btn { width: 1.9rem; height: 1.9rem; display: grid; place-items: center; border-radius: 999px; background: var(--wx-glass); border: 1px solid var(--wx-line); color: inherit; flex: none; }
.wx-btn:hover { filter: brightness(1.12); }
.wx-notice { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; font-size: .72rem; padding: .3rem .55rem; border-radius: .6rem; background: var(--wx-glass); border: 1px solid var(--wx-line); }
.wx-now { display: flex; align-items: center; gap: .8rem; }
.wx-emoji { font-size: 3.2rem; line-height: 1; filter: drop-shadow(0 6px 14px rgb(0 0 0 / .22)); animation: wxBob 6s ease-in-out infinite; }
.wx-temp { font-size: 2.6rem; font-weight: 800; line-height: 1; letter-spacing: -.02em; }
.wx-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .4rem; }
.wx-stats > div { display: flex; flex-direction: column; align-items: center; gap: .1rem; padding: .4rem .2rem; border-radius: .7rem; background: var(--wx-glass); border: 1px solid var(--wx-line); font-size: .8rem; }
.wx-stats span { font-size: .66rem; color: var(--wx-muted); }
.wx-days { display: flex; flex-direction: column; gap: .25rem; }
.wx-day { display: grid; grid-template-columns: 3.4rem 1.9rem 3.1rem 2.2rem minmax(3rem, 1fr) 2.2rem; align-items: center; gap: .35rem; padding: .25rem .45rem; border-radius: .7rem;
  background: var(--wx-glass); border: 1px solid var(--wx-line); font-size: .8rem; animation: wxRise .45s ease backwards; }
.wx-day:nth-child(2) { animation-delay: .04s } .wx-day:nth-child(3) { animation-delay: .08s } .wx-day:nth-child(4) { animation-delay: .12s }
.wx-day:nth-child(5) { animation-delay: .16s } .wx-day:nth-child(6) { animation-delay: .2s } .wx-day:nth-child(7) { animation-delay: .24s }
.wx-dname { font-weight: 700; text-transform: capitalize; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wx-dicon { width: 1.8rem; height: 1.8rem; display: grid; place-items: center; border-radius: .55rem; font-size: 1rem; box-shadow: inset 0 0 0 1px rgb(255 255 255 / .25); }
.wx-pop { font-size: .68rem; color: var(--wx-muted); white-space: nowrap; }
.wx-tmin { text-align: right; color: var(--wx-muted); }
.wx-tmax { font-weight: 700; }
.wx-bar { position: relative; height: .38rem; border-radius: 999px; background: var(--wx-line); overflow: hidden; }
.wx-bar > span { position: absolute; top: 0; bottom: 0; border-radius: 999px; }
.wx-foot { margin-top: auto; font-size: .66rem; color: var(--wx-muted); text-align: right; }
.wx-picker { display: flex; flex-direction: column; gap: .2rem; padding: .45rem; border-radius: .8rem; background: rgb(var(--c-card)); color: rgb(var(--c-text));
  border: 1px solid rgb(var(--c-line)); box-shadow: 0 12px 30px rgb(0 0 0 / .25); z-index: 5; text-align: left; width: 100%; max-width: 26rem; }
.wx-pick-row { display: flex; align-items: center; gap: .45rem; width: 100%; text-align: left; padding: .38rem .5rem; border-radius: .5rem; font-size: .8rem; }
.wx-pick-row:hover { background: rgb(var(--c-accent) / .12); }
@container (max-width: 330px) {
  .wx-day { grid-template-columns: 2.7rem 1.7rem 2rem minmax(2rem, 1fr) 2rem; }
  .wx-pop { display: none; }
  .wx-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* yükleniyor (iskelet) ve hata: henüz hava bilgisi yokken tema renkleriyle */
.wx-loading, .wx-error { background: rgb(var(--c-card2) / .6); color: rgb(var(--c-text)); }
.wx-sk { display: inline-block; border-radius: .6rem; background: linear-gradient(90deg, rgb(var(--c-line) / .55) 0%, rgb(var(--c-line) / .95) 50%, rgb(var(--c-line) / .55) 100%);
  background-size: 200% 100%; animation: wxShimmer 1.3s linear infinite; }
.wx-sk.block { display: block; }
.wx-sk.round { border-radius: 999px; }

/* sahne: WMO koduna göre kurulan animasyon katmanı.
   Düşen öğeler (yağmur/kar/dolu) sahne boyunda bir "sütun"dur; görünen damla ::before'dur — blok yüksekliği ne olursa olsun çalışır. */
.wx-scene { position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden; }
.wx-sun { position: absolute; top: -2.2rem; right: -1.6rem; width: 8.5rem; height: 8.5rem; border-radius: 999px;
  background: radial-gradient(circle, var(--wx-sun) 0 34%, transparent 70%); animation: wxPulse 5s ease-in-out infinite; }
.wx-rays { position: absolute; inset: -30%; border-radius: 999px;
  background: repeating-conic-gradient(from 0deg, color-mix(in srgb, var(--wx-sun) 45%, transparent) 0 6deg, transparent 6deg 22deg);
  -webkit-mask: radial-gradient(circle, transparent 30%, #000 34%, transparent 70%); mask: radial-gradient(circle, transparent 30%, #000 34%, transparent 70%);
  animation: gdsSpin calc(40s * var(--wx-speed, 1)) linear infinite; }
.wx-moon { position: absolute; top: .9rem; right: 1.2rem; width: 3.4rem; height: 3.4rem; border-radius: 999px; box-shadow: inset -.9rem -.35rem 0 0 rgb(255 250 225 / .95);
  filter: drop-shadow(0 0 14px rgb(255 245 200 / .45)); animation: wxBob 9s ease-in-out infinite; }
.wx-star { position: absolute; left: var(--x); top: var(--y); width: 3px; height: 3px; border-radius: 999px; background: #fff; transform: scale(var(--s)); opacity: .2;
  animation: wxTwinkle 3.2s ease-in-out var(--d) infinite; }
.wx-cloud { position: absolute; top: var(--y); left: -40%; width: 7rem; height: 2.2rem; border-radius: 999px; background: var(--wx-cloud); filter: blur(1px); transform: scale(var(--s));
  animation: wxDrift calc(var(--t) * var(--wx-speed, 1)) linear var(--d) infinite; }
.wx-cloud::before, .wx-cloud::after { content: ''; position: absolute; border-radius: 999px; background: inherit; }
.wx-cloud::before { width: 3rem; height: 3rem; left: 1.1rem; top: -1.4rem; }
.wx-cloud::after { width: 2.3rem; height: 2.3rem; left: 3.4rem; top: -.9rem; }
.wx-drop, .wx-hail, .wx-flake { position: absolute; top: 0; height: 100%; left: var(--x); width: 6px; }
.wx-drop { animation: wxFall calc(var(--t) * var(--wx-speed, 1)) linear var(--d) infinite; }
.wx-drop::before { content: ''; display: block; width: 2px; height: 1.1rem; border-radius: 2px; background: linear-gradient(to bottom, transparent, var(--wx-drop)); transform: rotate(12deg); }
.wx-drop.fine::before { height: .6rem; width: 1px; opacity: .8; }
.wx-drop.icy::before { background: linear-gradient(to bottom, transparent, rgb(220 245 255 / .9)); }
.wx-hail { animation: wxFall var(--t) cubic-bezier(.5, 0, 1, 1) var(--d) infinite; }
.wx-hail::before { content: ''; display: block; width: 5px; height: 5px; border-radius: 999px; background: rgb(240 248 255 / .95); }
.wx-flake { animation: wxSnow var(--t) linear var(--d) infinite; }
.wx-flake::before { content: ''; display: block; width: 6px; height: 6px; border-radius: 999px; background: rgb(255 255 255 / .92); box-shadow: 0 0 4px rgb(255 255 255 / .7); transform: scale(var(--s)); }
.wx-fog { position: absolute; left: -50%; top: var(--y); width: 200%; height: 2.6rem;
  background: linear-gradient(90deg, transparent, rgb(255 255 255 / .28), transparent 40%, rgb(255 255 255 / .22), transparent);
  filter: blur(6px); animation: wxFog var(--t) ease-in-out var(--d) infinite alternate; }
.wx-flash { position: absolute; inset: 0; background: rgb(235 240 255); opacity: 0; animation: wxFlash var(--t) linear infinite; }
.wx-bolt { position: absolute; top: 12%; right: 22%; width: 1.4rem; height: 3.6rem; background: rgb(255 240 150); opacity: 0;
  clip-path: polygon(45% 0, 100% 0, 62% 42%, 92% 42%, 18% 100%, 38% 55%, 8% 55%);
  filter: drop-shadow(0 0 10px rgb(255 240 150)); animation: wxFlash calc(var(--wx-speed, 1) * 6s) linear 1.2s infinite; }
@keyframes wxRise { from { transform: translateY(6px) } to { transform: none } }
@keyframes wxShimmer { from { background-position: 200% 0 } to { background-position: -200% 0 } }
@keyframes wxPulse { 0%, 100% { transform: scale(1); opacity: .95 } 50% { transform: scale(1.07); opacity: 1 } }
@keyframes wxBob { 0%, 100% { transform: translateY(0) } 50% { transform: translateY(-4px) } }
@keyframes wxTwinkle { 0%, 100% { opacity: .15 } 50% { opacity: .95 } }
@keyframes wxDrift { from { transform: translateX(0) scale(var(--s)) } to { transform: translateX(190%) scale(var(--s)) } }
@keyframes wxFall { from { transform: translate(0, -12%) } to { transform: translate(-1.4rem, 105%) } }
@keyframes wxSnow { 0% { transform: translate(0, -8%) } 50% { transform: translate(.9rem, 46%) } 100% { transform: translate(-.4rem, 102%) } }
@keyframes wxFog { from { transform: translateX(-12%) } to { transform: translateX(12%) } }
@keyframes wxFlash { 0%, 88%, 92%, 100% { opacity: 0 } 89%, 91% { opacity: .55 } 90% { opacity: .1 } }
@media (prefers-reduced-motion: reduce) { .wx, .wx * { animation: none !important; transition: none !important; } }

/* ---------------------------------------------------------------- v1.2.24 Ekip Köşesi, tepkiler, üst bar mini araçları
   Yalnızca tema değişkenleri kullanılır (bloklar ayrı renk almaz). */
.react-row { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: .25rem; }
.react-chip { display: inline-flex; align-items: center; gap: .25rem; padding: .05rem .45rem; border-radius: 999px; font-size: .78rem; line-height: 1.5;
  border: 1px solid rgb(var(--c-line)); background: rgb(var(--c-text) / .05); color: rgb(var(--c-text) / .85); transition: background var(--speed, .2s); }
.react-chip b { font-size: .7rem; font-weight: 700; }
.react-chip:hover { background: rgb(var(--c-text) / .1); }
.react-chip.mine { border-color: rgb(var(--c-accent) / .7); background: rgb(var(--c-accent) / .16); color: rgb(var(--c-accent)); }
.react-pick { font-size: 1.25rem; line-height: 1; padding: .3rem; border-radius: .5rem; transition: transform .12s; }
.react-pick:hover { background: rgb(var(--c-text) / .08); transform: scale(1.18); }
.celebrate-card { display: flex; align-items: center; gap: .75rem; padding: .75rem .9rem; border-radius: var(--radius, 14px);
  border: 1px dashed rgb(var(--c-accent) / .55); background: rgb(var(--c-accent) / .08); }
.celebrate-banner { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem 1rem; padding: .55rem .9rem; border-radius: var(--radius, 14px);
  background: rgb(var(--c-accent) / .12); border: 1px solid rgb(var(--c-accent) / .35); font-size: .85rem; cursor: pointer; }
.mini-cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; }
.mini-cal-h { font-size: .62rem; font-weight: 700; color: rgb(var(--c-muted)); text-transform: uppercase; padding: .15rem 0; }
.mini-cal-d { position: relative; font-size: .78rem; padding: .3rem 0 .4rem; border-radius: .45rem; color: rgb(var(--c-text)); }
.mini-cal-d:hover { background: rgb(var(--c-text) / .08); }
.mini-cal-d.today { color: rgb(var(--c-accent)); font-weight: 800; }
.mini-cal-d.sel { background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); font-weight: 700; }
.mini-cal-d i { position: absolute; left: 50%; bottom: .15rem; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: rgb(var(--c-accent)); }
.mini-cal-d.sel i { background: rgb(var(--c-onaccent)); }
.calc-key { padding: .45rem 0; border-radius: .5rem; font-weight: 600; font-size: .9rem; background: rgb(var(--c-text) / .06); color: rgb(var(--c-text)); }
.calc-key:hover { background: rgb(var(--c-text) / .12); }
.calc-key.op { color: rgb(var(--c-accent)); }
.calc-key.eq { background: rgb(var(--c-accent)); color: rgb(var(--c-onaccent)); }
html.gds-mobile .react-chip { min-height: 32px; padding: .1rem .6rem; }

/* ---------------------------------------------------------------- v1.2.25 TR resmi tatilleri (takvim)
   Tatil rozeti takvim içeriğidir (blok rengi değildir); tema değişkenleriyle çizilir. */
.cal-cell.holiday { background: rgb(var(--c-bad) / .07); }
.cal-hol { position: absolute; top: .3rem; right: .25rem; max-width: calc(100% - 2.1rem); font-size: .6rem; font-weight: 700; line-height: 1.1rem;
  padding: 0 .35rem; border-radius: 999px; background: rgb(var(--c-bad) / .16); color: rgb(var(--c-bad)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-hol-chip { font-size: .66rem; font-weight: 700; padding: .1rem .4rem; margin-bottom: .25rem; border-radius: .4rem; background: rgb(var(--c-bad) / .14); color: rgb(var(--c-bad)); }
.cal-hol-row { background: rgb(var(--c-bad) / .08); border: 1px dashed rgb(var(--c-bad) / .35); }
