*{box-sizing:border-box;font-family:Inter,Arial,sans-serif}:root{--bg-page: #f1f4f6;--bg-surface: #ffffff;--bg-surface-soft: #f6f8fa;--text-main: #1f2937;--text-muted: #6b7280;--primary: #2f6f5e;--primary-hover: #285f51;--accent: #3b82f6;--border: #d6dde6;--border-strong: #c4cfdb;--shadow-sm: 0 2px 6px rgba(0, 0, 0, .05);--shadow-md: 0 10px 28px rgba(0, 0, 0, .08);--radius-lg: 12px;--radius-md: 8px;--radius-sm: 6px}html{overflow-x:hidden}body{margin:0;background:#f1f4f6;color:var(--text-main);overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}.layout{display:flex;flex-direction:column;height:100vh;height:100dvh;min-height:0;gap:12px;padding:12px;padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px));padding-bottom:max(12px,env(safe-area-inset-bottom,0px));box-sizing:border-box}.header{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(180deg,#fff,#f4f7fa);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);padding:10px 14px}.header-brand{display:flex;flex-direction:column;gap:2px;min-width:0}.header-brand h2{margin:0;font-size:1.2rem;font-weight:700;letter-spacing:-.01em;line-height:1.25}.header-brand h2:before{content:"🏢 "}.header-org{font-size:.8rem;font-weight:500;color:var(--text-muted);line-height:1.3;max-width:min(480px,50vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 768px){.header-org{max-width:100%;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}}.header-actions{display:flex;align-items:center;gap:14px}.btn-journal{display:inline-flex;align-items:center;justify-content:center;background:#f8fbff;color:var(--primary);border:1px solid #b9ccf4;border-radius:6px;padding:6px 12px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-journal:hover{background:#edf4ff;border-color:#9db7ec}.btn-journal-badge{margin-left:6px;min-width:1.25rem;padding:1px 6px;border-radius:999px;background:#2563eb;color:#fff;font-size:.7rem;line-height:1.3}.header-user{font-size:.85rem;color:var(--text-muted)}.btn-logout{background:#f8fafc;color:#334155;border:1px solid var(--border-strong);border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-logout:hover{background:#f1f5f9}.layout-info{flex-shrink:0;padding:10px 12px;background:#f5f9ff;border:1px solid #d7e7ff;border-radius:var(--radius-md);font-size:.88rem;color:#1e3a5f;box-shadow:var(--shadow-sm)}.llm-alert{background:#fef2f2;border-color:#fca5a5;color:#991b1b;font-weight:600}.llm-metrics-card{background:var(--bg-surface);border:1px solid #dbeafe;border-radius:var(--radius-md);padding:10px 12px;box-shadow:var(--shadow-sm)}.llm-metrics-summary{font-size:.84rem;color:#334155;margin-bottom:8px}.llm-metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.llm-chart-title{font-size:.78rem;color:#475569;margin-bottom:6px}.llm-chart-bars{display:grid;grid-template-columns:repeat(24,minmax(6px,1fr));gap:3px;align-items:end}.llm-chart-col{display:flex;flex-direction:column;align-items:center;gap:2px}.llm-chart-stack{width:100%;max-width:14px;min-height:48px;height:70px;border:1px solid #dbeafe;border-radius:3px;display:flex;flex-direction:column-reverse;overflow:hidden;background:#f8fafc}.llm-chart-success{background:#22c55e}.llm-chart-failed{background:#ef4444}.llm-chart-total{font-size:.62rem;color:#64748b;line-height:1}.layout-footer{flex-shrink:0;margin-top:auto;padding:10px 4px 4px;text-align:center;border-top:1px solid #e5e7eb}.layout-footer-text{margin:0;font-size:.75rem;line-height:1.35;color:#6b7280}.layout-footer--auth{margin-top:1.5rem;padding-top:1rem;border-top:0}.log-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;margin:0;padding:0;border:0;background:#0f172a59;cursor:pointer}.hint-popup-backdrop{z-index:215}.hint-popup{position:fixed;z-index:216;left:50%;top:50%;transform:translate(-50%,-50%);width:min(400px,calc(100vw - 28px));padding:16px 18px 14px;box-sizing:border-box;background:var(--bg-surface);border-radius:var(--radius-lg);border:1px solid var(--border-strong);box-shadow:var(--shadow-md)}.hint-popup h3{margin:0 0 10px;font-size:1.05rem;font-weight:700;color:var(--text-main);line-height:1.25}.hint-popup-text{margin:0 0 14px;font-size:.9rem;line-height:1.45;color:var(--text-main)}.hint-popup-actions{display:flex;justify-content:flex-end;gap:8px}button.hint-popup-btn-primary{padding:8px 16px;font-size:.88rem}button.hint-popup-btn-secondary{padding:8px 16px;font-size:.88rem;background:transparent;color:var(--text-main);border:1px solid var(--border-strong);border-radius:var(--radius-md, 8px)}button.hint-popup-btn-secondary:hover:not(:disabled){background:color-mix(in srgb,var(--bg-muted, #f3f4f6) 85%,transparent)}button.hint-popup-btn-secondary:disabled{opacity:.55;cursor:not-allowed}.log-drawer{position:fixed;right:12px;bottom:12px;z-index:201;width:min(560px,calc(100vw - 24px));max-height:min(58vh,560px);display:flex;flex-direction:column;background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:0 12px 40px #0000002e;border:1px solid var(--border);padding:12px;box-sizing:border-box}.log-drawer--wide{width:min(720px,calc(100vw - 24px));max-height:min(70vh,640px)}.log-drawer-meta{margin:0 0 6px;font-size:.8rem;color:#374151;font-weight:500}.log-drawer-hint--tight{margin:0 0 10px;font-size:.72rem;line-height:1.35;color:#6b7280}.log-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-shrink:0}.log-toolbar--dates{flex-wrap:wrap;align-items:flex-end;gap:8px 12px}.log-date-label{font-size:.78rem;color:#64748b;width:100%;margin:0}@media (min-width: 520px){.log-date-label{width:auto;margin-right:4px}}.log-date-field{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:#475569}.log-date-field input[type=date]{padding:4px 8px;border-radius:6px;border:1px solid #d1d5db;font-size:.8rem;font-family:inherit}.btn-log-apply{padding:6px 12px;border-radius:6px;border:1px solid #2563eb;background:#2563eb;color:#fff;font-size:.78rem;cursor:pointer}.btn-log-apply:hover:not(:disabled){background:#1d4ed8}.btn-log-apply:disabled{opacity:.5;cursor:not-allowed}.btn-log-export{padding:6px 12px;border-radius:6px;border:1px solid #cbd5e1;background:#f8fafc;color:#334155;font-size:.78rem;cursor:pointer}.btn-log-export:hover:not(:disabled){background:#e2e8f0}.btn-log-export:disabled{opacity:.5;cursor:not-allowed}.log-filter-label{display:inline-flex;align-items:center;gap:8px;font-size:.8rem;color:#4b5563}.log-filter-select{padding:4px 8px;border-radius:6px;border:1px solid #d1d5db;font-size:.8rem;background:#fff}.log-list--table{padding:0;border:none;overflow-x:auto}.log-table{width:100%;border-collapse:collapse;font-size:.8rem}.log-table th{text-align:left;padding:6px 8px;background:#f1f5f9;color:#475569;font-weight:600;border-bottom:1px solid #e2e8f0;white-space:nowrap}.log-table td{padding:8px;vertical-align:top;border-bottom:1px solid #eef2f7}.log-table-col-actions{width:1%;white-space:nowrap}.log-table-time{white-space:nowrap;color:#64748b;font-variant-numeric:tabular-nums}.log-table-chat{min-width:120px;max-width:200px}.log-table-chat-title{display:block;font-weight:500;color:#1e293b;line-height:1.3}.log-table-chat-id{display:block;margin-top:2px;font-size:.72rem;color:#94a3b8}.log-table-summary{color:#334155;line-height:1.35;max-width:280px}.log-table-row--sent td:not(.log-table-time){color:inherit}.log-table-row--failed .log-table-summary{color:#991b1b}.log-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:600}.log-badge--ok{background:#e6f4ea;color:#166534}.log-badge--err{background:#fde8e8;color:#991b1b}.btn-log-details{background:#f1f5f9;color:#334155;border:1px solid #cbd5e1;border-radius:6px;padding:4px 8px;font-size:.72rem;cursor:pointer}.btn-log-details:hover{background:#e2e8f0}.log-table-row-details td{padding:0 8px 10px;border-bottom:1px solid #eef2f7;background:#fafafa}.log-error-pre{margin:0;padding:8px 10px;font-size:.72rem;line-height:1.4;white-space:pre-wrap;word-break:break-word;color:#475569;border:1px solid #e2e8f0;border-radius:6px;background:#fff;max-height:180px;overflow-y:auto}.log-table--publications .log-table-summary{max-width:none}.log-table-col-links{min-width:140px}.log-pub-links{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}.log-pub-links-sep{color:#94a3b8;-webkit-user-select:none;user-select:none}.btn-link-inline{margin:0;padding:0;border:0;background:none;color:#2563eb;font-size:inherit;font-family:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.btn-link-inline:hover{color:#1d4ed8}.btn-link-inline:disabled{color:#94a3b8;cursor:not-allowed;text-decoration:none}.log-pub-stat{font-size:.8rem}.log-pub-stat--warn{color:#b45309}.log-table-row--publication.log-table-row--has-fail{background:#fffbeb}.publication-modal-backdrop{z-index:220}.publication-detail-modal{position:fixed;z-index:221;left:50%;top:50%;transform:translate(-50%,-50%);width:min(520px,calc(100vw - 24px));max-height:min(78vh,640px);display:flex;flex-direction:column;background:#fff;border-radius:12px;box-shadow:0 16px 48px #0003;border:1px solid #e5e7eb;box-sizing:border-box}.publication-detail-modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid #e5e7eb}.publication-detail-modal__header h3{margin:0;font-size:1rem;font-weight:600;color:#0f172a;line-height:1.35}.publication-detail-modal__body{padding:12px 14px;overflow-y:auto;flex:1;min-height:0}.publication-detail-modal__footer{padding:10px 14px 14px;border-top:1px solid #e5e7eb}.publication-modal-section{margin-bottom:1rem}.publication-modal-section:last-child{margin-bottom:0}.publication-modal-section h4{margin:0 0 8px;font-size:.85rem;font-weight:600;color:#475569}.publication-chat-list{margin:0;padding:0;list-style:none;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.publication-chat-list__item{padding:8px 10px;border-bottom:1px solid #f1f5f9;font-size:.8rem}.publication-chat-list__item:last-child{border-bottom:0}.publication-chat-list__item.is-failed{background:#fff7ed}.publication-chat-list__row{display:flex;align-items:center;justify-content:space-between;gap:8px}.publication-chat-list__name{font-weight:500;color:#1e293b}.publication-chat-list__id{display:block;margin-top:4px;font-size:.72rem;color:#94a3b8}.publication-modal-pre{margin:0;padding:10px 12px;font-size:.78rem;line-height:1.45;white-space:pre-wrap;word-break:break-word;color:#334155;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;max-height:220px;overflow-y:auto}.publication-error-block{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #f1f5f9}.publication-error-block:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}.publication-error-summary{margin:4px 0 6px;font-size:.8rem;color:#991b1b}.log-drawer-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.log-drawer-header h3{margin:0;font-size:1rem}.btn-close-drawer{background:#f8fafc;color:#374151;border:0;border-radius:999px;padding:6px 12px;font-size:.85rem;cursor:pointer}.btn-close-drawer:hover{background:#e5e7eb}.log-drawer .log-list{flex:1;min-height:0;max-height:min(46vh,420px);overflow-y:auto}.log-drawer.profile-drawer{max-height:min(78vh,640px)}.profile-form{display:flex;flex-direction:column;gap:10px;min-height:0;flex:1}.profile-form-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding-right:4px}.profile-readonly{margin:0;font-size:.85rem;color:#374151}.profile-meta{margin:-4px 0 4px;font-size:.75rem;color:#6b7280}.profile-org-operator-hint{margin:-2px 0 6px;font-size:.8rem;line-height:1.4;color:#4b5563}.profile-section-label{margin:8px 0 2px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#6b7280}.profile-field--locked input[disabled]{background:#f3f4f6;color:#374151;cursor:not-allowed;opacity:1}.profile-email-block,.profile-email-actions{display:flex;flex-direction:column;gap:8px}.profile-email-status{margin:0;font-size:.8rem;line-height:1.35}.profile-email-status--ok{color:#047857}.profile-email-status--pending{color:#92400e}button.btn-verify-email{align-self:flex-start;background:#fff;color:#1d4ed8;border:1px solid #93c5fd}button.btn-verify-email:hover:not(:disabled){background:#eff6ff}button.btn-verify-email:disabled{opacity:.6;cursor:not-allowed}.profile-mock-verify{margin-top:4px;padding:10px;background:#f8fafc;border:1px dashed #94a3b8;border-radius:8px}.profile-mock-verify-title{margin:0 0 8px;font-size:.8rem;color:#475569;line-height:1.35}.profile-mock-verify-row{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}.profile-mock-verify-input{flex:1;min-width:0;font-size:.75rem;padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.profile-field{display:flex;flex-direction:column;gap:4px}.profile-field span{font-size:.8rem;font-weight:500;color:#4b5563}.profile-field input{width:100%;border:1px solid #d1d5db;border-radius:6px;padding:8px;font-size:.9rem;box-sizing:border-box}.profile-form-actions{flex-shrink:0;padding-top:8px;border-top:1px solid #e5e7eb}.profile-form-actions button{width:100%}.profile-password-block{display:flex;flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb;flex-shrink:0}.profile-password-heading{margin:0;font-size:.95rem;color:#1f2937}.profile-password-hint{margin:0;font-size:.78rem;color:#6b7280;line-height:1.35}.log-drawer.users-drawer{max-height:min(78vh,640px)}.users-drawer-hint{margin:0 0 10px;font-size:.8rem;color:#6b7280;line-height:1.35}.users-add-form{display:flex;flex-direction:column;gap:10px;flex-shrink:0;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #e5e7eb}.users-add-row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.users-add-field{flex:1 1 140px;min-width:0}.password-field-combo{display:flex;flex-direction:column;gap:8px}.password-input-wrap{display:flex;gap:8px;align-items:stretch}.password-input-wrap input{flex:1;min-width:0;border:1px solid #d1d5db;border-radius:6px;padding:8px;font-size:.9rem;box-sizing:border-box}.password-input-actions{display:flex;flex-wrap:wrap;gap:8px}button.btn-password-visibility{flex-shrink:0;white-space:nowrap;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;font-size:.8rem;padding:6px 10px}button.btn-password-visibility:hover:not(:disabled){background:#e5e7eb}button.btn-password-visibility:disabled{opacity:.6;cursor:not-allowed}button.btn-gen-password{flex-shrink:0;white-space:nowrap;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;font-size:.8rem;padding:6px 10px}button.btn-gen-password:hover:not(:disabled){background:#e5e7eb}button.btn-gen-password:disabled{opacity:.6;cursor:not-allowed}.users-add-role select{width:100%;border:1px solid #d1d5db;border-radius:6px;padding:8px;font-size:.9rem;background:#fff;box-sizing:border-box}.users-add-submit{align-self:flex-start}.users-list-wrap{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px}.users-list-label{font-size:.8rem;font-weight:600;color:#4b5563;flex-shrink:0}.users-list{flex:1;min-height:0;max-height:min(36vh,320px);overflow-y:auto;display:flex;flex-direction:column;gap:6px}.users-list-item{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:10px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb;font-size:.9rem}.users-list-item--blocked{background:#fef2f2;border-color:#fecaca}.users-list-item-main{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.users-list-status{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:999px}.users-list-status--ok{background:#d1fae5;color:#065f46}.users-list-status--blocked{background:#fee2e2;color:#991b1b}.users-list-self-note{margin:0;font-size:.78rem;color:#6b7280}.users-list-item-actions{display:flex;flex-direction:column;gap:8px;padding-top:4px;border-top:1px dashed #e5e7eb}.users-temp-password-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.users-temp-password-row input{flex:1 1 140px;min-width:0;border:1px solid #d1d5db;border-radius:6px;padding:6px 8px;font-size:.85rem}button.btn-user-block{align-self:flex-start;background:#fff;color:#b45309;border:1px solid #fdba74;border-radius:6px;padding:6px 12px;font-size:.8rem;cursor:pointer}button.btn-user-block:hover:not(:disabled){background:#fffbeb}button.btn-user-set-password{background:#eff6ff;color:#1d4ed8;border:1px solid #93c5fd;border-radius:6px;padding:6px 12px;font-size:.8rem;cursor:pointer}button.btn-user-set-password:hover:not(:disabled){background:#dbeafe}.users-list-login{font-weight:500;color:#111827;word-break:break-all}.users-list-role{flex-shrink:0;font-size:.8rem;color:#6b7280}.panels{display:grid;grid-template-columns:1.1fr 1fr 1fr;grid-template-rows:minmax(280px,1fr);gap:12px;flex:1;min-height:0;align-items:stretch}.panel{background:#fff;border-radius:var(--radius-lg);border:1px solid var(--border-strong);box-shadow:var(--shadow-sm);transition:box-shadow .15s ease;padding:10px;display:flex;flex-direction:column;gap:8px;min-width:0;min-height:0}.panel:hover{box-shadow:0 8px 20px #0000000f}.panel h3{font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;color:#374151}.panel.chats{min-height:0;overflow:visible}.chats-toolbar{flex-shrink:0}.chats-toolbar h3{margin:0 0 8px;font-size:1.05rem}.chats-filters{flex-shrink:0;display:flex;flex-direction:column;gap:8px}.chat-list-label{flex-shrink:0;font-size:.8rem;font-weight:600;color:#4b5563;margin:4px 0 0}.chats-footer{flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding-top:4px;border-top:1px solid #e5e7eb}.chats-selected{margin:0;font-size:.9rem}.panel textarea,.panel input:not([type=checkbox]):not([type=radio]){width:100%;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:9px 10px;color:var(--text-main);background:#fff;transition:border-color .15s ease,box-shadow .15s ease}.panel textarea:focus,.panel input:not([type=checkbox]):not([type=radio]):focus,.profile-field input:focus,.auth-form input:focus,.users-temp-password-row input:focus{border-color:#7aa2f7;box-shadow:0 0 0 3px #3b82f629;outline:none}.panel input[type=checkbox],.panel input[type=radio]{width:auto;min-width:1rem;flex-shrink:0;margin:0;accent-color:#2563eb}.panel textarea{min-height:260px;resize:vertical}.send-email-gate{margin:0;font-size:.8rem;color:#b45309;line-height:1.35}.schedule-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;font-size:.88rem;color:var(--text-main)}.schedule-checkbox input{margin:0;accent-color:var(--primary)}.schedule-datetime{flex-direction:column;align-items:stretch}.schedule-datetime-label{font-weight:600;font-size:.82rem;color:var(--text-muted)}.schedule-datetime input[type=datetime-local]{width:100%;max-width:280px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 10px;font-size:.9rem;color:var(--text-main);background:#fff}.schedule-datetime-hint{font-size:.78rem;color:var(--text-muted)}.attachment-row{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0 .5rem;padding:.75rem;border:1px solid var(--border);border-radius:8px;background:#ffffff05}.attachment-upload-label{display:inline-flex;align-items:center;cursor:pointer;width:fit-content}.attachment-file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.attachment-upload-btn{display:inline-block;padding:.45rem .85rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);font-size:.9rem}.attachment-upload-label:hover .attachment-upload-btn{border-color:var(--accent)}.attachment-hint,.attachment-schedule-note{margin:0;font-size:.82rem;color:var(--text-muted)}.attachment-pending{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.attachment-pending-name{font-size:.88rem;word-break:break-all}button.btn-clear-attachment{padding:.25rem .6rem;font-size:.82rem;border:1px solid var(--border);background:transparent}button.btn-clear-attachment:hover:not(:disabled){border-color:var(--accent)}.publication-attachment-name{margin:.5rem 0 0;font-size:.9rem;color:var(--text-muted)}.scheduled-jobs{margin-top:10px;padding:10px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-surface-soft)}.scheduled-jobs-title{margin:0 0 8px;font-size:.82rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.scheduled-jobs-empty{margin:0;font-size:.84rem;line-height:1.45;color:var(--text-main)}.scheduled-jobs-list{margin:0;padding-left:0;list-style:none}.scheduled-jobs-item{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--border)}.scheduled-jobs-item:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.scheduled-jobs-item-main{flex:1;min-width:0}.scheduled-jobs-item-row{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px}.scheduled-jobs-meta{flex:1;min-width:0;font-size:.88rem}.scheduled-jobs-preview{margin-top:4px;font-size:.78rem;line-height:1.35;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}button.btn-cancel-schedule{padding:4px 10px;font-size:.78rem;background:#fff;color:var(--text-main);border:1px solid var(--border-strong);box-shadow:none}button.btn-cancel-schedule:hover:not(:disabled){background:#f3f4f6}.button-row{display:flex;gap:8px}button{border:0;border-radius:6px;padding:8px 12px;background:var(--primary);color:#fff;cursor:pointer;font-weight:600;transition:transform .04s ease,background-color .15s ease,box-shadow .15s ease;box-shadow:0 1px 2px #00000014}button:hover:not(:disabled){background:var(--primary-hover)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.6;cursor:not-allowed}.chat-list{flex:0 0 auto;width:100%;height:clamp(200px,28vh,420px);min-height:200px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;border:1px solid #ccd6e2;border-radius:var(--radius-md);padding:8px 10px;background:#f9fbfc;text-align:left}.chat-list-empty{margin:0;padding:12px 8px;font-size:.9rem;color:#6b7280;text-align:center}.log-list{overflow-y:auto;border:1px solid #e5e7eb;border-radius:6px;padding:8px}.chat-row-wrap{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:5px 0;width:100%}.chat-row-wrap--editing{flex-direction:column;align-items:stretch}.chat-row-admin-actions{display:flex;flex-shrink:0;align-items:flex-start;gap:6px}button.btn-chat-edit{flex-shrink:0;padding:4px 8px;font-size:.72rem;line-height:1.2;background:#fff;color:#1d4ed8;border:1px solid #93c5fd;border-radius:6px;cursor:pointer;white-space:nowrap}button.btn-chat-edit:hover:not(:disabled){background:#eff6ff}button.btn-chat-edit:disabled{opacity:.6;cursor:not-allowed}.chat-row--edit{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}.chat-title-edit-input{flex:1 1 160px;min-width:0;border:1px solid #2563eb;border-radius:6px;padding:6px 8px;font-size:.9rem}.chat-row-edit-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}button.btn-chat-edit-save{padding:6px 10px;font-size:.78rem;background:#2563eb;color:#fff;border:0;border-radius:6px;cursor:pointer}button.btn-chat-edit-save:hover:not(:disabled){background:#1d4ed8}button.btn-chat-edit-cancel{padding:6px 10px;font-size:.78rem;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:6px;cursor:pointer}button.btn-chat-edit-cancel:hover:not(:disabled){background:#e5e7eb}.chat-row{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;gap:8px;padding:6px 8px;margin:0;flex:1;min-width:0;text-align:left;cursor:pointer;border-radius:4px}.chat-row:hover{background:#eaf2f8}.chat-row span{flex:1;min-width:0;line-height:1.35;text-align:left}.chat-inactive{color:#6b7280}.chat-add-form{display:flex;flex-direction:column;gap:6px;padding:10px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:4px}.chat-add-title{font-size:.85rem;font-weight:600;color:#374151}.checkbox-inline{display:flex;align-items:center;gap:8px;font-size:.9rem;cursor:pointer}.btn-small{flex-shrink:0;padding:2px 8px;font-size:1rem;line-height:1.2;min-width:28px}.btn-danger{background:#dc2626}.btn-danger:hover:not(:disabled){background:#b91c1c}.log-item{border-bottom:1px solid #eef2f7;padding:6px 0}.log-item.sent{color:#166534}.log-item.failed{color:#991b1b}.auth-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;min-height:100dvh;box-sizing:border-box;padding-bottom:8px}.auth-form{width:320px;display:flex;flex-direction:column;gap:10px;background:var(--bg-surface);border:1px solid var(--border);box-shadow:var(--shadow-md);padding:16px;border-radius:var(--radius-lg)}.auth-container .auth-hint{max-width:360px;margin:0 0 12px;font-size:.85rem;color:#4b5563;line-height:1.4;text-align:center}.auth-info{margin:0;font-size:.82rem;color:#374151;line-height:1.35}.auth-success{margin:0;font-size:.85rem;color:#047857;line-height:1.35}.btn-auth-secondary{background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:6px;padding:8px 12px;font-size:.9rem;cursor:pointer}.btn-auth-secondary:hover:not(:disabled){background:#e5e7eb}.btn-auth-link{background:none;border:none;padding:4px 0;font-size:.85rem;color:#2563eb;cursor:pointer;text-align:center;text-decoration:underline}.btn-auth-link:hover{color:#1d4ed8}.error{color:#b91c1c}@media (max-width: 768px){.layout{gap:8px;padding-top:max(8px,env(safe-area-inset-top,0px))}.header{flex-direction:column;align-items:stretch;gap:10px}.header-brand h2{font-size:1.05rem}.header-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:stretch}.header-actions .btn-journal{justify-content:center;font-size:.8rem;padding:8px 6px;min-width:0}.header-actions .header-user{grid-column:1 / -1;text-align:center;font-size:.78rem;line-height:1.3;word-break:break-word}.header-actions .btn-logout{grid-column:1 / -1;width:100%}.layout-info{font-size:.82rem;word-break:break-word}.llm-metrics-grid{grid-template-columns:1fr}.llm-chart-bars{gap:2px}.panels{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.panel{flex:0 0 auto;min-height:0;min-width:0}.panel.chats{flex:0 1 auto;max-height:none}.panel textarea{min-height:140px}.chat-list{height:clamp(160px,32vh,320px);min-height:140px}.button-row{flex-wrap:wrap}.button-row button{flex:1 1 auto;min-width:0}.log-drawer,.log-drawer--wide{left:max(8px,env(safe-area-inset-left,0px));right:max(8px,env(safe-area-inset-right,0px));bottom:max(8px,env(safe-area-inset-bottom,0px));width:auto;max-width:none;max-height:min(88vh,100dvh - 24px);padding:10px}.log-drawer.profile-drawer,.log-drawer.users-drawer{max-height:min(90vh,100dvh - 16px)}.log-drawer .log-list{max-height:min(40vh,360px)}.log-toolbar,.log-toolbar--dates{flex-direction:column;align-items:stretch}.log-table-summary,.log-table-chat{max-width:none}.panel textarea,.panel input:not([type=checkbox]):not([type=radio]),.profile-field input,.auth-form input,.users-temp-password-row input,.log-date-field input[type=date]{font-size:16px}}@media (max-width: 480px){.header-actions{grid-template-columns:1fr}.header-actions .btn-journal{width:100%}.auth-form{width:100%;max-width:none;margin:0;box-sizing:border-box}.auth-container{padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px));padding-bottom:max(12px,env(safe-area-inset-bottom,0px));box-sizing:border-box;min-height:100dvh}.auth-container h1{font-size:1.15rem;text-align:center;padding:0 4px}}.portal-root{--portal-blue: #2563eb;--portal-blue-hover: #1d4ed8;--portal-navy: #0f172a;--portal-bg: #f8fafc;--portal-gray: #e2e8f0;--portal-gray-dark: #94a3b8;--portal-text: #1e293b;--portal-text-muted: #64748b;--portal-success: #16a34a;--portal-success-bg: #f0fdf4;--portal-warn: #d97706;--portal-warn-bg: #fffbeb;--portal-error: #dc2626;--portal-error-bg: #fef2f2;--portal-white: #ffffff;--portal-shadow: 0 1px 3px rgba(15, 23, 42, .06), 0 4px 12px rgba(15, 23, 42, .04);--portal-shadow-hover: 0 4px 16px rgba(15, 23, 42, .08);--portal-radius: 10px;--portal-radius-sm: 6px;--portal-sidebar-w: 248px;--portal-sidebar-w-collapsed: 64px;--portal-topbar-h: 64px;--portal-status-h: 40px;--portal-transition: .3s ease;--portal-font: Inter, system-ui, sans-serif}.portal-root,.portal-auth{font-family:var(--portal-font);color:var(--portal-text)}.portal-auth{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--portal-bg);padding:24px}.portal-auth__panel{width:100%;max-width:420px;background:var(--portal-white);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);padding:32px}.portal-auth__brand{display:flex;gap:14px;align-items:flex-start;margin-bottom:28px}.portal-auth__brand h1{margin:0;font-size:1.25rem;font-weight:700;color:var(--portal-navy)}.portal-auth__brand p{margin:4px 0 0;font-size:.875rem;color:var(--portal-text-muted)}.portal-auth__logo{font-size:1.75rem;line-height:1}.portal-auth__form{display:flex;flex-direction:column;gap:16px}.portal-auth__legacy{margin:20px 0 0;font-size:.8125rem;color:var(--portal-text-muted);text-align:center}.portal-auth__legacy a{color:var(--portal-blue);text-decoration:none}.portal-auth__footer{margin-top:24px;font-size:.75rem;color:var(--portal-text-muted)}.portal-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;background:var(--portal-bg)}.portal-shell__body{display:flex;flex:1;min-height:0}.portal-shell__main{flex:1;min-width:0;overflow:auto;padding:24px}@media (min-width: 1440px){.portal-shell__main{padding:28px 32px}}.portal-topbar{position:sticky;top:0;z-index:100;height:var(--portal-topbar-h);display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--portal-white);border-bottom:1px solid var(--portal-gray);box-shadow:0 1px #0f172a0a;flex-wrap:wrap}@media (min-width: 1280px){.portal-topbar{flex-wrap:nowrap;gap:16px;padding:0 20px}}.portal-topbar__brand{display:flex;flex-direction:column;min-width:200px}.portal-topbar__brand-title{font-size:.9375rem;font-weight:700;color:var(--portal-navy);white-space:nowrap}.portal-topbar__brand-sub{font-size:.6875rem;color:var(--portal-text-muted)}.portal-topbar__search{flex:1;min-width:160px;max-width:360px}.portal-topbar__search input{width:100%;height:38px;padding:0 14px 0 36px;border:1px solid var(--portal-gray);border-radius:var(--portal-radius-sm);background:var(--portal-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85zm-5.242 1.156a5 5 0 1 1 0-10 5 5 0 0 1 0 10z'/%3E%3C/svg%3E") 12px center no-repeat;font-size:.875rem;color:var(--portal-text)}.portal-topbar__search input:focus{outline:2px solid rgba(37,99,235,.25);border-color:var(--portal-blue);background-color:var(--portal-white)}.portal-topbar__actions{display:flex;align-items:center;gap:8px;margin-left:auto}.portal-topbar__stat{display:none;font-size:.75rem;color:var(--portal-text-muted);padding:6px 10px;background:var(--portal-bg);border-radius:var(--portal-radius-sm)}@media (min-width: 1280px){.portal-topbar__stat{display:block}}.portal-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:none;border-radius:var(--portal-radius-sm);background:transparent;color:var(--portal-text-muted);cursor:pointer;transition:background .15s,color .15s}.portal-icon-btn:hover{background:var(--portal-bg);color:var(--portal-navy)}.portal-topbar__user{display:flex;align-items:center;gap:8px;padding:4px 8px 4px 4px;border:none;border-radius:var(--portal-radius-sm);background:transparent;cursor:pointer;font-size:.8125rem;color:var(--portal-text)}.portal-topbar__user:hover{background:var(--portal-bg)}.portal-topbar__avatar{width:32px;height:32px;border-radius:50%;background:var(--portal-blue);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600}.portal-sidebar{width:var(--portal-sidebar-w);flex-shrink:0;background:var(--portal-navy);color:#cbd5e1;overflow-x:hidden;overflow-y:auto;display:none;transition:width var(--portal-transition)}.portal-sidebar--collapsed{width:var(--portal-sidebar-w-collapsed)}@media (min-width: 1024px){.portal-sidebar{display:flex;flex-direction:column}}.portal-sidebar__toolbar{padding:10px 10px 4px;flex-shrink:0}.portal-sidebar__toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--portal-radius-sm);background:#ffffff0f;color:#e2e8f0;cursor:pointer;transition:background var(--portal-transition),color var(--portal-transition)}.portal-sidebar__toggle:hover{background:#ffffff1f;color:#fff}.portal-sidebar__nav{padding:8px 10px 16px;flex:1}.portal-sidebar__group{margin-bottom:14px}.portal-sidebar__group-label{font-size:.5625rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#64748b;padding:0 10px 6px;white-space:nowrap;overflow:hidden}.portal-sidebar__link{display:flex;align-items:center;gap:8px;padding:7px 10px;margin-bottom:2px;border-radius:var(--portal-radius-sm);color:#cbd5e1;text-decoration:none;font-size:.8125rem;transition:background var(--portal-transition),color var(--portal-transition),border-color var(--portal-transition);border-left:3px solid transparent;position:relative}.portal-sidebar--collapsed .portal-sidebar__link{justify-content:center;padding:8px}.portal-sidebar__link svg{flex-shrink:0;opacity:.85;width:16px;height:16px}.portal-sidebar__link-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portal-sidebar__link:hover{background:#ffffff0f;color:#f1f5f9}.portal-sidebar__link.is-active{background:#2563eb2e;color:#fff;border-left-color:var(--portal-blue)}.portal-sidebar__link.is-active svg{opacity:1}.portal-mobile-nav{display:flex;gap:4px;overflow-x:auto;padding:8px 16px;background:var(--portal-navy);-webkit-overflow-scrolling:touch}@media (min-width: 1024px){.portal-mobile-nav{display:none}}.portal-mobile-nav a{flex-shrink:0;padding:8px 12px;border-radius:var(--portal-radius-sm);color:#cbd5e1;text-decoration:none;font-size:.8125rem;white-space:nowrap}.portal-mobile-nav a.is-active{background:var(--portal-blue);color:#fff}.portal-page-header{margin-bottom:24px}.portal-page-header h1{margin:0;font-size:1.375rem;font-weight:700;color:var(--portal-navy)}.portal-page-header p{margin:6px 0 0;font-size:.875rem;color:var(--portal-text-muted)}.portal-prototype-badge{display:inline-block;margin-left:10px;padding:2px 8px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--portal-warn);background:var(--portal-warn-bg);border-radius:4px;vertical-align:middle}.portal-card{background:var(--portal-white);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);padding:20px;transition:box-shadow .2s}.portal-card:hover{box-shadow:var(--portal-shadow-hover)}.portal-card__title{margin:0 0 12px;font-size:.9375rem;font-weight:600;color:var(--portal-navy)}.portal-stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:24px}@media (min-width: 1280px){.portal-stat-grid{grid-template-columns:repeat(5,1fr)}}@media (min-width: 1024px) and (max-width: 1279px){.portal-stat-grid{grid-template-columns:repeat(3,1fr)}}.portal-stat-card{background:var(--portal-white);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);padding:18px 20px;transition:transform .15s,box-shadow .15s}.portal-stat-card:hover{transform:translateY(-1px);box-shadow:var(--portal-shadow-hover)}.portal-stat-card__label{font-size:.75rem;color:var(--portal-text-muted);margin-bottom:6px}.portal-stat-card__value{font-size:1.5rem;font-weight:700;color:var(--portal-navy);line-height:1.2}.portal-stat-card__value--success{color:var(--portal-success)}.portal-grid-2{display:grid;gap:20px;margin-bottom:24px}@media (min-width: 1280px){.portal-grid-2{grid-template-columns:1fr 1fr}}.portal-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 16px;border:1px solid transparent;border-radius:var(--portal-radius-sm);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}.portal-btn:disabled{opacity:.55;cursor:not-allowed}.portal-btn--primary{background:var(--portal-blue);color:#fff}.portal-btn--primary:hover:not(:disabled){background:var(--portal-blue-hover)}.portal-btn--secondary{background:var(--portal-white);border-color:var(--portal-gray);color:var(--portal-text)}.portal-btn--secondary:hover:not(:disabled){border-color:var(--portal-gray-dark);background:var(--portal-bg)}.portal-btn--ghost{background:transparent;color:var(--portal-blue)}.portal-btn--block{width:100%}.portal-btn-row{display:flex;flex-wrap:wrap;gap:10px}.portal-field{display:flex;flex-direction:column;gap:6px}.portal-field span{font-size:.8125rem;font-weight:500;color:var(--portal-text)}.portal-field input,.portal-field textarea,.portal-field select{padding:10px 12px;border:1px solid var(--portal-gray);border-radius:var(--portal-radius-sm);font-size:.875rem;font-family:inherit;color:var(--portal-text);background:var(--portal-white)}.portal-field textarea{min-height:120px;resize:vertical;line-height:1.5}.portal-field input:focus,.portal-field textarea:focus,.portal-field select:focus{outline:2px solid rgba(37,99,235,.2);border-color:var(--portal-blue)}.portal-field--checkbox{flex-direction:row;align-items:center;gap:10px}.portal-field--checkbox input[type=checkbox]{width:18px;height:18px;margin:0;accent-color:var(--portal-blue)}.portal-field--checkbox span{font-weight:400}.portal-field-hint{margin:0;font-size:.75rem;color:var(--portal-text-muted);line-height:1.4}.portal-password-row{display:flex;gap:8px;align-items:stretch}.portal-password-row input{flex:1;min-width:0}.portal-password-row .portal-btn{flex-shrink:0;white-space:nowrap}.portal-table-wrap{overflow-x:auto;border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);background:var(--portal-white)}.portal-table{width:100%;border-collapse:collapse;font-size:.8125rem}.portal-table th{text-align:left;padding:12px 14px;font-weight:600;color:var(--portal-text-muted);background:var(--portal-bg);border-bottom:1px solid var(--portal-gray);white-space:nowrap}.portal-table td{padding:12px 14px;border-bottom:1px solid var(--portal-gray);vertical-align:middle}.portal-table tbody tr{cursor:pointer;transition:background .12s}.portal-table tbody tr:hover{background:#f1f5f9}.portal-table tbody tr:last-child td{border-bottom:none}.portal-badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;font-size:.6875rem;font-weight:600}.portal-badge--ok{background:var(--portal-success-bg);color:var(--portal-success)}.portal-badge--warn{background:var(--portal-warn-bg);color:var(--portal-warn)}.portal-badge--muted{background:var(--portal-bg);color:var(--portal-text-muted)}.portal-badge--error{background:var(--portal-error-bg);color:var(--portal-error)}.portal-alert{padding:10px 12px;border-radius:var(--portal-radius-sm);font-size:.8125rem}.portal-alert--error{background:var(--portal-error-bg);color:var(--portal-error)}.portal-alert--warn{background:var(--portal-warn-bg);color:var(--portal-warn)}.portal-chart{height:200px;display:flex;align-items:flex-end;gap:8px;padding-top:12px}.portal-chart__bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}.portal-chart__bar{width:100%;max-width:40px;background:linear-gradient(180deg,var(--portal-blue) 0%,#3b82f6 100%);border-radius:4px 4px 0 0;min-height:4px;transition:height .3s}.portal-chart__label{font-size:.6875rem;color:var(--portal-text-muted)}.portal-chart-tabs{display:flex;gap:4px;margin-bottom:16px}.portal-chart-tabs button{padding:6px 12px;border:1px solid var(--portal-gray);border-radius:var(--portal-radius-sm);background:var(--portal-white);font-size:.75rem;cursor:pointer;color:var(--portal-text-muted)}.portal-chart-tabs button.is-active{background:var(--portal-blue);border-color:var(--portal-blue);color:#fff}.portal-wizard-steps{display:flex;gap:0;margin-bottom:28px;overflow-x:auto}.portal-wizard-step{flex:1;min-width:120px;text-align:center;position:relative;padding-bottom:8px}.portal-wizard-step__num{width:28px;height:28px;margin:0 auto 6px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;background:var(--portal-gray);color:var(--portal-text-muted)}.portal-wizard-step.is-done .portal-wizard-step__num,.portal-wizard-step.is-active .portal-wizard-step__num{background:var(--portal-blue);color:#fff}.portal-wizard-step__label{font-size:.75rem;color:var(--portal-text-muted)}.portal-wizard-step.is-active .portal-wizard-step__label{color:var(--portal-navy);font-weight:600}.portal-wizard-summary{display:grid;gap:12px;padding:16px;background:var(--portal-bg);border-radius:var(--portal-radius-sm);margin-top:16px}.portal-wizard-summary dt{font-size:.75rem;color:var(--portal-text-muted)}.portal-wizard-summary dd{margin:0 0 8px;font-size:.875rem;font-weight:500}.portal-stack-card{display:flex;flex-direction:column;gap:0}.portal-stack-card__section{padding:20px;border-bottom:1px solid var(--portal-gray)}.portal-stack-card__section:last-child{border-bottom:none}.portal-radio-group{display:flex;gap:20px}.portal-radio-group label{display:flex;align-items:center;gap:8px;font-size:.875rem;cursor:pointer}.portal-bot-grid{display:grid;gap:16px;grid-template-columns:1fr}@media (min-width: 1024px){.portal-bot-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1440px){.portal-bot-grid{grid-template-columns:repeat(3,1fr)}}.portal-bot-card{background:var(--portal-white);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);padding:20px;transition:box-shadow .2s}.portal-bot-card:hover{box-shadow:var(--portal-shadow-hover)}.portal-bot-card h3{margin:0 0 12px;font-size:1rem;color:var(--portal-navy)}.portal-bot-card dl{margin:0;display:grid;gap:8px;font-size:.8125rem}.portal-bot-card dt{color:var(--portal-text-muted)}.portal-bot-card dd{margin:0;font-weight:500}.portal-split{display:grid;gap:20px}@media (min-width: 1280px){.portal-split{grid-template-columns:1fr 320px}}.portal-detail-panel{background:var(--portal-white);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);padding:20px;position:sticky;top:calc(var(--portal-topbar-h) + 16px)}.portal-quick-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}@media (min-width: 1024px){.portal-quick-actions{grid-template-columns:repeat(4,1fr)}}.portal-quick-action{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px 16px;background:var(--portal-white);border:1px solid var(--portal-gray);border-radius:var(--portal-radius);text-decoration:none;color:var(--portal-navy);font-size:.8125rem;font-weight:500;transition:border-color .15s,box-shadow .15s}.portal-quick-action:hover{border-color:var(--portal-blue);box-shadow:var(--portal-shadow)}.portal-quick-action svg{color:var(--portal-blue)}.portal-skeleton{background:linear-gradient(90deg,var(--portal-gray) 25%,#f1f5f9 50%,var(--portal-gray) 75%);background-size:200% 100%;animation:portal-shimmer 1.2s infinite;border-radius:var(--portal-radius-sm)}@keyframes portal-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.portal-toast-stack{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;gap:8px;max-width:360px}.portal-toast{padding:12px 16px;background:var(--portal-navy);color:#f1f5f9;border-radius:var(--portal-radius-sm);box-shadow:var(--portal-shadow-hover);font-size:.8125rem;animation:portal-toast-in .25s ease}.portal-toast--success{background:var(--portal-success)}@keyframes portal-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.portal-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;z-index:200}.portal-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:201;width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:var(--portal-white);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow-hover)}.portal-modal__header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--portal-gray)}.portal-modal__header h2{margin:0;font-size:1rem;color:var(--portal-navy)}.portal-modal__body{padding:20px}.portal-list-plain{margin:0;padding:0;list-style:none}.portal-list-plain li{padding:10px 0;border-bottom:1px solid var(--portal-gray);font-size:.8125rem}.portal-list-plain li:last-child{border-bottom:none}.portal-error-item{padding:12px;background:var(--portal-error-bg);border-radius:var(--portal-radius-sm);margin-bottom:8px;font-size:.8125rem}.portal-error-item strong{display:block;color:var(--portal-error);margin-bottom:4px}.portal-roles-grid{display:grid;gap:16px}@media (min-width: 1024px){.portal-roles-grid{grid-template-columns:repeat(3,1fr)}}.portal-role-card h3{margin:0 0 8px;font-size:.9375rem;color:var(--portal-navy)}.portal-role-card ul{margin:0;padding-left:18px;font-size:.8125rem;color:var(--portal-text-muted);line-height:1.6}.portal-empty{text-align:center;padding:32px;color:var(--portal-text-muted);font-size:.875rem}.portal-top-metrics{display:none;align-items:center;gap:8px;flex:1;justify-content:flex-end;min-width:0}@media (min-width: 1200px){.portal-top-metrics{display:flex}}.portal-top-metric{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;background:var(--portal-white);border:1px solid var(--portal-gray);border-radius:12px;min-width:0;transition:box-shadow var(--portal-transition),border-color var(--portal-transition)}.portal-top-metric:hover{border-color:#cbd5e1;box-shadow:var(--portal-shadow)}.portal-top-metric__icon{font-size:.875rem;flex-shrink:0}.portal-top-metric__body{display:flex;flex-direction:column;min-width:0}.portal-top-metric__label{font-size:.625rem;color:var(--portal-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portal-top-metric__value{font-size:.875rem;font-weight:700;color:var(--portal-navy);line-height:1.2}.portal-top-metrics-dropdown{display:block;position:relative}@media (min-width: 1200px){.portal-top-metrics-dropdown{display:none}}.portal-top-metrics-dropdown__btn{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 12px;border:1px solid var(--portal-gray);border-radius:12px;background:var(--portal-white);font-size:.8125rem;cursor:pointer;color:var(--portal-text)}.portal-top-metrics-dropdown__panel{position:absolute;top:calc(100% + 6px);right:0;z-index:120;min-width:240px;background:var(--portal-white);border:1px solid var(--portal-gray);border-radius:12px;box-shadow:var(--portal-shadow-hover);padding:8px;animation:portal-fade-in .2s ease}.portal-top-metrics-dropdown__row{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;font-size:.8125rem}.portal-status-bar{height:var(--portal-status-h);background:var(--portal-white);border-bottom:1px solid var(--portal-gray);flex-shrink:0}.portal-status-bar__inner{display:flex;align-items:center;gap:16px;height:100%;padding:0 20px;overflow-x:auto}.portal-status-pill{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;color:var(--portal-text-muted);white-space:nowrap}.portal-status-pill__dot{font-size:.625rem;line-height:1}.portal-status-pill--warn{color:var(--portal-warn)}.portal-status-pill--error{color:var(--portal-error)}.portal-smart-stepper{display:flex;margin-bottom:28px;gap:0}.portal-smart-stepper__item{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;min-width:72px;animation:portal-fade-in .3s ease}.portal-smart-stepper__node-wrap{display:flex;align-items:center;width:100%;justify-content:center;position:relative;margin-bottom:8px}.portal-smart-stepper__node{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;background:var(--portal-gray);color:var(--portal-text-muted);z-index:1;transition:all var(--portal-transition)}.portal-smart-stepper__line{position:absolute;left:calc(50% + 18px);width:calc(100% - 36px);height:2px;background:var(--portal-gray);transition:background var(--portal-transition)}.portal-smart-stepper__line--done{background:var(--portal-success)}.portal-smart-stepper__label{font-size:.75rem;color:var(--portal-text-muted);transition:color var(--portal-transition)}.portal-smart-stepper__item--active .portal-smart-stepper__node{width:40px;height:40px;background:var(--portal-blue);color:#fff;box-shadow:0 0 0 4px #2563eb26}.portal-smart-stepper__item--active .portal-smart-stepper__label{color:var(--portal-navy);font-weight:600}.portal-smart-stepper__item--completed .portal-smart-stepper__node{background:var(--portal-success);color:#fff}.portal-smart-stepper__item--completed .portal-smart-stepper__label{color:var(--portal-success)}.portal-compose-step1{display:grid;gap:16px}@media (min-width: 1100px){.portal-compose-step1{grid-template-columns:1fr 300px;align-items:start}}.portal-compose-step1__main{min-width:0}.portal-scenario-panel{background:var(--portal-white);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);padding:16px;width:100%}@media (min-width: 1100px){.portal-scenario-panel{width:300px}}.portal-scenario-panel__title{margin:0 0 12px;font-size:.875rem;font-weight:600;color:var(--portal-navy)}.portal-scenario-panel__subtitle{margin:16px 0 8px;font-size:.75rem;font-weight:600;color:var(--portal-text-muted);text-transform:uppercase;letter-spacing:.04em}.portal-scenario-grid{display:grid;gap:8px}.portal-scenario-card{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:1px solid var(--portal-gray);border-radius:var(--portal-radius-sm);background:var(--portal-bg);cursor:pointer;text-align:left;font-size:.8125rem;color:var(--portal-text);transition:border-color var(--portal-transition),background var(--portal-transition),transform .15s ease}.portal-scenario-card:hover{border-color:var(--portal-blue);background:#fff;transform:translateY(-1px)}.portal-scenario-card__icon{font-size:1rem;flex-shrink:0}.portal-scenario-recent{margin:0;padding:0;list-style:none}.portal-scenario-recent button{width:100%;padding:8px 0;border:none;background:none;text-align:left;font-size:.8125rem;color:var(--portal-blue);cursor:pointer}.portal-scenario-recent button:hover{text-decoration:underline}.portal-user-card{position:relative}.portal-user-card__trigger{display:flex;align-items:center;gap:8px;padding:4px 8px 4px 4px;border:1px solid transparent;border-radius:12px;background:transparent;cursor:pointer;transition:background var(--portal-transition),border-color var(--portal-transition);max-width:220px}.portal-user-card__trigger:hover{background:var(--portal-bg);border-color:var(--portal-gray)}.portal-user-card__avatar{width:36px;height:36px;border-radius:10px;background:var(--portal-blue);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.portal-user-card__text{display:flex;flex-direction:column;align-items:flex-start;min-width:0;text-align:left}.portal-user-card__org{font-size:.8125rem;font-weight:600;color:var(--portal-navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.portal-user-card__role{font-size:.6875rem;color:var(--portal-text-muted)}.portal-user-card__menu{position:absolute;top:calc(100% + 8px);right:0;z-index:150;min-width:240px;background:var(--portal-white);border:1px solid var(--portal-gray);border-radius:12px;box-shadow:var(--portal-shadow-hover);padding:8px;animation:portal-fade-in .2s ease}.portal-user-card__menu-header{padding:8px 10px 10px;border-bottom:1px solid var(--portal-gray);margin-bottom:4px}.portal-user-card__menu-header strong{display:block;font-size:.875rem;color:var(--portal-navy)}.portal-user-card__menu-header span{font-size:.75rem;color:var(--portal-text-muted)}.portal-user-card__tenant{display:flex;flex-direction:column;gap:4px;padding:8px 10px;font-size:.75rem}.portal-user-card__tenant select{padding:6px 8px;border:1px solid var(--portal-gray);border-radius:6px;font-size:.8125rem}.portal-user-card__menu-item{display:block;width:100%;padding:9px 10px;border:none;border-radius:8px;background:none;text-align:left;font-size:.8125rem;color:var(--portal-text);text-decoration:none;cursor:pointer;transition:background var(--portal-transition)}.portal-user-card__menu-item:hover{background:var(--portal-bg)}.portal-user-card__menu-item--danger{color:var(--portal-error)}.portal-animated-card{transition:box-shadow var(--portal-transition),transform .2s ease,border-color var(--portal-transition)}.portal-animated-card:hover{box-shadow:var(--portal-shadow-hover)}.portal-page-enter{animation:portal-fade-in .35s ease}@keyframes portal-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.portal-btn{transition:background var(--portal-transition),border-color var(--portal-transition),box-shadow .2s ease,transform .15s ease}.portal-btn--primary:hover:not(:disabled){box-shadow:0 2px 8px #2563eb40}.portal-btn--primary:active:not(:disabled){transform:translateY(1px)}.portal-ai-loading{margin-top:12px;padding:12px;background:var(--portal-bg);border-radius:var(--portal-radius-sm)}.portal-ai-loading__message{font-size:.8125rem;color:var(--portal-blue);margin-bottom:10px}.portal-ai-loading__done{font-size:.8125rem;color:var(--portal-success);animation:portal-fade-in .3s ease}.portal-compose-preview{white-space:pre-wrap;font-size:.875rem;line-height:1.5;margin:16px 0;padding:12px;background:var(--portal-bg);border-radius:var(--portal-radius-sm)}.exec-page-enter,.exec-dashboard{animation:portal-fade-in .35s ease}.exec-kpi-row{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:20px}@media (min-width: 1024px){.exec-kpi-row{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1440px){.exec-kpi-row{grid-template-columns:repeat(6,1fr)}}.exec-kpi-card{background:var(--portal-white);border:1px solid var(--portal-gray);border-radius:12px;padding:14px 16px;min-height:72px;transition:box-shadow var(--portal-transition),transform .2s ease}.exec-kpi-card:hover{box-shadow:var(--portal-shadow-hover);transform:translateY(-1px)}.exec-kpi-card--green{border-color:#bbf7d0;background:linear-gradient(180deg,#fff,#f0fdf4)}.exec-kpi-card--yellow{border-color:#fde68a;background:linear-gradient(180deg,#fff,#fffbeb)}.exec-kpi-card--red{border-color:#fecaca;background:linear-gradient(180deg,#fff,#fef2f2)}.exec-kpi-card__value{font-size:1.375rem;font-weight:700;color:var(--portal-navy);line-height:1.2}.exec-kpi-card__label{margin-top:4px;font-size:.6875rem;color:var(--portal-text-muted)}.exec-dashboard-grid{display:grid;gap:20px}@media (min-width: 1280px){.exec-dashboard-grid{grid-template-columns:1fr 280px;align-items:start}}.exec-dashboard-main{display:flex;flex-direction:column;gap:20px;min-width:0}.exec-dashboard-aside{position:sticky;top:calc(var(--portal-topbar-h) + var(--portal-status-h) + 16px)}.exec-block{scroll-margin-top:80px}.exec-block--wide{grid-column:1 / -1}.exec-muted{color:var(--portal-text-muted);font-size:.8125rem}.exec-coverage-stats{display:flex;flex-wrap:wrap;gap:24px;margin-bottom:12px}.exec-coverage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin-bottom:12px}.exec-coverage-stat strong{display:block;font-size:1.25rem;color:var(--portal-navy)}.exec-sync-note{margin:0 0 8px}.exec-cov-cell--green{color:var(--portal-success);font-weight:600}.exec-cov-cell--yellow{color:var(--portal-warn);font-weight:600}.exec-cov-cell--red{color:var(--portal-error);font-weight:600}.exec-filters--reports{margin:12px 0}.exec-send-row{align-items:center;gap:8px;margin-top:12px}.exec-report-history{margin-top:20px;border-top:1px solid var(--portal-border);padding-top:16px}.exec-report-history ul{list-style:none;margin:8px 0 0;padding:0}.exec-report-history li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--portal-border);font-size:.875rem}.exec-coverage-stats strong{display:block;font-size:1.125rem;color:var(--portal-navy)}.exec-progress{display:flex;align-items:center;gap:12px;height:28px;background:var(--portal-bg);border-radius:999px;overflow:hidden;padding:0 4px;margin-bottom:12px;position:relative}.exec-progress__bar{position:absolute;left:0;top:0;bottom:0;border-radius:999px;transition:width .4s ease}.exec-progress--green .exec-progress__bar{background:var(--portal-success)}.exec-progress--yellow .exec-progress__bar{background:var(--portal-warn)}.exec-progress--red .exec-progress__bar{background:var(--portal-error)}.exec-progress span{position:relative;z-index:1;margin-left:auto;padding-right:12px;font-size:.8125rem;font-weight:600}.exec-coverage-meta{display:flex;flex-wrap:wrap;gap:16px;font-size:.8125rem;color:var(--portal-text-muted);margin-bottom:16px}.exec-chart-wrap{margin-top:8px}.exec-chart-wrap--tall{min-height:280px}.exec-rate--green{color:var(--portal-success);font-weight:600}.exec-rate--yellow{color:var(--portal-warn);font-weight:600}.exec-rate--red{color:var(--portal-error);font-weight:600}.exec-filters{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.exec-filter-field{min-width:160px}.exec-quality-index{display:flex;align-items:baseline;gap:4px;margin-bottom:4px}.exec-quality-index__value{font-size:2.5rem;font-weight:700;color:var(--portal-navy)}.exec-quality-index__max{font-size:1rem;color:var(--portal-text-muted)}.exec-quality-label{font-size:1rem;font-weight:500;margin:0 0 8px}.exec-formula{margin:0 0 16px;font-size:.75rem}.exec-subtitle{margin:0 0 8px;font-size:.875rem;font-weight:600}.exec-error-list{margin:0;padding:0;list-style:none}.exec-error-list li{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--portal-gray);font-size:.8125rem}.exec-plan-card{position:sticky;top:calc(var(--portal-topbar-h) + var(--portal-status-h) + 16px)}.exec-plan-list{margin:0 0 16px;display:grid;gap:12px}.exec-plan-list dt{font-size:.75rem;color:var(--portal-text-muted)}.exec-plan-list dd{margin:0;font-size:1rem;font-weight:600;color:var(--portal-navy)}.exec-history-item{padding:10px 0;border-bottom:1px solid var(--portal-gray)}.exec-history-item p{margin:4px 0;font-size:.8125rem}.exec-loading{display:grid;gap:12px;margin-bottom:20px}.exec-modal{max-width:520px}@media (max-width: 1023px){.exec-dashboard-aside{order:-1;position:static}.exec-kpi-row{grid-template-columns:1fr}}
