:root {
    --dm-ink: #16232f;
    --dm-navy: #1b3a5c;
    --dm-blue: #1e5fae;
    --dm-blue-dark: #174c8c;
    --dm-blue-soft: #e7f0fa;
    --dm-text: #25384a;
    --dm-slate: #5a6b7c;
    --dm-muted: #8296a8;
    --dm-border: #dce3eb;
    --dm-border-light: #e8edf2;
    --dm-canvas: #f5f7fa;
    --dm-white: #fff;
    --dm-radius: 6px;
    --dm-radius-lg: 10px;
}

html, body, #app { height: 100%; margin: 0; font-family: "IBM Plex Sans", "Segoe UI", sans-serif; }
body { color: var(--dm-ink); background: var(--dm-canvas); }
* { box-sizing: border-box; }
.flex-1 { flex: 1 1 0; }
.app-loading { display: grid; place-items: center; min-height: 100vh; background: var(--dm-canvas); }

/* Application shell */
.dm-layout .mud-appbar { min-height: 56px; border: 0; box-shadow: none; }
.dm-appbar-content { width: 100%; }
.dm-brand { min-width: 0; }
.dm-brand-mark { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 6px; color: #8fc0f5; background: rgba(143,192,245,.16); }
.dm-brand-title { color: #fff; font-size: .92rem; font-weight: 600; letter-spacing: .01em; }
.dm-brand-divider { width: 1px; height: 16px; margin: 0 2px; background: rgba(255,255,255,.18); }
.dm-company-name { color: #a9bccd; font-size: .82rem; }
.dm-user-pill { gap: 7px; padding: 3px 10px 3px 4px; border: 1px solid rgba(255,255,255,.12); border-radius: 99px; background: rgba(255,255,255,.07); }
.dm-user-avatar { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: #fff; background: var(--mud-palette-primary); font-size: .66rem; font-weight: 600; }
.dm-user-name { max-width: 180px; overflow: hidden; color: #dbe5ee; text-overflow: ellipsis; white-space: nowrap; }
.dm-status-icon { opacity: .85; }
.dm-role-chip { height: 24px !important; border-radius: 4px !important; font-size: .64rem !important; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.dm-layout .mud-drawer { border-right: 1px solid var(--dm-border); background: var(--dm-white); }
.dm-drawer-content { display: flex; flex-direction: column; height: 100%; min-height: 0; padding: 16px 12px 0; }
.dm-nav-label { padding: 0 10px 8px; color: var(--dm-muted); font-size: .66rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; }
.dm-nav .mud-nav-link { min-height: 38px; margin-bottom: 2px; padding-inline: 10px; border-radius: var(--dm-radius); color: #3d4f60; font-size: .86rem; font-weight: 500; }
.dm-nav .mud-nav-link.active { color: var(--mud-palette-primary); background: var(--dm-blue-soft); font-weight: 600; }
.dm-nav-conversations { min-height: 0; flex: 1; margin: 8px 10px 0; padding-top: 8px; border-top: 1px solid var(--dm-border-light); }
.dm-nav-conversations .history-panel { border: 0; box-shadow: none !important; padding: 0 !important; }
.dm-nav-footer { margin-inline: -12px; padding: 12px 22px; border-top: 1px solid var(--dm-border-light); color: var(--dm-muted); }
.dm-main { min-height: 100vh; padding: 72px 28px 20px; background: var(--dm-canvas); }
.dm-api-alert { max-width: 1440px; margin: 0 auto 12px; }

/* Shared */
.dm-page-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.dm-page-eyebrow { color: var(--mud-palette-primary); font-size: .69rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; }
.dm-page-title { margin-top: 4px; font-weight: 600; letter-spacing: -.02em; }
.dm-page-description { max-width: 680px; margin-top: 5px; color: var(--dm-slate); }
.dm-surface { border: 1px solid var(--dm-border); border-radius: 8px; box-shadow: none; }
.mud-button-root { border-radius: var(--dm-radius) !important; text-transform: none !important; font-weight: 600 !important; letter-spacing: 0 !important; }
.mud-input-outlined-border { border-color: #cfd9e3 !important; }

/* Conversations */
.history-panel { height: 100%; overflow-y: auto; }
.history-header { min-height: 34px; margin-bottom: 6px; }
.history-label { padding: 0; }
.history-new-button { min-width: 64px !important; height: 30px; padding: 0 9px !important; font-size: .72rem !important; }
.history-item { position: relative; margin-bottom: 2px !important; padding: 9px 10px !important; border: 0 !important; border-radius: var(--dm-radius) !important; background: transparent; box-shadow: none !important; transition: background-color .12s; }
.history-item:hover { background: #f0f4f8; }
.history-selected { background: var(--dm-blue-soft) !important; }
.history-title { cursor: pointer; }
.history-title .mud-typography-body2 { overflow: hidden; color: var(--dm-text); font-size: .81rem; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.history-title .mud-typography-caption { color: var(--dm-muted); font-size: .71rem; }
.history-item > .d-flex.justify-end { position: absolute; top: 3px; right: 3px; opacity: 0; }
.history-item:hover > .d-flex.justify-end { opacity: 1; }
.history-item > .d-flex.justify-end .mud-icon-button { width: 25px; height: 25px; padding: 5px; background: #fff; }
.history-mobile-close { display: none; }

/* Chat */
.chat-shell { display: flex; width: 100%; max-width: 1500px; height: calc(100vh - 88px); margin: 0 auto; }
.chat-main { flex: 1; min-width: 0; height: 100%; padding: 0 !important; }
.chat-toolbar { width: 100%; min-height: 40px; max-width: 960px; margin: 0 auto; padding: 0 20px 8px; }
.chat-title { overflow: hidden; color: var(--dm-ink); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.chat-messages { width: 100%; min-height: 0; padding: 20px max(24px, calc((100% - 940px) / 2)) !important; scroll-behavior: smooth; }
.chat-empty { height: 100%; max-width: 720px; margin: auto; padding: 40px 20px; text-align: center; }
.chat-empty-icon { display: grid; place-items: center; width: 56px; height: 56px; margin-bottom: 20px; border-radius: 12px; color: var(--mud-palette-primary); background: var(--dm-blue-soft); }
.chat-empty-icon .mud-icon-root { font-size: 1.65rem; }
.chat-empty .mud-typography-h5 { font-size: 1.45rem; }
.chat-suggestions { max-width: 720px; }
.chat-suggestions .mud-button-root { min-height: 36px; padding: 7px 15px; border-color: #cfd9e3; border-radius: 99px !important; color: var(--dm-text); background: var(--dm-white); font-weight: 400 !important; }
.chat-loading { border: 1px solid var(--dm-border); background: var(--dm-white) !important; }
.chat-composer { width: calc(100% - 48px); max-width: 860px; margin: 0 auto !important; padding: 8px 8px 8px 18px !important; border: 1px solid #cfd9e3; border-radius: var(--dm-radius-lg) !important; box-shadow: 0 1px 3px rgba(16,35,54,.05) !important; }
.chat-composer .mud-input-outlined-border { border-color: transparent !important; }
.chat-composer .mud-input-control { margin-top: 0; }
.chat-send-button { display:inline-flex !important;align-items:center !important;justify-content:center !important;flex:0 0 38px;width:38px !important;min-width:38px !important;height:38px !important;min-height:38px !important;margin:0 !important;padding:0 !important;border-radius:7px !important;opacity:1 !important;transition:color .15s ease,background-color .15s ease,border-color .15s ease; }
.chat-send-button .mud-icon-root { display:block;margin:0 !important;font-size:1.25rem !important;line-height:1; }
.chat-send-button.chat-send-active { color:#fff !important;border:1px solid var(--mud-palette-primary) !important;background:var(--mud-palette-primary) !important; }
.chat-send-button.chat-send-inactive { color:#8296a8 !important;border:1px solid #cfd9e3 !important;background:#f0f4f8 !important;cursor:default; }
.chat-send-button.chat-send-inactive:hover { color:#8296a8 !important;background:#f0f4f8 !important; }
.chat-disclaimer { width: calc(100% - 48px); max-width: 860px; margin: 8px auto 0; color: var(--dm-muted); font-size: .71rem; }
.voice-confirmation { width: calc(100% - 48px); max-width: 860px; margin-inline: auto; border: 1px solid var(--dm-border); border-left: 3px solid var(--mud-palette-primary); }
.voice-icon-button { width: 40px; min-width: 40px; height: 40px; min-height: 40px; }
.voice-confidence { font-size: .7rem; }
.voice-transcript { font-size: 1rem; }
.voice-interim { font-style: italic; }
.voice-speed-label { min-width: 90px; }
.voice-speed-slider { max-width: 160px; }
.voice-action-btn { min-width: 90px !important; min-height: 40px !important; }
.chat-message { display: flex; margin-bottom: 20px; }
.chat-message-user { justify-content: flex-end; }
.chat-message-assistant { justify-content: flex-start; }
.chat-bubble { width: fit-content; max-width: min(84%, 760px); padding: 12px 18px !important; border-radius: 12px !important; box-shadow: none !important; }
.chat-bubble-user { color: #fff; border: 0; border-bottom-right-radius: 3px !important; background: var(--mud-palette-primary) !important; }
.chat-bubble-assistant { padding: 20px 24px !important; border: 1px solid var(--dm-border); border-bottom-left-radius: 3px !important; background: var(--dm-white) !important; }
.citation-card { border-color: var(--dm-border) !important; border-radius: 8px !important; background: #f8fafc; }

/* Admin */
.admin-page { padding: 4px 0 28px; }
.admin-header { align-items: flex-end; }
.admin-toolbar { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }
.admin-toolbar .mud-button-root { min-height: 38px; font-size: .8rem; }
.admin-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 22px; }
.admin-stats > div { padding: 15px 20px; border: 1px solid var(--dm-border); border-radius: 8px; background: #fff; }
.admin-stats span { display: block; color: var(--dm-muted); font-size: .7rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; }
.admin-stats strong { display: inline-block; margin-top: 5px; color: var(--dm-ink); font-size: 1.65rem; font-weight: 600; }
.admin-stats small { margin-left: 8px; color: var(--dm-muted); font-size: .75rem; }
.document-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 10px; }
.document-filter { width: min(100%, 400px); }
.document-table { overflow: hidden; border: 1px solid var(--dm-border); border-radius: 8px; box-shadow: none !important; }
.document-table .mud-table-head { background: #f8fafc; }
.document-table .mud-table-cell { height: 44px; padding-block: 6px; border-color: #eef2f6; font-size: .8rem; }
.document-table .mud-table-head .mud-table-cell { color: var(--dm-slate); font-size: .7rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.document-actions { width: 120px; }
.document-viewer-link { cursor:pointer; }

/* Document viewer */
.document-viewer-page { display:flex;flex-direction:column;width:100%;height:calc(100vh - 92px);max-width:1500px;margin:0 auto;border:1px solid var(--dm-border);border-radius:10px;background:#fff;overflow:hidden; }
.document-viewer-header { flex:none;display:flex;align-items:center;min-height:58px;padding:7px 14px;border-bottom:1px solid var(--dm-border);background:#fff; }
.document-viewer-heading { min-width:0; }.document-viewer-heading .mud-typography-h6{overflow:hidden;font-size:.95rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.document-viewer-heading .mud-typography-caption{display:block}
.document-viewer-content { flex:1;min-height:0;overflow:auto;background:#e9edf2; }
.document-viewer-state { display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;min-height:100%;padding:32px; }
.document-pdf-frame { display:block;width:100%;height:100%;border:0;background:#525659; }
.document-word-preview { width:min(100% - 32px,900px);min-height:calc(100% - 48px);margin:24px auto;padding:56px 64px;color:var(--dm-text);background:#fff;box-shadow:0 2px 14px rgba(22,35,47,.12);font-size:.94rem;line-height:1.65; }
.document-word-preview h1,.document-word-preview h2,.document-word-preview h3,.document-word-preview h4,.document-word-preview h5,.document-word-preview h6{margin:1.25em 0 .5em;color:var(--dm-ink);font-weight:600;line-height:1.25}.document-word-preview p{margin:.55em 0}.document-word-preview .document-list-item{padding-left:1.4em;position:relative}.document-word-preview .document-list-item::before{content:"•";position:absolute;left:.45em;color:var(--dm-blue)}.document-table-wrap{max-width:100%;overflow-x:auto;margin:18px 0}.document-word-preview table{width:100%;border-collapse:collapse}.document-word-preview td{padding:8px 10px;border:1px solid var(--dm-border);vertical-align:top}

/* Login */
.login-page { position: relative; display: flex; align-items: center; justify-content: center; min-height: 100vh; overflow: hidden; color: #fff; background: linear-gradient(155deg,#101a24 0%,#16232f 40%,#1b3a5c 85%,#1e5fae 140%); }
.login-canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.login-wave { stroke: #8fc0f5; stroke-width: 1.3; }.login-wave-1{opacity:.28}.login-wave-2{opacity:.2}.login-wave-3{opacity:.13}.login-wave-4{opacity:.08}
.login-rings circle { fill: none; stroke: #8fc0f5; stroke-width: 1; }.login-rings-right circle:nth-child(1){opacity:.14}.login-rings-right circle:nth-child(2){opacity:.2}.login-rings-right circle:nth-child(3){opacity:.28}.login-rings-right circle:nth-child(4){stroke:#dceafc;opacity:.35}.login-rings-left circle:first-child{opacity:.1}.login-rings-left circle:last-child{opacity:.16}
.login-rings .login-ring-dot { fill:#8fc0f5;stroke:none;opacity:.8}.login-rings .login-ring-dot.muted{opacity:.5}
.login-documents { stroke:#8fc0f5;stroke-width:1.2;opacity:.35}.login-documents .login-document-link{stroke-width:1;stroke-dasharray:2 6;opacity:.8}
.login-content { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; width: min(100% - 32px, 440px); }
.login-product { display:flex;align-items:center;gap:12px;font-size:1.4rem;font-weight:600; }
.login-product-mark { display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(143,192,245,.3);border-radius:10px;background:rgba(143,192,245,.14); }
.login-product-mark svg { width:22px;height:22px; }
.login-subtitle { margin-top:10px;color:#a9bccd;font-size:.85rem; }
.login-card { width:100%; margin-top:30px; padding:36px 40px 32px !important; border:0; border-radius:12px !important; background:#fff; box-shadow:0 16px 48px rgba(4,12,22,.5) !important; }
.login-title { color:var(--dm-ink);font-size:1.2rem;font-weight:600; }
.login-button { min-height:44px;font-weight:600; }
.login-help { margin-top:22px;padding-top:18px;border-top:1px solid var(--dm-border-light);color:#7a8a99;font-size:.75rem;line-height:1.55; }
.login-trust { display:flex;align-items:center;gap:18px;margin-top:24px;color:#8fa4b8;font-size:.75rem; }
.login-trust span { display:flex;align-items:center;gap:7px;white-space:nowrap; }.login-trust .mud-icon-root{color:#8fc0f5;font-size:.82rem}.login-trust i{width:1px;height:12px;background:rgba(255,255,255,.2)}
.login-footer { position:absolute;z-index:1;bottom:24px;color:rgba(255,255,255,.35);font-size:.72rem; }
.authentication-page { display: grid; place-items: center; min-height: 100vh; padding: 24px; background: var(--dm-canvas); }
.authentication-card { width: min(100%, 400px); padding: 36px !important; border: 1px solid var(--dm-border); border-radius: var(--dm-radius-lg) !important; text-align: center; }
.authentication-mark { margin: 0 auto 18px; }
.authentication-title { color: var(--dm-ink); font-weight: 600; }
.utility-state { min-height: 55vh; text-align: center; }
.utility-icon { font-size: 4rem !important; }

/* Markdown */
.markdown-body { color: var(--dm-text); font-size: .88rem; line-height: 1.65; overflow-wrap: anywhere; }
.markdown-body h1,.markdown-body h2,.markdown-body h3 { margin: .9em 0 .4em; color: var(--dm-ink); font-weight: 600; line-height: 1.3; }
.markdown-body h1 { font-size: 1.3rem; }.markdown-body h2 { font-size: 1.15rem; }.markdown-body h3 { font-size: 1.05rem; }
.markdown-body p,.markdown-body ul,.markdown-body ol { margin: .45em 0; }.markdown-body ul,.markdown-body ol { padding-left: 1.5em; }.markdown-body li { margin-bottom: .25em; }
.markdown-body strong { font-weight: 600; }.markdown-body code,.markdown-body pre { border-radius: 5px; background: #eef2f6; }.markdown-body code { padding: .15em .35em; font: .875em "IBM Plex Mono",monospace; }
.markdown-body pre { overflow-x: auto; margin: .5em 0; padding: .75em 1em; }.markdown-body pre code { padding: 0; background: none; }
.markdown-body blockquote { margin: .5em 0; padding-left: .75em; border-left: 3px solid #cfd9e3; color: var(--dm-slate); }
.markdown-body table { width: 100%; margin: .5em 0; border-collapse: collapse; }.markdown-body th,.markdown-body td { padding: .4em .6em; border: 1px solid var(--dm-border); text-align: left; }.markdown-body th { font-weight: 600; background: #f8fafc; }
.markdown-body > *:first-child { margin-top: 0; }.markdown-body > *:last-child { margin-bottom: 0; }

@keyframes mic-pulse { 0%{box-shadow:0 0 0 0 rgba(220,38,38,.45)}70%{box-shadow:0 0 0 11px rgba(220,38,38,0)}100%{box-shadow:0 0 0 0 rgba(220,38,38,0)} }
.mic-listening { border-radius: 50%; animation: mic-pulse 1.4s infinite; }

@media (max-width: 1100px) {
    .dm-main { padding: 68px 18px 16px; }
    .dm-user-name, .dm-role-chip, .dm-company-name, .dm-brand-divider { display: none !important; }
    .chat-shell { height: calc(100dvh - 84px); }
    .chat-messages { padding-inline: 24px !important; }
    .admin-header { align-items: flex-start; flex-direction: column; }
    .admin-toolbar { justify-content: flex-start; }
}

@media (max-width: 700px) {
    .dm-main { padding-inline: 10px; }
    .dm-user-pill { display: none; }
    .chat-toolbar { padding-inline: 8px; }
    .chat-messages { padding: 12px 4px !important; }
    .chat-bubble { max-width: 94%; }
    .chat-bubble-assistant { padding: 16px !important; }
    .chat-empty { justify-content: flex-start !important; padding-top: 9vh; }
    .chat-composer,.chat-disclaimer,.voice-confirmation { width: calc(100% - 8px); }
    .admin-toolbar { width: 100%; }
    .admin-toolbar .mud-button-root { flex: 1 1 auto; }
    .admin-stats { grid-template-columns: 1fr; }
    .document-toolbar { align-items: stretch; flex-direction: column; }
    .document-viewer-page { height:calc(100dvh - 80px);border-radius:7px; }
    .document-word-preview { width:calc(100% - 16px);min-height:calc(100% - 16px);margin:8px auto;padding:28px 20px;box-shadow:none; }
    .login-content { width:min(100% - 28px,420px); }
    .login-card { margin-top:24px;padding:30px 24px 26px !important; }
    .login-subtitle { text-align:center; }
    .login-trust { gap:10px;font-size:.68rem; }
    .login-footer { bottom:14px;font-size:.65rem; }
    .login-rings-right { transform:translate(180px,-40px); }
    .login-documents { opacity:.18; }
}

@media (prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior:auto !important;animation-duration:.01ms !important;animation-iteration-count:1 !important; } }
