/* QuoteVault 2.35.1 shared application components. */
:root{--qv-component-bg:rgba(16,19,33,.96);--qv-component-line:rgba(255,255,255,.09);--qv-component-muted:#aaa6b7;--qv-component-subtle:#7b7788;--qv-component-text:#f4f2fb;--qv-component-accent:#8f71ff;--qv-component-accent2:#b69cff;--qv-component-danger:#ff7580;--qv-component-good:#73d2a0}
.qv-ui-button,.qv-ui-icon-button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 13px;border:1px solid var(--qv-component-line);border-radius:10px;background:rgba(255,255,255,.03);color:var(--qv-component-text);font:600 12px/1.2 'Inter',system-ui,sans-serif;cursor:pointer;text-decoration:none}.qv-ui-button:hover,.qv-ui-icon-button:hover{border-color:rgba(143,113,255,.26);background:rgba(143,113,255,.065)}.qv-ui-button.is-primary{border-color:rgba(143,113,255,.4);background:#8165ef;color:#fff}.qv-ui-button.is-danger{border-color:rgba(255,117,128,.3);background:rgba(255,117,128,.08);color:#ff9ba4}.qv-ui-button.is-ghost{background:transparent}.qv-ui-icon-button{width:40px;padding:0}.qv-ui-input,.qv-ui-select,.qv-ui-textarea{min-height:42px;width:100%;padding:0 11px;border:1px solid var(--qv-component-line);border-radius:10px;background:rgba(255,255,255,.025);color:var(--qv-component-text);font:500 12px 'Inter',system-ui,sans-serif}.qv-ui-textarea{min-height:90px;padding:10px 11px;resize:vertical}.qv-ui-kicker{color:var(--qv-component-accent2);font:650 10px 'Inter',system-ui,sans-serif}.qv-ui-chip{min-height:29px;display:inline-flex;align-items:center;gap:6px;padding:0 9px;border:1px solid var(--qv-component-line);border-radius:999px;background:rgba(255,255,255,.025);color:var(--qv-component-muted);font:550 10px 'Inter',system-ui,sans-serif}.qv-ui-chip.is-accent{border-color:rgba(143,113,255,.25);background:rgba(143,113,255,.07);color:#d5cbff}.qv-ui-chip.is-danger{border-color:rgba(255,117,128,.27);color:#ff9ba4}.qv-ui-empty{padding:28px;border:1px dashed rgba(255,255,255,.1);border-radius:14px;color:var(--qv-component-subtle);text-align:center;font:500 12px/1.6 'Inter',system-ui,sans-serif}.qv-ui-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.12);border-top-color:var(--qv-component-accent);border-radius:50%;animation:qv-ui-spin .8s linear infinite}@keyframes qv-ui-spin{to{transform:rotate(360deg)}}
.qv-command-backdrop,.qv-app-panel-backdrop,.qv-quote-backdrop{position:fixed;inset:0;z-index:9600;background:rgba(5,6,11,.66);opacity:0;pointer-events:none;transition:opacity .16s ease;backdrop-filter:blur(3px)}.qv-command-backdrop.is-open,.qv-app-panel-backdrop.is-open,.qv-quote-backdrop.is-open{opacity:1;pointer-events:auto}.qv-command{position:fixed;z-index:9650;top:10vh;left:50%;width:min(680px,calc(100vw - 28px));max-height:75vh;overflow:hidden;transform:translate(-50%,-10px);opacity:0;pointer-events:none;border:1px solid var(--qv-component-line);border-radius:18px;background:var(--qv-component-bg);box-shadow:0 30px 90px rgba(0,0,0,.5);transition:opacity .16s ease,transform .16s ease}.qv-command.is-open{opacity:1;transform:translate(-50%,0);pointer-events:auto}.qv-command-head,.qv-app-panel-head,.qv-quote-drawer-head{display:flex;align-items:center;gap:10px;padding:13px 14px;border-bottom:1px solid var(--qv-component-line)}.qv-command-head input{flex:1;min-width:0;border:0;background:transparent;color:var(--qv-component-text);font:500 14px 'Inter',system-ui,sans-serif;outline:0}.qv-command-hint{color:var(--qv-component-subtle);font:500 9px 'IBM Plex Mono',monospace}.qv-command-results{max-height:58vh;overflow:auto;padding:6px}.qv-command-item{width:100%;display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:center;padding:10px;border:0;border-radius:10px;background:transparent;color:var(--qv-component-muted);text-align:left;cursor:pointer}.qv-command-item:hover,.qv-command-item.is-active{background:rgba(143,113,255,.07);color:var(--qv-component-text)}.qv-command-item-icon{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--qv-component-line);border-radius:9px;color:var(--qv-component-accent2)}
.qv-app-panel{position:fixed;right:0;top:0;bottom:0;z-index:9650;width:min(430px,100vw);display:flex;flex-direction:column;transform:translateX(100%);border-left:1px solid var(--qv-component-line);background:var(--qv-component-bg);box-shadow:-24px 0 70px rgba(0,0,0,.4);transition:transform .18s ease}.qv-app-panel.is-open{transform:none}.qv-app-panel-head{justify-content:space-between}.qv-app-panel-head h2,.qv-quote-drawer-head h2{margin:2px 0 0;color:var(--qv-component-text);font:700 20px/1.15 'Inter',system-ui,sans-serif;letter-spacing:-.03em}.qv-app-panel-body{padding:13px;overflow:auto;flex:1}.qv-app-panel-actions{display:flex;gap:7px}.qv-notification{display:grid;grid-template-columns:8px 1fr;gap:10px;padding:12px 10px;border-bottom:1px solid var(--qv-component-line);color:var(--qv-component-muted)}.qv-notification.is-read{opacity:.68}.qv-notification-dot{width:7px;height:7px;margin-top:5px;border-radius:50%;background:var(--qv-component-accent)}
.qv-quote-drawer{position:fixed;right:0;top:0;bottom:0;z-index:9660;width:min(620px,100vw);display:flex;flex-direction:column;transform:translateX(100%);border-left:1px solid var(--qv-component-line);background:var(--qv-component-bg);box-shadow:-24px 0 70px rgba(0,0,0,.42);transition:transform .18s ease}.qv-quote-drawer.is-open{transform:none}.qv-quote-drawer-body{padding:18px;overflow:auto;flex:1}.qv-quote-drawer-foot{padding:12px 16px;border-top:1px solid var(--qv-component-line);display:flex;justify-content:space-between;gap:9px;background:rgba(255,255,255,.018)}.qv-quote-main{padding:17px;border:1px solid var(--qv-component-line);border-radius:14px;background:rgba(255,255,255,.02)}.qv-quote-main textarea{min-height:150px;font:500 15px/1.65 'Inter',system-ui,sans-serif}.qv-quote-byline{display:flex;align-items:center;gap:11px;margin-bottom:14px}.qv-quote-avatar,.qv-quote-avatar-fallback{width:38px;height:38px;border:1px solid var(--qv-component-line);border-radius:10px;background:rgba(255,255,255,.025);object-fit:cover}.qv-quote-avatar-fallback{display:grid;place-items:center;font:700 11px 'IBM Plex Mono',monospace}.qv-quote-byline strong{display:block;color:var(--qv-component-text);font:600 12px 'Inter',system-ui,sans-serif}.qv-quote-byline small{display:block;margin-top:3px;color:var(--qv-component-subtle);font:500 9px 'IBM Plex Mono',monospace}.qv-quote-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:13px}.qv-quote-meta-grid>div{padding:12px;border:1px solid var(--qv-component-line);border-radius:10px;background:rgba(255,255,255,.018)}.qv-quote-meta-grid span{display:block;color:var(--qv-component-subtle);font:600 9px 'Inter',system-ui,sans-serif}.qv-quote-meta-grid strong,.qv-quote-meta-grid a{display:block;margin-top:6px;color:#d9d5e2;font:500 11px 'IBM Plex Mono',monospace;word-break:break-word}.qv-drawer-section{margin-top:20px}.qv-drawer-section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:9px}.qv-drawer-section-head h3{margin:0;color:var(--qv-component-text);font:680 17px 'Inter',system-ui,sans-serif}.qv-chip-row{display:flex;flex-wrap:wrap;gap:6px}.qv-inline-add{display:flex;gap:7px;margin-top:8px}.qv-inline-add input,.qv-inline-add select{min-width:0;flex:1}.qv-context-line{margin:7px 0;padding:9px 11px;border-left:2px solid rgba(143,113,255,.32);border-radius:0 9px 9px 0;background:rgba(143,113,255,.035)}.qv-context-line strong{font:600 11px 'Inter',system-ui,sans-serif}.qv-context-line p{margin:4px 0 0;color:var(--qv-component-muted);font:500 11px/1.55 'IBM Plex Mono',monospace}.qv-attachment{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:7px;padding:10px 11px;border:1px solid var(--qv-component-line);border-radius:10px;color:#d0ccd9;text-decoration:none}.qv-attachment small{display:block;margin-top:3px;color:var(--qv-component-subtle)}.qv-history-line{display:grid;grid-template-columns:1fr auto;gap:10px;padding:8px 0;border-bottom:1px solid var(--qv-component-line)}.qv-history-line strong{font:500 11px 'IBM Plex Mono',monospace}.qv-history-line small{color:var(--qv-component-subtle);font:500 9px 'IBM Plex Mono',monospace}.qv-removed-state{margin-bottom:13px;padding:11px 12px;border:1px solid rgba(255,117,128,.27);border-radius:10px;background:rgba(255,117,128,.05);color:#ff9ba4;font:550 11px 'Inter',system-ui,sans-serif}
.qv-undo-toast{position:fixed;left:50%;bottom:22px;z-index:9800;min-width:min(520px,calc(100vw - 28px));max-width:650px;padding:11px 12px 11px 14px;display:flex;align-items:center;justify-content:space-between;gap:13px;transform:translate(-50%,14px);opacity:0;border:1px solid var(--qv-component-line);border-radius:12px;background:var(--qv-component-bg);box-shadow:0 18px 50px rgba(0,0,0,.4);transition:.18s ease}.qv-undo-toast.is-visible{transform:translate(-50%,0);opacity:1}.qv-undo-toast span{font:500 12px 'Inter',system-ui,sans-serif}.qv-live-pulse,.qv-live-indicator{display:inline-flex;align-items:center;gap:6px;color:var(--qv-component-subtle);font:600 9px 'Inter',system-ui,sans-serif}.qv-live-pulse i,.qv-live-indicator i{width:6px;height:6px;border-radius:50%;background:#5d6170}.qv-live-pulse.is-live i,.qv-live-indicator.is-live i{background:var(--qv-component-good);box-shadow:0 0 0 4px rgba(115,210,160,.08)}.qv-activity-stream{overflow:hidden;border:1px solid var(--qv-component-line);border-radius:13px}.qv-activity-item{display:grid;grid-template-columns:9px minmax(0,1fr) auto;gap:11px;padding:12px 13px;border-bottom:1px solid var(--qv-component-line);align-items:start}.qv-activity-item:last-child{border-bottom:0}.qv-activity-marker{width:7px;height:7px;margin-top:4px;border-radius:50%;background:#676b79}.qv-activity-item[data-type^='quote.'] .qv-activity-marker{background:var(--qv-component-accent)}.qv-activity-item strong{display:block;font:600 12px 'Inter',system-ui,sans-serif}.qv-activity-item small{display:block;margin-top:4px;color:var(--qv-component-subtle);font:500 9px 'IBM Plex Mono',monospace}.qv-activity-item time{color:var(--qv-component-subtle);font:500 9px 'IBM Plex Mono',monospace;white-space:nowrap}.qv-media-upload{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.qv-media-upload input[type=file]{display:none}.qv-media-upload-status{color:var(--qv-component-subtle);font:500 9px 'IBM Plex Mono',monospace}.qv-media-upload-preview{max-width:180px;max-height:82px;border:1px solid var(--qv-component-line);border-radius:9px;object-fit:cover}.qv-inline-editable{position:relative}.qv-inline-editable [data-qv-inline-trigger]{cursor:text;border-bottom:1px dashed rgba(255,255,255,.2)}.qv-inline-editor{display:flex;gap:7px;align-items:center;margin-top:7px}.qv-inline-editor input{min-width:0;flex:1}.qv-inline-editor-actions{display:flex;gap:6px;margin-top:8px}.qv-media-field{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:end}.qv-media-field>span,.qv-media-field>small{grid-column:1/-1}.qv-collection-identity-fields{display:grid;gap:12px;padding:14px 0;border-top:1px solid var(--qv-component-line);border-bottom:1px solid var(--qv-component-line);margin:10px 0 14px}.qv-public-layout-preview{display:grid;gap:10px;padding:13px;border:1px solid var(--qv-component-line);border-radius:12px;background:rgba(255,255,255,.018)}.qv-public-layout-preview.is-compact{grid-template-columns:1fr auto}.qv-public-layout-preview.is-banner{min-height:150px;align-content:end;background:linear-gradient(180deg,rgba(143,113,255,.025),rgba(255,255,255,.018))}
.qv-app-topbar-tools{display:flex;align-items:center;gap:6px;flex:0 0 auto}.qv-app-topbar-tools>button{position:relative;width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--qv-component-line);border-radius:11px;background:rgba(255,255,255,.025);color:var(--qv-component-muted);font-size:18px;cursor:pointer}.qv-app-topbar-tools>button:hover{border-color:rgba(143,113,255,.25);background:rgba(143,113,255,.065);color:#fff}.qv-app-topbar-tools .qv-app-badge{position:absolute;right:-5px;top:-5px;min-width:17px;height:17px;padding:0 4px;border:2px solid #0b0e18;border-radius:10px;background:var(--qv-component-accent);color:#fff;display:grid;place-items:center;font:700 8px 'IBM Plex Mono',monospace}.qv-app-topbar-tools .qv-app-badge[hidden]{display:none}.qv-job-toast-stack{position:fixed;right:20px;bottom:20px;z-index:9750;width:min(390px,calc(100vw - 28px));display:grid;gap:9px;pointer-events:none}.qv-job-toast{pointer-events:auto;padding:14px;border:1px solid var(--qv-component-line);border-radius:14px;background:var(--qv-component-bg);box-shadow:0 20px 58px rgba(0,0,0,.42);backdrop-filter:blur(18px)}.qv-job-toast header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.qv-job-toast header small{display:block;color:var(--qv-component-accent2);font:650 9px 'Inter',system-ui,sans-serif}.qv-job-toast header strong{display:block;margin-top:4px;color:var(--qv-component-text);font:680 15px/1.25 'Inter',system-ui,sans-serif}.qv-job-toast header button{width:30px;height:30px;border:1px solid var(--qv-component-line);border-radius:9px;background:rgba(255,255,255,.025);color:var(--qv-component-muted);display:grid;place-items:center;cursor:pointer}.qv-job-toast-state{display:flex;justify-content:space-between;gap:12px;margin-top:10px;color:var(--qv-component-subtle);font:550 10px 'Inter',system-ui,sans-serif}.qv-job-toast-state b{color:var(--qv-component-muted)}.qv-job-toast .qv-job-progress{margin:8px 0 0}.qv-job-toast>p{margin:9px 0 0;color:#ff9ba4;font:500 11px/1.5 'Inter',system-ui,sans-serif}.qv-job-toast-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.qv-job-toast-actions:empty{display:none}.qv-job-toast.is-completed{border-color:rgba(115,210,160,.26)}.qv-job-toast.is-failed{border-color:rgba(255,117,128,.28)}
@media(max-width:720px){.qv-command{top:8vh}.qv-command-hint{display:none}.qv-quote-drawer-body{padding:14px}.qv-quote-meta-grid{grid-template-columns:1fr}.qv-quote-drawer-foot{flex-wrap:wrap}.qv-app-panel,.qv-quote-drawer{width:100vw}.qv-inline-add,.qv-media-field{grid-template-columns:1fr;flex-direction:column}.qv-activity-item{grid-template-columns:9px 1fr}.qv-activity-item time{grid-column:2}.qv-job-toast-stack{right:10px;bottom:74px;width:calc(100vw - 20px)}}@media(prefers-reduced-motion:reduce){.qv-command,.qv-app-panel,.qv-quote-drawer,.qv-command-backdrop,.qv-app-panel-backdrop,.qv-quote-backdrop,.qv-undo-toast{transition:none}.qv-ui-spinner{animation-duration:1.4s}}
