.functional-security-editor { padding: 1rem; background: #fff; color: #18304a; }
.functional-security-editor section { margin: .75rem 0; }
.functional-security-editor label { display: inline-flex; gap: .35rem; align-items: center; margin: .35rem; }
.functional-security-editor select, .functional-security-editor input[type=date] { padding: .4rem; }
.functional-security-editor details { border-left: 2px solid #d5e2ec; padding: .5rem .25rem .5rem .8rem; margin: .4rem 0; }
.functional-security-editor summary { cursor: pointer; font-weight: 600; }
.functional-security-editor small { font-weight: 400; color: #52657a; }
.functional-node-controls, .functional-toolbar { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; padding: .4rem 0; }
.functional-security-editor button { padding: .4rem .7rem; cursor: pointer; }
.functional-security-editor button:disabled { cursor: not-allowed; opacity: .55; }
.functional-security-editor button[aria-disabled=true] { cursor: wait; opacity: .65; }
.functional-editor-state { position: sticky; top: 0; z-index: 2; display: flex; flex-wrap: wrap; gap: .35rem 1rem; align-items: center; min-height: 2.5rem; padding: .5rem; background: #f3f7fb; border-bottom: 1px solid #d5e2ec; }
.functional-editor-state [data-dirty] { min-width: 12rem; }
.functional-editor-state > span { flex-basis: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.functional-editor-state [data-dirty=true] { color: #854500; }
.functional-role-conflict { margin-top: .65rem; padding: .75rem; border: 1px solid #e6ad55; border-radius: .5rem; background: #fff8e8; }
.functional-role-conflict[hidden] { display: none; }
.functional-role-table-wrap { max-height: 22rem; overflow: auto; border: 1px solid #d5e2ec; border-radius: .35rem; }
.functional-role-table { min-width: 42rem; }
.functional-role-table thead { position: sticky; top: 0; z-index: 1; background: #f3f7fb; }
.functional-role-table tr[data-selected="true"] { background: #f3f7fb; }
.functional-role-table td:nth-child(2) { width: 7rem; }
.functional-role-table td:nth-child(3), .functional-role-table td:nth-child(4) { width: 10rem; }
.functional-role-table input[type=date] { width: 100%; min-width: 9rem; box-sizing: border-box; }
.functional-active-context { display: flex; flex-wrap: wrap; gap: .35rem; align-items: baseline; }
.functional-context-summary tr[data-current="true"] { background: #edf5ff; }
.functional-master-sovereignty { margin: .7rem 0; border: 1px solid #5579a1; border-radius: .5rem; background: #edf5ff; color: #173c63; }
.functional-capability input[data-master-sovereignty="true"] { opacity: 1; accent-color: #245f99; }
.functional-context-summary { overflow-x: auto; border: 1px solid #d5e2ec; border-radius: .5rem; padding: .75rem; }
.functional-capability { display: flex !important; padding: .4rem; background: #fff8e8; }
.functional-security-editor pre { white-space: pre-wrap; max-height: 28rem; overflow: auto; border: 1px solid #ddd; padding: .8rem; }
.functional-security-editor [role=status] { white-space: pre-wrap; padding: .5rem; font-weight: 600; }
.functional-authority-denied { display: none !important; }
.functional-security-editor table { border-collapse: collapse; width: 100%; }
.functional-security-editor th, .functional-security-editor td { padding: .4rem; border-bottom: 1px solid #d5e2ec; text-align: left; }
.functional-access-summary { margin-top: 1rem; overflow-x: auto; }
.functional-access-summary details { margin: .5rem 0; padding-left: .75rem; border-left: 2px solid #d5e2ec; }
.functional-access-summary summary { cursor: pointer; padding: .5rem; font-weight: 600; }
.functional-access-summary table { width: 100%; border-collapse: collapse; }
.functional-access-summary th, .functional-access-summary td { padding: .5rem; border-bottom: 1px solid #d5e2ec; text-align: left; }
.functional-access-summary input[type=search] { display: block; width: min(100%, 36rem); padding: .5rem; margin: .5rem 0; }
.functional-inverse-filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .5rem; }
.functional-inverse-filters label { font-size: .82rem; font-weight: 600; }
.functional-inverse-filters input[type=search] { width: 100%; margin-top: .2rem; }
