:root { --rw-bg: #f8f7f4; --rw-surface: #fffefd; --rw-surface-muted: #f1efeb; --rw-border: #d8d2ca; --rw-border-strong: #b9afa5; --rw-text: #201e1c; --rw-muted: #6b625b; --rw-primary: #7a3e2f; --rw-primary-hover: #633126; --rw-primary-soft: #f3dfd7; --rw-success: #3f6f58; --rw-warning: #8a5f14; --rw-danger: #a33d2f; --rw-focus: rgba(122, 62, 47, .28); --rw-shadow: 0 1px 2px rgba(32, 30, 28, .08), 0 10px 24px rgba(32, 30, 28, .06); } body { background: var(--rw-bg); color: var(--rw-text); font-family: "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } .login-body { min-height: 100vh; } .login-shell { align-items: center; display: flex; min-height: 100vh; padding: 2rem 1rem; } .login-panel { background: var(--rw-surface); border: 1px solid var(--rw-border); border-radius: 8px; box-shadow: var(--rw-shadow); margin: 0 auto; max-width: 420px; padding: 1.5rem; width: 100%; } .login-brand { align-items: center; border-bottom: 1px solid var(--rw-border); display: flex; gap: .85rem; margin-bottom: 1rem; padding-bottom: 1rem; } .login-mark { align-items: center; background: var(--rw-primary); border-radius: 8px; color: #fff; display: inline-flex; font-weight: 800; height: 3rem; justify-content: center; width: 3rem; } .login-brand h1 { font-size: 1.35rem; font-weight: 700; margin: 0; } .login-brand p { color: var(--rw-muted); margin: .2rem 0 0; } .login-form { display: grid; gap: 1rem; } .login-form label { color: var(--rw-muted); font-size: .875rem; font-weight: 600; } .rw-nav, .navbar { background: rgba(255, 254, 253, .96) !important; border-bottom: 1px solid var(--rw-border) !important; box-shadow: 0 1px 0 rgba(32, 30, 28, .03); } .navbar-brand { color: var(--rw-text); font-weight: 700; } .rw-nav .container { align-items: center; display: flex; flex-wrap: wrap; gap: .75rem; } .rw-menu { align-items: center; display: flex; flex-wrap: wrap; gap: .35rem; } .rw-menu-group { position: relative; } .rw-menu-trigger { background: transparent; border: 1px solid transparent; border-radius: 999px; color: var(--rw-muted); font-size: .9rem; font-weight: 700; min-height: 2.25rem; padding: .45rem .85rem; } .rw-menu-trigger:hover, .rw-menu-trigger:focus, .rw-menu-group.open .rw-menu-trigger { background: var(--rw-surface-muted); border-color: var(--rw-border); color: var(--rw-text); } .rw-menu-panel { background: var(--rw-surface); border: 1px solid var(--rw-border); border-radius: 8px; box-shadow: var(--rw-shadow); display: none; left: 0; min-width: 190px; padding: .35rem; position: absolute; top: calc(100% + .35rem); z-index: 30; } .rw-menu-group.open .rw-menu-panel { display: grid; gap: .15rem; } .rw-menu-panel .nav-link { border-radius: 8px; color: var(--rw-text); display: block; padding: .55rem .65rem !important; white-space: nowrap; } .nav-link { border-radius: 999px; color: var(--rw-muted); font-size: .9rem; padding: .45rem .75rem !important; } .nav-link:hover, .nav-link:focus { background: var(--rw-surface-muted); color: var(--rw-text); } @media (max-width: 920px) { .rw-menu-panel { position: static; } .rw-menu-group.open .rw-menu-panel { display: grid; } .architecture-strip { grid-template-columns: 1fr; } .architecture-arrow { display: none; } } .page-title { margin-bottom: 1.5rem; } .page-title h1 { font-size: 1.7rem; font-weight: 700; margin: 0; } .page-title p { color: var(--rw-muted); margin: .35rem 0 0; } .architecture-strip { align-items: stretch; display: grid; gap: .5rem; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr); margin-bottom: 1rem; min-width: 0; } .architecture-step { background: var(--rw-surface); border: 1px solid var(--rw-border); border-radius: 8px; min-width: 0; padding: .85rem; } .architecture-step.active { border-color: var(--rw-primary); box-shadow: inset 0 0 0 1px var(--rw-primary); } .architecture-kicker { color: var(--rw-muted); display: block; font-size: .72rem; font-weight: 800; text-transform: uppercase; } .architecture-step strong { display: block; font-size: .95rem; margin-top: .15rem; } .architecture-step p { color: var(--rw-muted); font-size: .82rem; margin: .25rem 0 0; overflow-wrap: anywhere; } .architecture-arrow { align-self: center; color: var(--rw-muted); font-weight: 800; } .rw-card, .content-band, .summary-tile { background: var(--rw-surface); border: 1px solid var(--rw-border); border-radius: 8px; box-shadow: var(--rw-shadow); } .summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; margin-bottom: 1rem; } .summary-tile { color: inherit; display: block; padding: 1rem; text-decoration: none; } .summary-tile:hover { border-color: var(--rw-border-strong); color: inherit; transform: translateY(-1px); } .summary-tile .label { color: var(--rw-muted); display: block; font-size: .875rem; } .summary-tile strong { display: block; font-size: 1.75rem; margin-top: .35rem; } .content-band { margin-bottom: 1rem; min-width: 0; padding: 1rem; } .content-band h2, .section-heading h2 { font-size: 1rem; font-weight: 700; margin: 0; } .section-heading { align-items: center; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; } .section-subtitle { color: var(--rw-muted); font-size: .875rem; margin: .2rem 0 0; } .form-grid { align-items: end; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(180px, 100%), 1fr)); gap: 1rem; min-width: 0; } .form-grid label { color: var(--rw-muted); font-size: .875rem; font-weight: 600; } .form-grid .span-2 { grid-column: span 2; } .inline-form { display: inline; } .action-stack { align-items: center; display: flex; flex-wrap: wrap; gap: .4rem; } .action-stack .inline-form { display: inline-flex; } .switch-field { align-items: center; display: flex; gap: .5rem; min-height: 38px; padding-left: 2.5rem; } .token-value { display: block; margin-top: .5rem; overflow-wrap: anywhere; } .meta-row { display: flex; gap: 1rem; margin-bottom: .75rem; } .master-detail { border-bottom: 1px solid var(--rw-border); padding-bottom: 1rem; } .field-block-title { color: var(--rw-muted); font-size: .875rem; font-weight: 700; margin-bottom: .35rem; } .rule-list { display: grid; gap: .5rem; } .rule-row { display: grid; gap: .5rem; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) auto; min-width: 0; } .permission-wizard { display: grid; gap: 1rem; min-width: 0; } .wizard-progress { display: flex; flex-wrap: wrap; gap: .4rem; } .wizard-step-indicator { background: var(--rw-surface-muted); border: 1px solid var(--rw-border); border-radius: 999px; color: var(--rw-muted); font-size: .82rem; font-weight: 700; min-height: 2rem; padding: .3rem .7rem; } .wizard-step-indicator.active { background: var(--rw-primary); border-color: var(--rw-primary); color: #fff; } .wizard-summary { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr)); min-width: 0; } .wizard-summary > div, .policy-preview dl > div { background: var(--rw-surface-muted); border: 1px solid var(--rw-border); border-radius: 8px; padding: .75rem; } .wizard-summary span, .policy-preview dt { color: var(--rw-muted); display: block; font-size: .78rem; font-weight: 700; } .wizard-summary strong, .policy-preview dd { display: block; margin: .25rem 0 0; overflow-wrap: anywhere; } .wizard-panel { border: 1px solid var(--rw-border); border-radius: 8px; display: none; min-width: 0; padding: 1rem; } .wizard-panel.active { display: grid; gap: 1rem; } .wizard-panel-heading { align-items: flex-start; display: flex; gap: .75rem; } .wizard-panel-heading h3 { font-size: 1rem; font-weight: 700; margin: 0; } .wizard-panel-heading p, .wizard-hint { color: var(--rw-muted); margin: .15rem 0 0; } .wizard-step-number { align-items: center; background: var(--rw-primary-soft); border-radius: 999px; color: var(--rw-primary); display: inline-flex; font-weight: 800; height: 2rem; justify-content: center; min-width: 2rem; } .wizard-actions { align-items: center; display: flex; gap: .5rem; justify-content: flex-end; } .policy-preview dl { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); margin: 0; } .bulk-apply-summary { cursor: pointer; font-weight: 700; min-height: 2rem; } .vpd-target-controls { align-items: end; background: var(--rw-surface-muted); border: 1px solid var(--rw-border); border-radius: 8px; display: grid; gap: .75rem; grid-template-columns: minmax(min(220px, 100%), 1.5fr) repeat(4, minmax(min(120px, 100%), 1fr)) auto auto; margin-bottom: .75rem; min-width: 0; padding: .75rem; } .vpd-target-controls label { color: var(--rw-muted); font-size: .78rem; font-weight: 700; } .vpd-support-toggle { align-items: center; display: flex; gap: .45rem; min-height: 2.2rem; } .vpd-target-count { color: var(--rw-muted); font-size: .82rem; white-space: nowrap; } .question-presets { display: flex; flex-wrap: wrap; gap: .5rem; } .question-preset { max-width: 100%; white-space: normal; text-align: left; } .checkbox-row { display: flex; flex-wrap: wrap; gap: .75rem 1rem; min-height: 2.45rem; align-items: center; } .checkbox-row .form-check { margin: 0; } .rw-btn, .btn { border-radius: 999px; font-weight: 600; min-height: 2.25rem; padding: .45rem 1rem; } .rw-btn-primary, .btn-primary { background: var(--rw-primary); border-color: var(--rw-primary); color: #fff; } .rw-btn-primary:hover, .rw-btn-primary:focus, .btn-primary:hover, .btn-primary:focus { background: var(--rw-primary-hover); border-color: var(--rw-primary-hover); color: #fff; } .rw-btn-secondary, .btn-outline-primary, .btn-outline-secondary { background: transparent; border-color: var(--rw-border-strong); color: var(--rw-primary); } .rw-btn-secondary:hover, .btn-outline-primary:hover, .btn-outline-secondary:hover { background: var(--rw-primary-soft); border-color: var(--rw-primary); color: var(--rw-primary-hover); } .btn-outline-danger { border-color: #d7b8b2; color: var(--rw-danger); } .btn-outline-danger:hover { background: #f8ded9; border-color: var(--rw-danger); color: #77291f; } .rw-field, .form-control, .form-select { background-color: #fffefd; border: 1px solid var(--rw-border); border-radius: 8px; color: var(--rw-text); min-height: 2.45rem; } .rw-field:focus, .form-control:focus, .form-select:focus { border-color: var(--rw-primary); box-shadow: 0 0 0 .2rem var(--rw-focus); } .table { --bs-table-bg: transparent; --bs-table-striped-bg: #f6f3ef; color: var(--rw-text); } .table thead th { background: var(--rw-surface-muted); border-bottom-color: var(--rw-border); color: var(--rw-muted); font-size: .78rem; font-weight: 700; text-transform: uppercase; } .badge { border-radius: 999px; font-weight: 700; padding: .35rem .6rem; } .text-bg-success { background-color: #dcebe3 !important; color: var(--rw-success) !important; } .text-bg-warning { background-color: #f7ead0 !important; color: var(--rw-warning) !important; } .text-bg-secondary { background-color: #ece8e3 !important; color: var(--rw-muted) !important; } .alert { border-radius: 8px; border-width: 1px; } .alert-success { background: #edf6f0; border-color: #bed8c9; color: #2f5c47; } .alert-warning { background: #fff5df; border-color: #e7cfa0; color: #6f4b0f; } .alert-danger { background: #f9e5e1; border-color: #e2b8b0; color: #812e23; } .probe-exchange-grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); margin: 1rem 0; } .mcp-service-grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } .mcp-service-item { background: var(--rw-surface-muted); border: 1px solid var(--rw-border); border-radius: 8px; display: grid; gap: .35rem; min-height: 124px; padding: .85rem; } .mcp-service-item span { color: var(--rw-muted); font-size: .78rem; font-weight: 800; text-transform: uppercase; } .mcp-service-item strong { font-size: .95rem; overflow-wrap: anywhere; } .mcp-service-item small { color: var(--rw-muted); line-height: 1.45; } .chat-shell { display: grid; gap: 1rem; } .chat-thread { display: grid; gap: .75rem; } .chat-message { border: 1px solid var(--rw-border); border-radius: 8px; max-width: 100%; padding: .85rem; } .chat-message strong { display: block; font-size: .82rem; margin-bottom: .45rem; text-transform: uppercase; } .chat-message p { margin: 0; } .user-message { background: #edf2f7; margin-left: auto; width: min(760px, 92%); } .assistant-message { background: var(--rw-surface-muted); width: min(920px, 100%); } .chat-form { border-top: 1px solid var(--rw-border); display: grid; gap: .75rem; padding-top: 1rem; } .chat-form-row { display: grid; gap: .75rem; grid-template-columns: minmax(180px, 1fr) minmax(120px, 180px); } .chat-form label { color: var(--rw-muted); font-size: .875rem; font-weight: 700; } .chat-debug { margin-top: .75rem; } .chat-debug summary { color: var(--rw-primary); cursor: pointer; font-weight: 700; } @media (max-width: 720px) { .chat-form-row { grid-template-columns: 1fr; } .user-message, .assistant-message { width: 100%; } } .probe-exchange { border: 1px solid var(--rw-border); border-radius: 8px; overflow: hidden; } .probe-exchange h3 { background: var(--rw-surface-muted); border-bottom: 1px solid var(--rw-border); font-size: .85rem; font-weight: 700; margin: 0; padding: .55rem .75rem; } .probe-exchange pre { background: #211f1d; color: #fbf9f7; font-size: .78rem; margin: 0; max-height: 320px; overflow: auto; padding: .75rem; white-space: pre-wrap; word-break: break-word; } .code-editor { background: #211f1d; border: 0; border-radius: 0; color: #fbf9f7; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; font-size: .78rem; line-height: 1.45; min-height: 320px; resize: vertical; } .code-editor:focus { background: #211f1d; color: #fbf9f7; } .form-actions { align-items: center; background: var(--rw-surface-muted); border-top: 1px solid var(--rw-border); display: flex; justify-content: flex-end; padding: .55rem .75rem; } .table-pre { background: transparent; color: inherit; font-size: .78rem; margin: 0; white-space: pre-wrap; } .policy-function-button { border-radius: 8px; max-width: 100%; overflow-wrap: anywhere; text-align: left; } .policy-function-button.active, .policy-function-button[aria-expanded="true"] { background: var(--rw-accent-soft); border-color: var(--rw-accent); color: var(--rw-accent-strong); } .policy-source-cell { background: var(--rw-surface) !important; padding: 0 0 .75rem !important; } .filter-edit-grid { display: grid; gap: 1rem; } .filter-edit-form { display: grid; gap: .75rem; padding: .75rem; } .filter-detail-stack + .filter-detail-stack { border-top: 1px solid var(--rw-border); margin-top: 1rem; padding-top: 1rem; } .policy-detail-list { display: grid; grid-template-columns: minmax(120px, 34%) 1fr; margin: 0; } .policy-detail-list dt, .policy-detail-list dd { border-bottom: 1px solid var(--rw-border); margin: 0; min-width: 0; padding: .6rem .75rem; } .policy-detail-list dt { background: var(--rw-surface-muted); color: var(--rw-muted); font-size: .78rem; font-weight: 700; text-transform: uppercase; } .policy-detail-list dd { overflow-wrap: anywhere; } .htmx-indicator { display: none; } .htmx-request .htmx-indicator, .htmx-request.htmx-indicator { display: inline-flex; } .loading-pill { align-items: center; background: var(--rw-surface-muted); border: 1px solid var(--rw-border); border-radius: 999px; color: var(--rw-muted); font-size: .78rem; font-weight: 700; gap: .4rem; min-height: 2rem; padding: .25rem .65rem; white-space: nowrap; } .loading-spinner { animation: spin .8s linear infinite; border: 2px solid var(--rw-border-strong); border-top-color: var(--rw-primary); border-radius: 999px; display: inline-block; height: .9rem; width: .9rem; } @keyframes spin { to { transform: rotate(360deg); } } .ai-answer { background: var(--rw-primary-soft); border: 1px solid var(--rw-border); border-radius: 8px; margin: 1rem 0; overflow: hidden; } .ai-answer h3 { border-bottom: 1px solid var(--rw-border); font-size: .9rem; font-weight: 700; margin: 0; padding: .6rem .8rem; } .ai-answer pre, .markdown-view { color: var(--rw-text); font-family: inherit; font-size: .95rem; margin: 0; padding: .85rem; white-space: pre-wrap; } .markdown-view { line-height: 1.6; overflow-x: auto; } .markdown-view h2, .markdown-view h3 { border: 0; color: var(--rw-text); margin: .9rem 0 .45rem; padding: 0; } .markdown-view h2:first-child, .markdown-view h3:first-child { margin-top: 0; } .markdown-view h2 { font-size: 1.05rem; } .markdown-view h3 { font-size: .98rem; } .markdown-view p { margin: .45rem 0; } .markdown-view ul, .markdown-view ol { margin: .45rem 0 .65rem 1.25rem; padding: 0; } .markdown-view code { background: rgba(49, 45, 42, .08); border: 1px solid var(--rw-border); border-radius: 4px; color: var(--rw-text); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; font-size: .88em; padding: .08rem .28rem; } .markdown-view table { background: var(--rw-surface); border-collapse: collapse; font-size: .86rem; margin: .7rem 0; min-width: 760px; width: 100%; } .markdown-view th, .markdown-view td { border: 1px solid var(--rw-border); padding: .55rem .65rem; text-align: left; vertical-align: top; } .markdown-view th { background: var(--rw-surface-muted); font-weight: 800; } .table-responsive { max-width: 100%; min-width: 0; overflow-x: auto; -webkit-overflow-scrolling: touch; } .table-responsive > .table { margin-bottom: 0; } .table th, .table td { min-width: 0; vertical-align: top; } .table-responsive > .table th, .table-responsive > .table td { white-space: nowrap; } .table code, .table-responsive > .table code { overflow-wrap: normal; white-space: nowrap; word-break: normal; } .table-pre { max-height: 8rem; overflow: auto; white-space: pre-wrap; } @media (max-width: 920px) { .architecture-strip { grid-template-columns: 1fr; } .architecture-arrow { display: none; } } @media (max-width: 640px) { main.container { max-width: 100%; min-width: 0; padding-left: .75rem; padding-right: .75rem; } .page-title { margin-bottom: 1rem; } .page-title h1 { font-size: 1.45rem; } .content-band { padding: .85rem; } .section-heading { align-items: flex-start; gap: .5rem; } .form-grid .span-2 { grid-column: span 1; } .rule-row { grid-template-columns: 1fr; } .rule-row .btn { width: 100%; } .wizard-panel { padding: .85rem; } .wizard-actions { flex-wrap: wrap; } .wizard-actions .btn { flex: 1 1 auto; } .vpd-target-controls { grid-template-columns: 1fr; } .vpd-target-count { white-space: normal; } .table-responsive > .table { min-width: 960px; } .navbar .container { align-items: flex-start; gap: .75rem; } .rw-menu { width: 100%; } .rw-menu-group { min-width: 0; } .rw-menu-trigger { padding-left: .65rem; padding-right: .65rem; } }