/* Floating AI chat window shell. Ported from the GitmostAgent.jsx design.
   Dynamic values (left/top/width/height) stay inline on the element; only the
   static chrome lives here. */

.window {
    /* position: fixed + left/top/width/height are applied inline so the window
       floats over the whole viewport. z-index sits above page content and the
       app shell but BELOW Mantine overlays (modals=200, menus=300,
       notifications=400) so the rename input, kebab menu and delete-confirm
       modal still render above the window. */
    position: fixed;
    z-index: 105;
    background: light-dark(#fff, var(--mantine-color-dark-7));
    border: 1px solid light-dark(var(--mantine-color-gray-3), var(--mantine-color-dark-4));
    /* Match the rest of the UI: use the Mantine md radius token instead of an
       oversized hard-coded value so the window corners blend with inner cards. */
    border-radius: var(--mantine-radius-md);
    box-shadow:
        0 10px 24px rgba(0, 0, 0, 0.13),
        0 30px 64px rgba(0, 0, 0, 0.17);
    overflow: hidden;
    resize: both;
    display: flex;
    flex-direction: column;
    min-width: 300px;
    min-height: 400px;
    max-width: 900px;
    max-height: 1100px;
    font-size: 11px;
    color: light-dark(var(--mantine-color-black), var(--mantine-color-dark-0));
}

/* Hide the native resizer; we draw our own affordance icon in the corner. */
.window::-webkit-resizer {
    background: transparent;
}

/* Docked into the sidebar: the window pins itself to the live navbar rect
   (position/size supplied inline). It sits flush inside the navbar area, so we
   drop the floating chrome — no border-radius, drop shadow or user resize — and
   remove the floating min/max clamps so the size is driven ENTIRELY by the
   inline navbar rect (which may be narrower than the floating min-width of
   300px, e.g. the 220px navbar minimum). z-index 105 keeps it above the page
   tree (navbar 101) but below the header and Mantine overlays. */
.docked {
    border-radius: 0;
    box-shadow: none;
    resize: none;
    min-width: 0;
    min-height: 0;
    max-width: none;
    max-height: none;
}

/* Drop-zone highlight shown over the navbar bounds while a floating window is
   dragged onto the sidebar. Sits just above the docked window (106) so the cue
   is visible; purely decorative, so it never intercepts pointer events. */
.dockHighlight {
    position: fixed;
    z-index: 106;
    border: 2px dashed light-dark(var(--mantine-color-blue-5), var(--mantine-color-blue-4));
    background: light-dark(rgba(34, 139, 230, 0.08), rgba(34, 139, 230, 0.14));
    border-radius: var(--mantine-radius-sm);
    pointer-events: none;
}

/* When minimized the window collapses to the header only: auto height, no
   resize. Width/height inline values are overridden. */
.minimized {
    height: auto !important;
    min-height: 0 !important;
    resize: none;
}

/* Body wrapper (history + chat thread). Always rendered so ChatThread stays
   mounted; hidden (not unmounted) when minimized so an in-flight stream keeps
   running and the window collapses to just the header. */
.content {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.minimized .content {
    display: none;
}

/* In the collapsed state the header expands the window on click, so hint that
   it is clickable (override the drag `grab` cursor). */
.minimized .dragBar {
    cursor: pointer;
}

.dragBar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 11px;
    border-bottom: 1px solid light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5));
    background: light-dark(#fcfcfd, var(--mantine-color-dark-6));
    flex: none;
    cursor: grab;
    user-select: none;
}

.title {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.headerBtn {
    width: 24px;
    height: 24px;
    border: none;
    background: transparent;
    border-radius: 6px;
    color: var(--mantine-color-dimmed);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    padding: 0;
}

.headerBtn:hover {
    background: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5));
}

.badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--mantine-color-dimmed);
    background: light-dark(#f6f7f8, var(--mantine-color-dark-6));
    border: 1px solid light-dark(#eceef0, var(--mantine-color-dark-4));
    border-radius: 6px;
    padding: 3px 9px;
}

.historySection {
    padding: 6px 8px;
    border-bottom: 1px solid light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5));
    flex: none;
}

.historyHeader {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 4px 6px;
    border-radius: 6px;
    cursor: pointer;
    color: var(--mantine-color-dimmed);
    font-weight: 500;
}

.newChatBtn {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 7px;
    border-radius: 6px;
    border: none;
    background: transparent;
    color: var(--mantine-color-dimmed);
    font-weight: 500;
    cursor: pointer;
    font-size: 12px;
}

.newChatBtn:hover {
    background: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5));
}

.body {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 13px 14px 12px;
    overflow: hidden;
}

.resizeHandle {
    position: absolute;
    right: 3px;
    bottom: 3px;
    color: light-dark(#ced4da, var(--mantine-color-dark-3));
    pointer-events: none;
    display: flex;
}
