/* Uzser Visualization — bileşen stilleri.
   Bütün renk/ölçüler tema token'larından (--uv-*) gelir; UzserThemeProvider veya bileşenin kendisi tanımlar.
   Kullanıcının CSS yazması gerekmez. */

.uv-root {
    color: var(--uv-text, #0b0b0b);
    font-family: var(--uv-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
    color-scheme: var(--uv-color-scheme, light);
}

/* ------------------------------------------------------------------ Görsel kabı */
.uv-visual {
    position: relative;
    box-sizing: border-box;
    overflow: hidden;
    background: var(--uv-surface, #fcfcfb);
    border-radius: var(--uv-radius, 8px);
    color: var(--uv-text, #0b0b0b);
    font-family: var(--uv-font, system-ui, sans-serif);
    min-width: 0;
    min-height: 0;
}
.uv-visual > .uv-svg, .uv-visual > .uv-canvas { display: block; }
.uv-svg { overflow: visible; user-select: none; -webkit-user-select: none; }
.uv-svg text { font-family: inherit; }
.uv-svg .uv-mark { cursor: pointer; transition: opacity .15s ease, filter .15s ease; outline: none; }
.uv-svg .uv-mark.uv-hover, .uv-svg .uv-mark:focus-visible { filter: brightness(1.08) saturate(1.05); }
.uv-svg .uv-mark:focus-visible { stroke: var(--uv-accent); stroke-width: 2px; }
.uv-svg .uv-hit { cursor: pointer; }
.uv-svg .uv-legend rect { cursor: default; }
.uv-svg .uv-legend-more { cursor: help; }
.uv-visual[aria-busy="true"] .uv-svg { opacity: .92; }

/* Araç çubuğu (hover/odakta görünür) */
.uv-toolbar {
    position: absolute; top: 6px; right: 6px; display: flex; gap: 2px; padding: 2px;
    background: var(--uv-surface); border: 1px solid var(--uv-border); border-radius: 6px;
    box-shadow: var(--uv-shadow-pop); opacity: 0; transform: translateY(-2px);
    transition: opacity .15s ease, transform .15s ease; z-index: 3;
}
.uv-visual:hover > .uv-toolbar, .uv-visual:focus-within > .uv-toolbar { opacity: 1; transform: none; }
.uv-tool {
    border: 0; background: transparent; color: var(--uv-text-2); height: 24px; min-width: 24px; padding: 0 4px;
    border-radius: 4px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
    font: 600 10px/1 var(--uv-font); letter-spacing: .02em;
}
.uv-tool:hover { background: var(--uv-hover); color: var(--uv-text); }
.uv-tool.is-on { color: var(--uv-accent); }
.uv-tool svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* Tooltip */
.uv-tooltip {
    position: fixed; z-index: 10000; pointer-events: none; max-width: 300px;
    background: var(--uv-surface, #fff); color: var(--uv-text, #0b0b0b);
    border: 1px solid var(--uv-border, rgba(0,0,0,.1)); border-radius: 8px; padding: 8px 10px;
    box-shadow: var(--uv-shadow-pop, 0 4px 16px rgba(0,0,0,.16));
    font: 12px/1.45 var(--uv-font, system-ui, sans-serif); opacity: 0; transform: translateY(2px);
    transition: opacity .1s ease, transform .1s ease;
}
.uv-tooltip.is-on { opacity: 1; transform: none; }
.uv-tip-title { font-weight: 600; margin-bottom: 2px; }
.uv-tip-row { display: flex; justify-content: space-between; gap: 16px; color: var(--uv-text-2, #52514e); }
.uv-tip-val { color: var(--uv-text, #0b0b0b); font-variant-numeric: tabular-nums; font-weight: 500; }

/* ------------------------------------------------------------------ Tablo / matris */
.uv-table-wrap { display: flex; flex-direction: column; position: relative; }
/* Yükleniyor (loading / sunucu kipi isteği), hata, boş tablo, klavyeyle sıralama */
.uv-table-loading {
    position: absolute; top: 8px; left: 50%; transform: translateX(-50%); z-index: 5; display: flex; align-items: center; gap: 6px;
    padding: 4px 10px; border-radius: 12px; background: var(--uv-surface); color: var(--uv-text-2); font-size: 12px;
    box-shadow: 0 1px 3px rgba(11,11,11,0.16); white-space: nowrap;
}
.uv-table-wrap.is-loading .uv-table-scroll { opacity: .6; }
.uv-spinner {
    width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--uv-grid); border-top-color: var(--uv-accent);
    animation: uv-spin .8s linear infinite;
}
@keyframes uv-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .uv-spinner { animation: none; } }
.uv-table-error { display: flex; align-items: center; gap: 8px; padding: 6px 10px; font-size: 12px; color: var(--uv-text); border-bottom: 1px solid var(--uv-grid); }
.uv-table td.uv-empty-cell { text-align: center; color: var(--uv-muted); font-size: 12px; white-space: normal; }
.uv-table thead th.uv-sortable:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; }
.uv-table-head {
    height: 34px; flex: 0 0 34px; display: flex; align-items: center; gap: 8px; padding: 0 10px;
    border-bottom: 1px solid var(--uv-grid);
}
.uv-table-title { font-weight: 600; font-size: var(--uv-fs-title, 14px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1 1 auto; min-width: 0; }
.uv-table-count { color: var(--uv-muted); font-size: 11px; white-space: nowrap; }
/* Dikeyde kaydırma zinciri açık: tablonun sonuna (ya da başına) gelince tekerlek sayfaya / panoya geçer (contain iken imleç
   tablonun üstündeyken sayfa kaymıyordu). Yatayda contain: yatay kaydırma tarayıcının geri/ileri hareketini tetiklemez. */
.uv-table-scroll { overflow: auto; flex: 1 1 auto; min-height: 0; overscroll-behavior-x: contain; overscroll-behavior-y: auto; }
.uv-table { border-collapse: separate; border-spacing: 0; table-layout: fixed; width: 100%; color: var(--uv-text); }
.uv-table th, .uv-table td {
    padding: 0 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    border-bottom: 1px solid var(--uv-grid); text-align: left;
}
.uv-table thead th {
    position: sticky; top: 0; z-index: 2; background: var(--uv-surface); color: var(--uv-text-2);
    font-weight: 600; border-bottom: 1px solid var(--uv-axis);
}
.uv-table tfoot td { position: sticky; bottom: 0; background: var(--uv-surface); font-weight: 600; border-top: 1px solid var(--uv-axis); }
.uv-table .uv-num { font-variant-numeric: tabular-nums; }
.uv-align-right { text-align: right !important; }
.uv-align-center { text-align: center !important; }
.uv-align-left { text-align: left !important; }
.uv-sortable { cursor: pointer; user-select: none; }
.uv-sortable:hover { color: var(--uv-text); }
.uv-sort { margin-left: 4px; font-size: 9px; color: var(--uv-accent); }
.uv-th-text { overflow: hidden; text-overflow: ellipsis; }
.uv-striped tbody tr:nth-child(even) td { background: var(--uv-hover); }
.uv-table tbody tr:hover td { background: color-mix(in srgb, var(--uv-accent) 8%, transparent); }
.uv-table tr.uv-clickable { cursor: pointer; }
.uv-table tr.is-selected td { background: color-mix(in srgb, var(--uv-accent) 16%, transparent) !important; }
.uv-table tr.is-dim td { opacity: .5; }
.uv-density-minimal th, .uv-density-minimal td { padding: 0 6px; }
.uv-icon { margin-right: 4px; font-size: 10px; }
.uv-matrix .uv-sticky { position: sticky; left: 0; z-index: 1; background: var(--uv-surface); font-weight: 500; }
.uv-matrix thead .uv-sticky { z-index: 3; }
.uv-matrix .uv-group th, .uv-matrix .uv-group td { font-weight: 600; }
.uv-matrix .uv-grand th, .uv-matrix .uv-grand td { font-weight: 700; border-top: 1px solid var(--uv-axis); background: var(--uv-surface); position: sticky; bottom: 0; }
.uv-matrix .uv-total { font-weight: 600; }
.uv-expander {
    border: 0; background: transparent; color: var(--uv-text-2); cursor: pointer; width: 16px; padding: 0;
    margin-right: 2px; font-size: 11px; line-height: 1;
}
.uv-expander:hover { color: var(--uv-accent); }
.uv-dataview { overflow: auto; }
.uv-note, .uv-empty { color: var(--uv-muted); font-size: 12px; padding: 10px; }
.uv-empty { display: flex; align-items: center; justify-content: center; height: 100%; }
.uv-badge {
    font-size: 11px; color: var(--uv-text-2); background: var(--uv-hover); border-radius: 10px; padding: 2px 8px; cursor: help; white-space: nowrap;
}
/* Satır eylemleri (table.basic rowActions): son sütun, düğme metni kullanıcı verisi */
.uv-table td.uv-row-actions { padding: 0 8px; }
.uv-row-action {
    height: 22px; max-width: 100%; padding: 0 8px; margin-left: 4px; border: 1px solid var(--uv-axis); border-radius: 4px;
    background: var(--uv-surface); color: var(--uv-accent); font: 500 12px/1 var(--uv-font); cursor: pointer;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; vertical-align: middle;
}
.uv-row-action:first-child { margin-left: 0; }
.uv-row-action:hover { border-color: var(--uv-accent); background: var(--uv-hover); }
.uv-row-action:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: 1px; }
.uv-row-action:disabled { opacity: .5; cursor: default; }
/* Eylem sütunu başta + yatay kaydırma (columnOverflow: scroll): yana kayınca görünür kalır */
.uv-table .uv-sticky-start { position: sticky; left: 0; z-index: 1; background: var(--uv-surface); box-shadow: inset -1px 0 0 var(--uv-grid); }
.uv-table thead th.uv-sticky-start, .uv-table tfoot td.uv-sticky-start { z-index: 3; }
.uv-striped tbody tr:nth-child(even) td.uv-sticky-start { background: linear-gradient(var(--uv-hover), var(--uv-hover)) var(--uv-surface); }
.uv-table tbody tr:hover td.uv-sticky-start { background: linear-gradient(color-mix(in srgb, var(--uv-accent) 8%, transparent), color-mix(in srgb, var(--uv-accent) 8%, transparent)) var(--uv-surface); }
.uv-table tr.is-selected td.uv-sticky-start { background: linear-gradient(color-mix(in srgb, var(--uv-accent) 16%, transparent), color-mix(in srgb, var(--uv-accent) 16%, transparent)) var(--uv-surface) !important; }
/* Süzülebilir hücre / matris başlığı (filterableColumns, filterable): tıklayınca alan = değer ile süzer */
.uv-table .uv-filterable { cursor: pointer; }
.uv-table td.uv-filterable:hover, .uv-table span.uv-filterable:hover { text-decoration: underline; text-decoration-color: var(--uv-accent); text-underline-offset: 2px; }
.uv-table .uv-filterable:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; }
/* Sayfalayıcı (pageSize) */
/* Düğmeler ve aralık tek grup olarak sağda (oklar kenarlara dağılmaz); düğmeler 28 px dokunma hedefi. Yükseklik 34 px
   kalır (tablo yerleşimi PagerHeight = 34 ile hesaplar). */
.uv-pager {
    height: 34px; flex: 0 0 34px; display: flex; align-items: center; justify-content: flex-end; gap: 2px; padding: 0 6px;
    min-width: 0; overflow: hidden; border-top: 1px solid var(--uv-grid); font-size: 12px; color: var(--uv-text-2);
}
.uv-pager-btn { flex: 0 0 auto; width: 28px; height: 28px; min-width: 28px; padding: 0; border-radius: 6px; font-size: 18px; font-weight: 500; line-height: 1; }
.uv-pager-btn:not(:disabled):hover { background: var(--uv-hover); color: var(--uv-accent); }
.uv-pager-btn:disabled { opacity: .3; }
.uv-pager-btn:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; }
.uv-pager-range { flex: 0 1 auto; min-width: 0; padding: 0 8px; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; color: var(--uv-text); }
.uv-pager-size { flex: 0 0 auto; margin-left: 8px; }
.uv-pager-size .uv-input { width: auto; height: 24px; padding: 0 4px; font-size: 12px; }

/* ------------------------------------------------------------------ Slicer */
.uv-slicer { display: flex; flex-direction: column; padding: 8px; gap: 6px; overflow: visible; }
.uv-slicer-head { display: flex; align-items: center; gap: 8px; min-height: 20px; }
.uv-slicer-title { font-weight: 600; font-size: 13px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-link { border: 0; background: none; color: var(--uv-accent); cursor: pointer; font: 500 12px var(--uv-font); padding: 0; white-space: nowrap; }
.uv-link:hover { text-decoration: underline; }
.uv-slicer-list { overflow: auto; flex: 1; min-height: 0; display: flex; flex-direction: column; }
.uv-option {
    display: flex; align-items: center; gap: 8px; width: 100%; min-height: var(--uv-item-h, 30px); padding: 0 6px;
    border: 0; background: transparent; color: var(--uv-text); text-align: left; cursor: pointer; border-radius: 6px;
    font: 13px var(--uv-font);
}
.uv-option:hover { background: var(--uv-hover); }
.uv-option.is-empty { color: var(--uv-muted); }
.uv-option-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-option-count { color: var(--uv-muted); font-size: 11px; font-variant-numeric: tabular-nums; }
.uv-check {
    width: 16px; height: 16px; flex: 0 0 16px; border: 1.5px solid var(--uv-axis); border-radius: 4px;
    display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: var(--uv-accent-text);
}
.uv-check.uv-radio { border-radius: 50%; font-size: 8px; }
.uv-option.is-selected .uv-check { background: var(--uv-accent); border-color: var(--uv-accent); }
.uv-tiles { display: flex; flex-wrap: wrap; gap: 6px; overflow: auto; align-content: flex-start; }
.uv-tile {
    border: 1px solid var(--uv-axis); background: var(--uv-surface); color: var(--uv-text); border-radius: 16px;
    padding: 4px 12px; font: 500 12px var(--uv-font); cursor: pointer; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.uv-tile:hover { border-color: var(--uv-accent); }
.uv-tile.is-selected { background: var(--uv-accent); border-color: var(--uv-accent); color: var(--uv-accent-text); }
.uv-tile.is-empty { opacity: .55; }
.uv-dropdown { position: relative; }
.uv-dropdown-button {
    width: 100%; display: flex; align-items: center; gap: 8px; height: 34px; padding: 0 10px; border: 1px solid var(--uv-axis);
    border-radius: 6px; background: var(--uv-surface); color: var(--uv-text); cursor: pointer; font: 13px var(--uv-font); text-align: left;
}
.uv-dropdown-label { color: var(--uv-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 45%; }
.uv-dropdown-value { flex: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.uv-dropdown-panel {
    position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 50; max-height: 280px; overflow: auto; padding: 4px;
    background: var(--uv-surface); border: 1px solid var(--uv-border); border-radius: 8px; box-shadow: var(--uv-shadow-pop);
    display: flex; flex-direction: column; gap: 2px;
}
.uv-slicer-dropdown { justify-content: center; }

/* ------------------------------------------------------------------ Form öğeleri */
.uv-input {
    box-sizing: border-box; width: 100%; height: 30px; padding: 0 8px; border: 1px solid var(--uv-axis); border-radius: 6px;
    background: var(--uv-surface); color: var(--uv-text); font: 13px var(--uv-font);
}
textarea.uv-input { height: auto; padding: 6px 8px; resize: vertical; }
.uv-input:focus { outline: 2px solid color-mix(in srgb, var(--uv-accent) 45%, transparent); outline-offset: 0; border-color: var(--uv-accent); }
.uv-mono { font-family: ui-monospace, "Cascadia Code", Consolas, monospace; font-size: 12px; }
.uv-switch { appearance: none; width: 34px; height: 20px; border-radius: 10px; background: var(--uv-axis); position: relative; cursor: pointer; flex: 0 0 34px; margin: 0; transition: background .15s; }
.uv-switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; transition: transform .15s; box-shadow: 0 1px 2px rgba(0,0,0,.3); }
.uv-switch:checked { background: var(--uv-accent); }
.uv-switch:checked::after { transform: translateX(14px); }
.uv-btn {
    display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border-radius: 6px; cursor: pointer;
    font: 500 13px var(--uv-font); border: 1px solid var(--uv-axis); background: var(--uv-surface); color: var(--uv-text); white-space: nowrap;
}
.uv-btn:hover { border-color: var(--uv-accent); }
.uv-btn-primary { background: var(--uv-accent); border-color: var(--uv-accent); color: var(--uv-accent-text); }
.uv-btn-primary:hover { filter: brightness(1.06); }
.uv-btn-ghost { border-color: transparent; background: transparent; }
.uv-btn-ghost:hover { background: var(--uv-hover); border-color: transparent; }
.uv-sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.uv-hidden-file { display: none; }

/* ------------------------------------------------------------------ 3D */
.uv-3d .uv-3d-canvas { position: absolute; left: 0; top: 0; width: 100%; height: 100%; display: block; touch-action: none; cursor: grab; }
.uv-3d .uv-3d-canvas:active { cursor: grabbing; }
.uv-3d-title { position: absolute; left: 12px; top: 8px; right: 60px; font-weight: 600; font-size: var(--uv-fs-title); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }
.uv-3d-hint { position: absolute; right: 8px; bottom: 6px; font-size: 10px; color: var(--uv-muted); pointer-events: none; opacity: 0; transition: opacity .2s; }
.uv-3d:hover .uv-3d-hint { opacity: 1; }
.uv-3d-legend { position: absolute; right: 10px; margin: 0; padding: 6px 8px; list-style: none; display: flex; flex-direction: column; gap: 3px; max-width: 35%; max-height: calc(100% - 60px); overflow: hidden;
    background: color-mix(in srgb, var(--uv-surface) 88%, transparent); border-radius: 6px; font-size: 11px; color: var(--uv-text-2); pointer-events: none; }
.uv-3d-legend li { display: flex; align-items: center; gap: 6px; min-width: 0; }
.uv-3d-legend i { flex: none; width: 10px; height: 10px; border-radius: 2px; }
.uv-3d-legend span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-3d-labels { position: absolute; left: 0; right: 0; bottom: 0; pointer-events: none; overflow: hidden; }
.uv-3d-labels span { position: absolute; left: 0; top: 0; font-size: 10px; color: var(--uv-text-2); white-space: nowrap; transform-origin: 0 0; }
.uv-3d-labels span.is-strong { font-size: 11px; font-weight: 600; color: var(--uv-text); }

/* ------------------------------------------------------------------ Pano */
.uv-dashboard { position: relative; width: 100%; }
.uv-dashboard-theme { background: var(--uv-page); border-radius: var(--uv-radius-lg); }
.uv-dash-header { display: flex; align-items: center; gap: 10px; padding: 10px 12px 2px; }
.uv-dash-title { font-weight: 600; font-size: 16px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-dash-mode { font-size: 11px; color: var(--uv-muted); white-space: nowrap; }
.uv-dash-canvas { position: relative; width: 100%; }
.uv-dash-item { position: absolute; box-sizing: border-box; padding: 6px; }
.uv-dash-item > .uv-visual, .uv-dash-item > div { box-shadow: var(--uv-shadow); border: 1px solid var(--uv-border); }

/* ------------------------------------------------------------------ Designer */
.uv-designer-theme { height: 100%; }
.uv-designer {
    display: grid; grid-template-rows: auto 1fr auto; height: 100%; min-height: 560px; background: var(--uv-page);
    border: 1px solid var(--uv-border); border-radius: var(--uv-radius-lg); overflow: hidden; outline: none;
}
.uv-ds-toolbar {
    display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 6px 10px; background: var(--uv-surface);
    border-bottom: 1px solid var(--uv-border);
}
.uv-ds-group { display: flex; align-items: center; gap: 1px; padding-right: 10px; border-right: 1px solid var(--uv-grid); }
.uv-ds-group:last-child { border-right: 0; }
.uv-ds-right { margin-left: auto; gap: 6px; }
.uv-ds-name { width: 180px; font-weight: 600; border-color: transparent; }
.uv-ds-name:hover { border-color: var(--uv-axis); }
.uv-icon-btn {
    width: 30px; height: 30px; border: 0; border-radius: 6px; background: transparent; color: var(--uv-text-2);
    display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
}
.uv-icon-btn:hover:not(:disabled) { background: var(--uv-hover); color: var(--uv-text); }
.uv-icon-btn:disabled { opacity: .35; cursor: default; }
.uv-icon-btn.is-on { color: var(--uv-accent); background: color-mix(in srgb, var(--uv-accent) 10%, transparent); }
.uv-icon-btn svg, .uv-lib-item svg, .uv-panel-head svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.uv-zoom { min-width: 56px; justify-content: center; font-variant-numeric: tabular-nums; }
.uv-seg { height: 28px; padding: 0 10px; border: 1px solid var(--uv-axis); background: var(--uv-surface); color: var(--uv-text-2); cursor: pointer; font: 500 12px var(--uv-font); }
.uv-seg:first-child { border-radius: 6px 0 0 6px; }
.uv-seg:last-child { border-radius: 0 6px 6px 0; }
.uv-seg + .uv-seg { border-left: 0; }
.uv-seg.is-on { background: var(--uv-accent); border-color: var(--uv-accent); color: var(--uv-accent-text); }
.uv-ds-body { display: grid; grid-template-columns: 220px 1fr 300px; min-height: 0; }
.uv-ds-library { overflow: auto; padding: 10px; background: var(--uv-surface); border-right: 1px solid var(--uv-border); display: flex; flex-direction: column; gap: 10px; }
.uv-lib-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--uv-muted); margin: 4px 2px; }
.uv-lib-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
.uv-lib-item {
    display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px 4px; border: 1px solid transparent; border-radius: 8px;
    background: transparent; color: var(--uv-text-2); cursor: grab; font: 11px/1.2 var(--uv-font); text-align: center;
}
.uv-lib-item:hover { border-color: var(--uv-axis); background: var(--uv-hover); color: var(--uv-text); }
.uv-lib-item svg { width: 22px; height: 22px; }
.uv-ds-stage { overflow: auto; padding: 24px; min-width: 0; position: relative; }
.uv-ds-canvas-outer { position: relative; margin: 0 auto; }
.uv-ds-canvas {
    position: absolute; left: 0; top: 0; transform-origin: 0 0; background: var(--uv-surface);
    box-shadow: 0 0 0 1px var(--uv-border), var(--uv-shadow); border-radius: 4px; touch-action: none;
}
.uv-ds-grid {
    background-image: radial-gradient(circle, color-mix(in srgb, var(--uv-text) 16%, transparent) 1px, transparent 1.2px);
    background-size: var(--uv-grid-x, var(--uv-grid)) var(--uv-grid-y, var(--uv-grid));
}
/* Izgara kipi (VIS-06): hücre köşelerinde nokta, kenar boşluğu kadar kaydırılmış */
.uv-ds-cellgrid { background-image: radial-gradient(circle at 0 0, color-mix(in srgb, var(--uv-text) 22%, transparent) 1.5px, transparent 1.7px); background-position: var(--uv-grid-off, 0) var(--uv-grid-off, 0); }
.uv-panel-edit { margin-left: auto; }
.uv-panel-app { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.uv-ds-item { position: absolute; box-sizing: border-box; cursor: move; border-radius: 6px; }
.uv-ds-item-content { position: absolute; inset: 0; pointer-events: none; border-radius: 6px; box-shadow: 0 0 0 1px var(--uv-border); background: var(--uv-surface); }
.uv-ds-item:hover::after { content: ""; position: absolute; inset: -1px; border: 1px dashed color-mix(in srgb, var(--uv-accent) 60%, transparent); border-radius: 6px; pointer-events: none; }
.uv-ds-item.is-selected::after { content: ""; position: absolute; inset: -2px; border: 2px solid var(--uv-accent); border-radius: 7px; pointer-events: none; }
.uv-ds-item.is-grouped.is-selected::after { border-style: dashed; }
.uv-ds-item.is-locked { cursor: default; }
.uv-ds-item.is-locked.is-selected::after { border-color: var(--uv-muted); }
.uv-ds-item.is-hidden { opacity: .35; }
.uv-ds-handle {
    position: absolute; width: 10px; height: 10px; background: var(--uv-surface); border: 2px solid var(--uv-accent); border-radius: 2px; z-index: 5; box-sizing: border-box;
}
.uv-h-nw { left: -6px; top: -6px; cursor: nwse-resize; } .uv-h-n { left: calc(50% - 5px); top: -6px; cursor: ns-resize; }
.uv-h-ne { right: -6px; top: -6px; cursor: nesw-resize; } .uv-h-e { right: -6px; top: calc(50% - 5px); cursor: ew-resize; }
.uv-h-se { right: -6px; bottom: -6px; cursor: nwse-resize; } .uv-h-s { left: calc(50% - 5px); bottom: -6px; cursor: ns-resize; }
.uv-h-sw { left: -6px; bottom: -6px; cursor: nesw-resize; } .uv-h-w { left: -6px; top: calc(50% - 5px); cursor: ew-resize; }
.uv-ds-size {
    position: absolute; right: 0; bottom: -22px; font: 500 10px var(--uv-font); color: var(--uv-accent-text); background: var(--uv-accent);
    padding: 2px 6px; border-radius: 4px; pointer-events: none; font-variant-numeric: tabular-nums; z-index: 6;
}
.uv-ds-marquee { position: absolute; border: 1px solid var(--uv-accent); background: color-mix(in srgb, var(--uv-accent) 10%, transparent); pointer-events: none; z-index: 9999; }
.uv-ds-preview-frame { margin: 0 auto; background: var(--uv-page); box-shadow: 0 0 0 1px var(--uv-border), var(--uv-shadow); border-radius: 8px; }
.uv-ds-panel { background: var(--uv-surface); border-left: 1px solid var(--uv-border); display: flex; flex-direction: column; min-height: 0; }
.uv-tabs { display: flex; border-bottom: 1px solid var(--uv-border); padding: 0 8px; }
.uv-tab { flex: 1; height: 38px; border: 0; background: transparent; color: var(--uv-text-2); cursor: pointer; font: 500 13px var(--uv-font); border-bottom: 2px solid transparent; }
.uv-tab.is-on { color: var(--uv-text); border-bottom-color: var(--uv-accent); }
.uv-panel-scroll { overflow: auto; padding: 12px; flex: 1; min-height: 0; }
.uv-panel-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.uv-panel-head svg { width: 24px; height: 24px; color: var(--uv-accent); }
.uv-panel-type { font-weight: 600; }
.uv-panel-head code { font-size: 11px; color: var(--uv-muted); }
.uv-props { display: flex; flex-direction: column; gap: 10px; }
.uv-prop-group { border: 0; border-top: 1px solid var(--uv-grid); margin: 0; padding: 10px 0 0; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.uv-prop-group legend { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--uv-muted); padding: 0 6px 0 0; }
.uv-prop { display: grid; grid-template-columns: 104px 1fr; align-items: center; gap: 8px; font-size: 13px; min-width: 0; }
.uv-prop > label { color: var(--uv-text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-prop-expression, .uv-prop-array, .uv-prop-geometry, .uv-prop-object { grid-template-columns: 1fr; }
.uv-unit { color: var(--uv-muted); font-size: 11px; }
.uv-number { display: grid; grid-template-columns: 1fr 64px; gap: 6px; align-items: center; }
.uv-number:has(> :only-child) { grid-template-columns: 1fr; }
.uv-number input[type="range"] { width: 100%; accent-color: var(--uv-accent); }
.uv-color { display: grid; grid-template-columns: 34px 1fr; gap: 6px; align-items: center; }
.uv-color input[type="color"], .uv-palette input[type="color"] { width: 30px; height: 30px; padding: 0; border: 1px solid var(--uv-axis); border-radius: 6px; background: none; cursor: pointer; }
.uv-palette { display: flex; flex-wrap: wrap; gap: 4px; }
.uv-prop-palette { grid-template-columns: 1fr; }
.uv-error { color: var(--uv-danger); font-size: 12px; }
.uv-hint { color: var(--uv-muted); font-size: 12px; line-height: 1.45; }
.uv-issues { margin: 0; padding: 8px 10px; list-style: none; border-radius: 6px; background: var(--uv-hover); font-size: 11px; display: flex; flex-direction: column; gap: 3px; }
.uv-issues code { font-weight: 600; }
.uv-issue-error { color: var(--uv-danger); }
.uv-ds-status {
    display: flex; gap: 16px; align-items: center; padding: 4px 12px; font-size: 11px; color: var(--uv-muted);
    background: var(--uv-surface); border-top: 1px solid var(--uv-border);
}
.uv-ds-shortcuts { margin-left: auto; }
@media (max-width: 1100px) {
    .uv-ds-body { grid-template-columns: 180px 1fr 260px; }
}
@media (max-width: 820px) {
    .uv-ds-body { grid-template-columns: 1fr; grid-template-rows: auto 1fr auto; }
    .uv-ds-library { max-height: 160px; border-right: 0; border-bottom: 1px solid var(--uv-border); }
    .uv-lib-grid { grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); }
    .uv-ds-panel { max-height: 320px; border-left: 0; border-top: 1px solid var(--uv-border); }
    .uv-ds-shortcuts { display: none; }
}

/* Yazdırma */
@media print {
    body.uv-printing * { visibility: hidden; }
    body.uv-printing .uv-print-target, body.uv-printing .uv-print-target * { visibility: visible; }
    body.uv-printing .uv-print-target { position: absolute; left: 0; top: 0; }
    .uv-toolbar { display: none !important; }
}

@media (prefers-reduced-motion: reduce) {
    .uv-svg .uv-mark, .uv-toolbar, .uv-tooltip, .uv-switch, .uv-switch::after { transition: none; }
}

/* ---------- Drill notu, pano sayfaları, yer imleri ---------- */
.uv-tool-note { font-size: 11px; color: var(--uv-text-2); padding: 0 4px; max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-tool:disabled { opacity: .4; cursor: default; }
.uv-btn-secondary { background: color-mix(in srgb, var(--uv-accent) 10%, var(--uv-surface)); border-color: color-mix(in srgb, var(--uv-accent) 35%, transparent); color: var(--uv-text); }
.uv-btn:disabled { opacity: .5; cursor: not-allowed; }
.uv-dash-header { flex-wrap: wrap; }
.uv-dash-pages { display: flex; gap: 2px; padding: 4px 12px 0; overflow-x: auto; scrollbar-width: thin; border-bottom: 1px solid var(--uv-border); }
.uv-dash-page { border: 0; background: transparent; color: var(--uv-text-2); font: inherit; font-size: 13px; padding: 7px 12px; cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap; }
.uv-dash-page:hover { color: var(--uv-text); background: var(--uv-hover); }
.uv-dash-page.is-on { color: var(--uv-accent); border-bottom-color: var(--uv-accent); font-weight: 600; }
.uv-dash-page:focus-visible, .uv-ui-tab:focus-visible, .uv-ui-navlink:focus-visible, .uv-link:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; }
.uv-dash-bookmarks { position: relative; margin-left: auto; }
.uv-dash-bookmarks > summary { list-style: none; cursor: pointer; }
.uv-dash-bookmarks > summary::-webkit-details-marker { display: none; }
.uv-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 50; min-width: 240px; max-width: 320px; background: var(--uv-surface); border: 1px solid var(--uv-border);
    border-radius: 8px; box-shadow: 0 4px 16px rgba(11,11,11,.16); padding: 6px; display: flex; flex-direction: column; gap: 2px; }
.uv-menu-row { display: flex; align-items: center; gap: 4px; }
.uv-menu-item { flex: 1; text-align: left; border: 0; background: transparent; font: inherit; font-size: 13px; color: var(--uv-text); padding: 6px 8px; border-radius: 6px; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-menu-item:hover, .uv-menu-del:hover { background: var(--uv-hover); }
.uv-menu-del { border: 0; background: transparent; color: var(--uv-muted); width: 26px; height: 26px; border-radius: 6px; cursor: pointer; font-size: 16px; }
.uv-menu-empty { color: var(--uv-muted); font-size: 12px; padding: 6px 8px; }
.uv-menu-add { display: flex; gap: 6px; padding-top: 6px; border-top: 1px solid var(--uv-border); margin-top: 4px; }
.uv-menu-add .uv-input { flex: 1; min-width: 0; }

/* ---------- Arayüz bileşenleri (ui.*) ---------- */
.uv-ui { box-sizing: border-box; min-width: 0; color: var(--uv-text); font-family: var(--uv-font); position: relative; }
.uv-ui-title { margin: 0 0 8px; font-size: var(--uv-fs-title, 14px); font-weight: 600; color: var(--uv-text); }
.uv-ui-prose { line-height: 1.55; overflow-wrap: anywhere; height: 100%; box-sizing: border-box; padding: 4px 2px; }
.uv-ui-prose.is-scroll { overflow: auto; }
.uv-ui-prose > :first-child { margin-top: 0; }
.uv-ui-prose h2, .uv-ui-prose h3, .uv-ui-prose h4, .uv-ui-prose h5 { margin: .2em 0 .4em; line-height: 1.25; }
.uv-ui-prose p, .uv-ui-prose ul, .uv-ui-prose ol { margin: 0 0 .6em; }
.uv-ui-prose ul, .uv-ui-prose ol { padding-left: 1.3em; }
.uv-ui-prose a { color: var(--uv-accent); }
.uv-ui-prose code { font-family: ui-monospace, Consolas, monospace; font-size: .9em; background: var(--uv-hover); padding: 0 .3em; border-radius: 4px; }
.uv-ui-prose img { max-width: 100%; height: auto; }
.uv-ui-prose table { border-collapse: collapse; }
.uv-ui-prose td, .uv-ui-prose th { border: 1px solid var(--uv-border); padding: 4px 8px; }
.uv-ui-img { width: 100%; height: 100%; display: block; }
.uv-ui-img-empty { height: 100%; min-height: 32px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; color: var(--uv-muted); font-size: 12px; text-align: center;
    border: 1px dashed var(--uv-axis, #c3c2b7); border-radius: 8px; padding: 8px; box-sizing: border-box; }
.uv-ui-img-empty svg { width: 28px; height: 28px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.uv-ui--button { display: flex; align-items: center; }
.uv-ui-button { width: 100%; height: 100%; max-height: 56px; min-height: 32px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; overflow: hidden; }
.uv-ui-button span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-ui-button svg, .uv-ui-navlink svg { width: 16px; height: 16px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.uv-ui-icon { width: 100%; height: 100%; fill: none; stroke-linecap: round; stroke-linejoin: round; display: block; }
.uv-ui-divider { display: flex; align-items: center; gap: 10px; height: 100%; width: 100%; }
.uv-ui-divider > span { flex: 1; }
.uv-ui-divider.is-vertical { justify-content: center; }
.uv-ui-divider.is-vertical > span { flex: none; height: 100%; }
.uv-ui-divider em { font-style: normal; font-size: 12px; color: var(--uv-text-2); white-space: nowrap; }
.uv-ui-container { width: 100%; height: 100%; box-sizing: border-box; padding: 12px 14px; }
.uv-ui-tabs, .uv-ui-accordion { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.uv-ui-tablist { display: flex; gap: 2px; border-bottom: 1px solid var(--uv-border); overflow-x: auto; scrollbar-width: thin; flex: none; }
.uv-ui-tab { border: 0; background: transparent; font: inherit; font-size: 13px; color: var(--uv-text-2); padding: 7px 12px; cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap; }
.uv-ui-tab:hover { color: var(--uv-text); background: var(--uv-hover); }
.uv-ui-tab.is-on { color: var(--uv-accent); border-bottom-color: var(--uv-accent); font-weight: 600; }
.uv-ui-panel { flex: 1; min-height: 0; padding-top: 8px; overflow: auto; }
.uv-ui-panel > .uv-visual, .uv-ui-panel > .uv-ui { height: 100% !important; }
.uv-ui-accordion { overflow: auto; }
.uv-ui-section { border-bottom: 1px solid var(--uv-border); }
.uv-ui-section > summary { cursor: pointer; padding: 9px 4px; font-weight: 600; font-size: 13px; list-style-position: inside; }
.uv-ui-section > summary:hover { background: var(--uv-hover); }
.uv-ui-section-body { padding: 0 4px 10px; font-size: 13px; }
.uv-ui-breadcrumb ol { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin: 0; padding: 4px 2px; font-size: 13px; }
.uv-ui-breadcrumb li { display: flex; align-items: center; gap: 4px; min-width: 0; }
.uv-ui-breadcrumb [aria-current] { font-weight: 600; color: var(--uv-text); }
.uv-ui-sep { color: var(--uv-muted); }
.uv-link { border: 0; background: transparent; font: inherit; color: var(--uv-accent); cursor: pointer; padding: 0; text-decoration: underline; text-underline-offset: 2px; }
.uv-ui-nav { display: flex; gap: 4px; align-items: center; height: 100%; overflow-x: auto; scrollbar-width: thin; }
.uv-ui-nav.is-vertical { flex-direction: column; align-items: stretch; overflow-y: auto; }
.uv-ui-navlink { display: inline-flex; align-items: center; gap: 8px; border: 0; background: transparent; font: inherit; font-size: 13px; color: var(--uv-text-2); padding: 7px 10px; border-radius: 6px; cursor: pointer; text-decoration: none; white-space: nowrap; }
.uv-ui-navlink:hover:not(:disabled) { background: var(--uv-hover); color: var(--uv-text); }
.uv-ui-navlink.is-on { color: var(--uv-accent); background: color-mix(in srgb, var(--uv-accent) 10%, transparent); font-weight: 600; }
.uv-ui-navlink:disabled { cursor: default; }

/* ---------- Filtre kontrolleri ---------- */
.uv-filter { display: flex; flex-direction: column; gap: 6px; padding: 8px 10px; box-sizing: border-box; background: var(--uv-surface); border-radius: var(--uv-radius, 8px); overflow: hidden; }
.uv-filter .uv-empty { font-size: 12px; color: var(--uv-muted); }
.uv-filter .uv-slicer-head .uv-link { font-size: 12px; }
.uv-filter-row { display: flex; gap: 6px; align-items: flex-end; min-width: 0; }
.uv-filter-row > * { min-width: 0; }
.uv-filter-row .uv-input { flex: 1; min-width: 0; }
.uv-filter-field { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; font-size: 11px; color: var(--uv-text-2); }
.uv-filter.is-compact .uv-filter-field > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.uv-filter-n { max-width: 64px; }
.uv-filter-dash { color: var(--uv-muted); align-self: center; }
.uv-filter-note { font-size: 11px; color: var(--uv-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.uv-range { position: relative; height: 24px; }
.uv-range::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 4px; margin-top: -2px; border-radius: 2px;
    background: linear-gradient(to right, var(--uv-hover) var(--lo), var(--uv-accent) var(--lo), var(--uv-accent) var(--hi), var(--uv-hover) var(--hi)); }
.uv-range input[type=range] { position: absolute; inset: 0; width: 100%; margin: 0; background: transparent; pointer-events: none; -webkit-appearance: none; appearance: none; }
.uv-range input[type=range]::-webkit-slider-thumb { pointer-events: auto; -webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--uv-surface); border: 2px solid var(--uv-accent); cursor: pointer; }
.uv-range input[type=range]::-moz-range-thumb { pointer-events: auto; width: 14px; height: 14px; border-radius: 50%; background: var(--uv-surface); border: 2px solid var(--uv-accent); cursor: pointer; }
.uv-range input[type=range]::-webkit-slider-runnable-track { background: transparent; }
.uv-range input[type=range]::-moz-range-track { background: transparent; }
.uv-range input[type=range]:focus-visible::-webkit-slider-thumb { outline: 2px solid var(--uv-accent); outline-offset: 2px; }
.uv-filter-search { width: 100%; box-sizing: border-box; }
.uv-tree { overflow: auto; flex: 1; min-height: 0; }
.uv-tree-row { display: flex; align-items: center; gap: 2px; }
.uv-tree-toggle { flex: none; width: 18px; height: 22px; border: 0; background: transparent; color: var(--uv-text-2); cursor: pointer; padding: 0; font-size: 11px; }
.uv-tree-option { flex: 1; min-width: 0; }
.uv-check.is-mixed { background: color-mix(in srgb, var(--uv-accent) 25%, transparent); }

/* ---------- Tablo: düzenleme, ağaç, sütun genişliği; matris alan düzenleyici ---------- */
.uv-table th { position: relative; }
.uv-col-resize { position: absolute; top: 0; right: -3px; width: 7px; height: 100%; cursor: col-resize; z-index: 3; touch-action: none; }
.uv-col-resize::after { content: ""; position: absolute; top: 25%; bottom: 25%; left: 3px; width: 1px; background: var(--uv-border); }
.uv-col-resize:hover::after, .uv-col-resize:focus-visible::after { background: var(--uv-accent); width: 2px; }
.uv-col-resize:focus-visible { outline: none; }
body.uv-resizing, body.uv-resizing * { cursor: col-resize !important; user-select: none !important; }
.uv-table td.uv-editable { cursor: text; }
.uv-table td.uv-editable:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; }
.uv-table td.is-edited { box-shadow: inset 3px 0 0 var(--uv-accent); }
.uv-table td.is-editing { padding: 0; position: relative; }
.uv-cell-input { width: 100%; height: 100%; min-height: 24px; box-sizing: border-box; border: 2px solid var(--uv-accent); border-radius: 0; padding: 0 6px; font: inherit; color: var(--uv-text); background: var(--uv-surface); text-align: inherit; }
.uv-cell-input[aria-invalid=true] { border-color: var(--uv-danger, #d03b3b); }
.uv-cell-error { position: absolute; left: 0; top: 100%; z-index: 5; background: var(--uv-surface); color: var(--uv-danger-text, #b42323); border: 1px solid currentColor; border-radius: 4px; font-size: 11px; padding: 2px 6px; white-space: nowrap; }
.uv-badge-edit { background: color-mix(in srgb, var(--uv-accent) 14%, transparent); color: var(--uv-text); }
.uv-treegrid .uv-group th, .uv-treegrid .uv-group td { background: color-mix(in srgb, var(--uv-text) 3%, var(--uv-surface)); font-weight: 600; }
.uv-tree-count { color: var(--uv-muted); font-weight: 400; font-size: .9em; }
.uv-matrix .uv-valhead th { font-weight: 600; }
.uv-pivot-editor { border-bottom: 1px solid var(--uv-border); padding: 8px 10px; display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; font-size: 12px; background: var(--uv-surface); max-height: 55%; overflow: auto; }
.uv-pivot-zone h4 { margin: 0 0 4px; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--uv-muted); }
.uv-pivot-chip { display: flex; align-items: center; gap: 2px; border: 1px solid var(--uv-border); border-radius: 6px; padding: 2px 2px 2px 8px; margin-bottom: 4px; background: var(--uv-page, var(--uv-surface)); }
.uv-pivot-chip > span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-pivot-chip select { font: inherit; font-size: 11px; border: 0; background: transparent; color: var(--uv-text-2); max-width: 90px; }
.uv-pivot-chip button { border: 0; background: transparent; color: var(--uv-text-2); width: 22px; height: 22px; border-radius: 4px; cursor: pointer; padding: 0; }
.uv-pivot-chip button:hover:not(:disabled) { background: var(--uv-hover); color: var(--uv-text); }
.uv-pivot-chip button:disabled { opacity: .3; cursor: default; }
.uv-pivot-add { width: 100%; font-size: 12px; }
.uv-pivot-opts { display: flex; flex-direction: column; gap: 4px; }
.uv-pivot-opts label { display: flex; align-items: center; gap: 6px; color: var(--uv-text-2); }

/* ---------- İndir menüsü, yazdırma ---------- */
.uv-dl { position: relative; }
.uv-dl > summary { list-style: none; display: inline-flex; align-items: center; justify-content: center; }
.uv-dl > summary::-webkit-details-marker { display: none; }
.uv-dl-menu { min-width: 140px; right: 0; }
.uv-toolbar:has(details[open]) { opacity: 1 !important; visibility: visible !important; }
/* Araç çubuğu kipleri (VIS-76): always → hep görünür; menu → tek "⋯" düğmesi + açılır menü (dar kart) */
.uv-toolbar.uv-toolbar-always, .uv-toolbar.is-open { opacity: 1; transform: none; }
.uv-more { position: relative; }
.uv-tool-more svg .uv-more-dots { stroke-width: 3.2; }
.uv-more-menu { min-width: 150px; max-width: 260px; overflow-y: auto; overscroll-behavior: contain; }
.uv-more-menu .uv-menu-item { flex: 0 0 auto; display: block; width: 100%; }
.uv-menu-item:disabled { opacity: .45; cursor: default; background: transparent; }
.uv-menu-item:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; }
.uv-menu-sep { height: 1px; background: var(--uv-border); margin: 3px 2px; flex: 0 0 auto; }
.uv-menu-sep:last-child { display: none; }
@media print {
    .uv-toolbar, .uv-dash-bookmarks, .uv-dash-header .uv-btn, .uv-col-resize { display: none !important; }
    .uv-dashboard .uv-dash-item { break-inside: avoid; }
}

/* ---------- Designer: hizalama kılavuzları, sayfa sekmeleri, alan listesi ---------- */
.uv-ds-guide { position: absolute; z-index: 9999; pointer-events: none; border: 0 dashed #e34948; }
.uv-ds-guide.is-v { border-left-width: 1px; }
.uv-ds-guide.is-h { border-top-width: 1px; }
.uv-ds-pages { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; margin: 0 0 8px; }
.uv-ds-page { border: 1px solid var(--uv-border); background: var(--uv-surface); color: var(--uv-text-2); border-radius: 6px 6px 0 0; padding: 4px 10px; font: inherit; font-size: 12px; cursor: pointer; }
.uv-ds-page.is-on { color: var(--uv-accent); border-bottom-color: var(--uv-accent); font-weight: 600; }
.uv-ds-page.is-hidden-page { font-style: italic; opacity: .8; }
.uv-ds-page-input { width: 140px; font-size: 12px; }
.uv-ds-page-tool { font-size: 12px; padding: 3px 8px; }
.uv-ds-page-move { width: auto; font-size: 12px; }
.uv-fieldlist { display: flex; flex-direction: column; gap: 2px; }

/* ---------- Bağımsız lejant ---------- */
.uv-ui-legend { list-style: none; margin: 0; padding: 4px 2px; display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; height: 100%; box-sizing: border-box; overflow: auto; font-size: 12px; }
.uv-ui-legend.is-vertical { flex-direction: column; align-items: flex-start; flex-wrap: nowrap; }
.uv-ui-legend li { min-width: 0; transition: opacity .15s; }
.uv-ui-legend li.is-dim { opacity: .4; }
.uv-legend-item { display: inline-flex; align-items: center; gap: 6px; border: 0; background: transparent; font: inherit; color: var(--uv-text-2); padding: 2px 4px; border-radius: 4px; max-width: 100%; }
button.uv-legend-item { cursor: pointer; }
button.uv-legend-item:hover { background: var(--uv-hover); color: var(--uv-text); }
button.uv-legend-item:focus-visible { outline: 2px solid var(--uv-accent); }
.uv-legend-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-legend-mark { flex: none; width: 10px; height: 10px; background: var(--c); border-radius: 2px; }
.uv-legend-mark.is-circle { border-radius: 50%; }
.uv-legend-mark.is-line { height: 3px; width: 14px; border-radius: 2px; }

/* ---------- Ajanda (table.agenda): güne göre gruplanmış randevular; renk noktası grubu izler ---------- */
.uv-agenda { display: flex; flex-direction: column; overflow: hidden; }
.uv-agenda-head { flex: none; display: flex; align-items: center; min-height: 34px; padding: 0 10px; border-bottom: 1px solid var(--uv-grid); }
.uv-agenda-title { font-weight: 600; font-size: var(--uv-fs-title, 14px); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-agenda-body { flex: 1; min-height: 0; overflow: auto; padding: 2px 6px 6px; }
.uv-agenda-date { position: sticky; top: 0; z-index: 1; background: var(--uv-surface); color: var(--uv-text-2); font-size: 12px; font-weight: 600;
    padding: 8px 4px 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-agenda-list { list-style: none; margin: 0; padding: 0; }
.uv-agenda-item { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 32px; padding: 5px 4px; border: 0; border-bottom: 1px solid var(--uv-grid);
    background: transparent; color: var(--uv-text); font: 13px/1.3 var(--uv-font); text-align: left; cursor: pointer; border-radius: 0; }
.uv-agenda-item:hover { background: var(--uv-hover); }
.uv-agenda-item:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; border-radius: 4px; }
.uv-agenda-dot { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--c); }
.uv-agenda-time { flex: none; width: 96px; color: var(--uv-text-2); font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.uv-agenda-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.uv-agenda-subject, .uv-agenda-end { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-agenda-end { color: var(--uv-muted); font-size: 11px; }
.uv-agenda-tag { flex: none; max-width: 40%; font-size: 11px; color: var(--uv-text-2); background: var(--uv-hover); border-radius: 10px; padding: 2px 8px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-agenda.is-dense .uv-agenda-item { min-height: 24px; padding: 2px 4px; font-size: 12px; }
.uv-agenda.is-dense .uv-agenda-date { padding: 4px 4px 2px; }
.uv-agenda.is-narrow .uv-agenda-item { flex-wrap: wrap; row-gap: 2px; }
.uv-agenda.is-narrow .uv-agenda-time { width: auto; flex: 1 1 auto; }
.uv-agenda.is-narrow .uv-agenda-main { flex: 1 1 100%; order: 3; padding-left: 18px; }

/* ---------- Rapor sayfası tooltip'i ---------- */
.uv-tippage { position: fixed; z-index: 2000; pointer-events: none; background: var(--uv-surface); border: 1px solid var(--uv-border); border-radius: 10px;
    box-shadow: 0 6px 24px rgba(11,11,11,.18); display: flex; flex-direction: column; overflow: hidden; }
.uv-tippage-head { flex: none; padding: 6px 10px; font-size: 12px; font-weight: 600; color: var(--uv-text); border-bottom: 1px solid var(--uv-border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.uv-tippage-body { position: relative; flex: 1; margin: 4px; }
.uv-tippage-item { position: absolute; }

/* Harita kaydırma */
.uv-visual[data-uv-map] { touch-action: none; }
.uv-visual.uv-panning, .uv-visual.uv-panning * { cursor: grabbing !important; }

/* Yapay zekâ sohbeti grafik kabı (UzserChatChart / renderChatChart): genişlik balonu doldurur, yükseklik türe göre */
.uv-chat-chart { display: block; position: relative; box-sizing: border-box; margin: 8px 0; min-width: 0; max-width: 100%; }
.uv-chat-chart.is-pending { display: flex; align-items: center; justify-content: center; border-radius: 8px;
  background: linear-gradient(90deg, var(--uv-hover, rgba(11,11,11,.05)) 25%, transparent 50%, var(--uv-hover, rgba(11,11,11,.05)) 75%);
  background-size: 200% 100%; animation: uv-chat-shimmer 1.4s ease-in-out infinite; }
.uv-chat-chart.is-empty, .uv-chat-chart.is-invalid { padding: 10px 12px; border: 1px dashed var(--uv-border, rgba(11,11,11,.15)); border-radius: 8px; }
.uv-chat-chart-note { font: 12px/1.4 var(--uv-font, system-ui, sans-serif); color: var(--uv-muted, #898781); }
.uv-chat-chart-source { margin-top: 6px; font-size: 12px; }
.uv-chat-chart-source pre { white-space: pre-wrap; word-break: break-word; max-height: 160px; overflow: auto; margin: 6px 0 0; }
@keyframes uv-chat-shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) { .uv-chat-chart.is-pending { animation: none; } }

/* KPI kartı: tıklanabilir kart (OnClick) ve uygulamanın ikonu (IconContent) — VIS-30 */
.uv-kpi-hit {
    position: absolute; inset: 0; z-index: 2; margin: 0; padding: 0; border: 0; border-radius: inherit;
    background: transparent; cursor: pointer; font: inherit; color: inherit;
}
.uv-kpi-hit:hover { background: rgba(127, 127, 127, .07); }
.uv-kpi-hit:focus-visible { outline: 2px solid var(--uv-accent, #2a78d6); outline-offset: -2px; }
.uv-kpi-icon-slot {
    position: absolute; z-index: 1; display: flex; align-items: center; justify-content: center; overflow: hidden;
    pointer-events: none; color: var(--uv-text-2, #52514e);
}
.uv-kpi-icon-slot > svg, .uv-kpi-icon-slot > img { width: 100%; height: 100%; }

/* ---------- Tipli ızgara (UzserGrid<TItem>): tablo stillerini (.uv-table, .uv-pager) paylaşır ---------- */
.uv-grid { position: relative; box-sizing: border-box; min-width: 0; background: var(--uv-surface, #fcfcfb); border-radius: var(--uv-radius, 8px);
    color: var(--uv-text, #0b0b0b); font: 13px/1.35 var(--uv-font, system-ui, sans-serif); }
.uv-grid.uv-grid-fixed { overflow: hidden; }
.uv-grid:not(.uv-grid-fixed) .uv-grid-scroll { flex: 0 1 auto; }
/* Dar kapta şerit satır kırar: başlık en az 120 px yer tutar, araçlar alt satıra iner */
.uv-grid-toolbar.uv-table-head { height: auto; min-height: 34px; flex: 0 0 auto; flex-wrap: wrap; row-gap: 4px; padding-top: 4px; padding-bottom: 4px; box-sizing: border-box; }
.uv-grid-toolbar .uv-table-title { flex: 1 1 120px; }
.uv-grid-spacer { flex: 1 1 auto; }
.uv-grid-search { flex: 0 1 200px; min-width: 80px; height: 26px; }
.uv-grid-groupby .uv-input { height: 26px; width: auto; max-width: 180px; padding: 0 4px; font-size: 12px; }
.uv-grid-chooser { position: relative; }
.uv-grid-chooser > summary { list-style: none; cursor: pointer; }
.uv-grid-chooser > summary::-webkit-details-marker { display: none; }
.uv-grid-chooser-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 10; min-width: 160px; max-height: 280px; overflow: auto;
    padding: 6px; background: var(--uv-surface); border: 1px solid var(--uv-border, var(--uv-grid)); border-radius: 8px; box-shadow: 0 6px 20px rgba(11,11,11,.14); }
.uv-grid-chooser-item { display: flex; align-items: center; gap: 6px; padding: 3px 4px; font-size: 12px; white-space: nowrap; cursor: pointer; }
.uv-grid-table td { padding-top: 6px; padding-bottom: 6px; height: 22px; }
.uv-grid-table thead th { height: 34px; }
.uv-grid-table th.uv-sortable:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: -2px; }
.uv-grid-table td.uv-grid-tpl { white-space: normal; }
.uv-grid .uv-num { font-variant-numeric: tabular-nums; }
.uv-grid-select, .uv-grid-expand { text-align: center !important; padding-left: 4px !important; padding-right: 4px !important; }
.uv-grid-check { width: 15px; height: 15px; margin: 0; vertical-align: middle; accent-color: var(--uv-accent); cursor: pointer; }
.uv-grid-check.is-partial { opacity: .6; }
.uv-grid-toggle { width: 22px; height: 22px; font-size: 14px; border-radius: 4px; }
.uv-grid-toggle:hover { background: var(--uv-hover); }
.uv-grid-toggle:focus-visible, .uv-grid-group .uv-expander:focus-visible { outline: 2px solid var(--uv-accent); outline-offset: 0; }
.uv-grid-detail > td { white-space: normal; background: var(--uv-hover); padding: 10px 12px 10px 48px; }
.uv-grid-table tbody tr.uv-grid-detail:hover td { background: var(--uv-hover); }
.uv-grid-group th { font-weight: 600; background: var(--uv-surface); color: var(--uv-text); }
.uv-grid-group.is-continued th { color: var(--uv-text-2); font-weight: 500; }
.uv-grid-group .uv-grid-group-total { font-weight: 600; background: var(--uv-surface); color: var(--uv-text); }
.uv-grid-group.is-continued .uv-grid-group-total { color: var(--uv-text-2); font-weight: 500; }
.uv-grid-group-agg { margin-left: 10px; font-weight: 600; white-space: nowrap; }
.uv-grid-card-group .uv-grid-group-agg { font-size: 12px; color: var(--uv-text-2); }
.uv-grid-filter-row td { padding: 4px 6px; height: auto; border-bottom: 1px solid var(--uv-grid); background: var(--uv-surface); position: sticky; top: 34px; z-index: 2; }
.uv-grid-filter { display: flex; gap: 4px; min-width: 0; }
.uv-grid-filter .uv-input { flex: 1 1 auto; min-width: 0; height: 24px; padding: 0 6px; font-size: 12px; }
.uv-grid-filter .uv-grid-filter-op { flex: 0 0 auto; width: auto; padding: 0 2px; }
.uv-grid-state td, li.uv-grid-state { text-align: center !important; color: var(--uv-muted); font-size: 12px; padding: 20px 10px !important; white-space: normal; }
.uv-grid-state.is-error td, li.uv-grid-state.is-error { color: var(--uv-text); }
.uv-grid-loading { position: absolute; top: 6px; left: 50%; transform: translateX(-50%); z-index: 5; padding: 3px 10px; border-radius: 10px;
    font-size: 11px; color: var(--uv-text-2); background: var(--uv-surface); border: 1px solid var(--uv-grid); box-shadow: 0 2px 8px rgba(11,11,11,.08); }
.uv-grid[aria-busy="true"] tbody, .uv-grid[aria-busy="true"] .uv-grid-cards { opacity: .65; transition: opacity .15s ease; }
.uv-grid-totals td { font-weight: 600; }
.uv-grid-selectbar { display: flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; padding: 4px 10px; font-size: 12px;
    color: var(--uv-text-2); background: color-mix(in srgb, var(--uv-accent) 8%, transparent); border-bottom: 1px solid var(--uv-grid); }
.uv-grid-selectbar .uv-tool-text { color: var(--uv-accent); font-weight: 600; }
/* Kart görünümü (dar kap) */
.uv-grid-cardbar { display: flex; align-items: center; gap: 6px; padding: 6px 8px; border-bottom: 1px solid var(--uv-grid); min-width: 0; }
.uv-grid-cardbar-all { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--uv-text-2); flex: 1 1 auto; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.uv-grid-cardbar-sort { margin-left: auto; min-width: 0; }
.uv-grid-cardbar-sort .uv-input { height: 26px; width: auto; max-width: 160px; padding: 0 4px; font-size: 12px; }
.uv-grid-sortdir { font-size: 11px; color: var(--uv-accent); }
.uv-grid-cards { list-style: none; margin: 0; padding: 6px; display: flex; flex-direction: column; gap: 6px; }
.uv-grid-card { display: flex; gap: 8px; padding: 10px; border: 1px solid var(--uv-grid); border-radius: 8px; background: var(--uv-surface); min-width: 0; }
.uv-grid-card.is-selected { border-color: var(--uv-accent); background: color-mix(in srgb, var(--uv-accent) 8%, var(--uv-surface)); }
.uv-grid-card.uv-clickable { cursor: pointer; }
.uv-grid-card-side { display: flex; flex-direction: column; align-items: center; gap: 6px; flex: 0 0 auto; }
.uv-grid-card-body { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.uv-grid-card-fields, .uv-grid-card-totals { margin: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 3px; }
.uv-grid-card-field { display: flex; justify-content: space-between; gap: 10px; min-width: 0; }
.uv-grid-card-field dt { color: var(--uv-text-2); font-size: 12px; flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uv-grid-card-field dd { margin: 0; text-align: right; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.uv-grid-card-actions { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.uv-grid-card-actions .uv-row-action { margin-left: 0; }
.uv-grid-card-detail { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--uv-grid); }
.uv-grid-card-group { display: flex; align-items: center; gap: 4px; padding: 4px 2px 0; font-weight: 600; font-size: 12px; color: var(--uv-text-2); }
.uv-grid-card-totals { padding: 8px 14px; border-top: 1px solid var(--uv-axis); font-weight: 600; }
@media (prefers-reduced-motion: reduce) { .uv-grid[aria-busy="true"] tbody, .uv-grid[aria-busy="true"] .uv-grid-cards { transition: none; } }
@media print { .uv-grid-toolbar .uv-tool, .uv-grid-chooser, .uv-grid-selectbar, .uv-grid-filter-row, .uv-pager-size { display: none !important; } }
/* ---------- Pano öğe durumu: yükleniyor / hata / boş (UzserDashboard ItemStates, LoadItem) ---------- */
.uv-dash-item.is-busy > .uv-visual, .uv-dash-item.is-busy > .uv-table-wrap { visibility: hidden; }
.uv-dash-item > .uv-item-state {
  position: absolute; inset: 6px; z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  box-sizing: border-box; padding: 10px; overflow: hidden; text-align: center;
  background: var(--uv-surface, #fcfcfb); border-radius: var(--uv-radius, 8px); color: var(--uv-muted, #898781);
  font: 12px/1.4 var(--uv-font, system-ui, sans-serif);
}
.uv-item-state-text { max-width: 100%; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
.uv-item-skeleton { display: flex; flex-direction: column; gap: 6px; width: min(70%, 220px); }
.uv-item-skeleton span {
  display: block; height: 10px; border-radius: 4px;
  background: linear-gradient(90deg, var(--uv-hover, rgba(11,11,11,.05)) 25%, transparent 50%, var(--uv-hover, rgba(11,11,11,.05)) 75%);
  background-size: 200% 100%; animation: uv-chat-shimmer 1.4s ease-in-out infinite;
}
.uv-item-skeleton span:nth-child(2) { width: 82%; }
.uv-item-skeleton span:nth-child(3) { width: 60%; }
.uv-item-state--error { color: var(--uv-text-2, #52514e); }
.uv-item-state-icon { color: var(--uv-danger, #b42318); font-weight: 700; }
.uv-item-state--error .uv-btn { flex: 0 0 auto; }
@media (prefers-reduced-motion: reduce) { .uv-item-skeleton span { animation: none; } }
